git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2132 c06c8d41-db1a-0410-9941-cceddc491573
OVM7ZULJJ6Q23AQ747AWBGISGDQYCGF2NT5YTXKW633I56WIYZPQC
UWMN4HLG6YA2YFQEVIVMDISD6APKEPIZXMMPMNUYCBQDSAUYSXPQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
XHNJ2W4AQHIF32P2ENIMMDLWAIFWP442KJIZC6RKS4HBJNZIHHBAC
XHFG7QUF4UF7OYU7KWT2EB6XITI2BZDHH2D2FD7YP33C3M4GRBKQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC
NJ66DHOK2SWT6MWW5FIWHKZE3HHMFNCBBUYLDJGZGCH3B752OBYQC
LABXKXWWQY2V4FUDLGVTDYHXINAP6KRHZDHBQ2FE22FFOEIZPL6QC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
KFWZ6CK4MZRLZN7YCZV32OAJBB5XVEJQR6SR474UQX2MJGXI4F7AC
5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC
}
// Determines if a species is valid. If 'display' is true, returns if
// the species is displayable in the new game screen - this is
// primarily used to suppress the display of the draconian variants.
static bool is_species_valid_choice(species_type species, bool display = true)
{
return (species
&& species != NUM_SPECIES
&& species != SP_UNKNOWN
&& !((display?
(species > SP_RED_DRACONIAN
&& species <= SP_BASE_DRACONIAN)
: (species >= SP_UNK0_DRACONIAN
&& species <= SP_BASE_DRACONIAN))
|| species == SP_ELF
|| species == SP_HILL_DWARF));
}
static species_type random_species()
{
species_type sp = SP_UNKNOWN;
do
sp = static_cast<species_type>( random2(NUM_SPECIES) );
while (!is_species_valid_choice(sp));
return (sp);
if ( keyn < 'a' || keyn > 'y' )
return SP_UNKNOWN;
const int offset = keyn - 'a';
const int offset = letter_to_index(keyn);
if (index < 0)
return (SP_UNKNOWN);
keyn = 'a' + random2(26);
while (you.char_class != JOB_UNKNOWN &&
!class_allowed(letter_to_species(keyn), you.char_class));
keyn = species_to_letter(random_species());
while (!is_species_valid_choice(letter_to_species(keyn), false)
|| (you.char_class != JOB_UNKNOWN &&
!class_allowed(letter_to_species(keyn), you.char_class)));