git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1650 c06c8d41-db1a-0410-9941-cceddc491573
NJ66DHOK2SWT6MWW5FIWHKZE3HHMFNCBBUYLDJGZGCH3B752OBYQC
355HO2F6CLJGKAPTBSGTDZK4YTCDKBS57B2TBUWIXQJ5A4UYRPAQC
LABXKXWWQY2V4FUDLGVTDYHXINAP6KRHZDHBQ2FE22FFOEIZPL6QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
6LT6USGJOTDMRJGXLAN2NSZXK2GKWEXDKKUV6SVV7ZC6WI6EKMDQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
{ // SP_ELF (2)
120, // SK_FIGHTING
80, // SK_SHORT_BLADES
80, // SK_LONG_SWORDS
110, // SK_UNUSED_1
120, // SK_AXES
130, // SK_MACES_FLAILS
130, // SK_POLEARMS
100, // SK_STAVES
120, // SK_SLINGS
60, // SK_BOWS
100, // SK_CROSSBOWS
90, // SK_DARTS
80, // SK_RANGED_COMBAT
120, // SK_ARMOUR
80, // SK_DODGING
80, // SK_STEALTH
100, // SK_STABBING
120, // SK_SHIELDS
100, // SK_TRAPS_DOORS
110, // SK_UNARMED_COMBAT
100, // undefined
100, // undefined
100, // undefined
100, // undefined
100, // undefined
(80 * 130) / 100, // SK_SPELLCASTING
105, // SK_CONJURATIONS
70, // SK_ENCHANTMENTS
100, // SK_SUMMONINGS
120, // SK_NECROMANCY
100, // SK_TRANSLOCATIONS
100, // SK_TRANSMIGRATION
100, // SK_DIVINATIONS
100, // SK_FIRE_MAGIC
100, // SK_ICE_MAGIC
70, // SK_AIR_MAGIC
130, // SK_EARTH_MAGIC
110, // SK_POISON_MAGIC
(100 * 75) / 100, // SK_INVOCATIONS
(80 * 75) / 100, // SK_EVOCATIONS
},
switch (keyn)
{
case 'a':
return SP_HUMAN;
case 'b':
return SP_ELF;
case 'c':
return SP_HIGH_ELF;
case 'd':
return SP_GREY_ELF;
case 'e':
return SP_DEEP_ELF;
case 'f':
return SP_SLUDGE_ELF;
case 'g':
return SP_HILL_DWARF;
case 'h':
return SP_MOUNTAIN_DWARF;
case 'i':
return SP_HALFLING;
case 'j':
return SP_HILL_ORC;
case 'k':
return SP_KOBOLD;
case 'l':
return SP_MUMMY;
case 'm':
return SP_NAGA;
case 'n':
return SP_GNOME;
case 'o':
return SP_OGRE;
case 'p':
return SP_TROLL;
case 'q':
return SP_OGRE_MAGE;
case 'r': // draconian
return static_cast<species_type>(SP_RED_DRACONIAN + random2(9));
case 's':
return SP_CENTAUR;
case 't':
return SP_DEMIGOD;
case 'u':
return SP_SPRIGGAN;
case 'v':
return SP_MINOTAUR;
case 'w':
return SP_DEMONSPAWN;
case 'x':
return SP_GHOUL;
case 'y':
return SP_KENKU;
case 'z':
return SP_MERFOLK;
default:
if ( keyn < 'a' || keyn > 'z' )
}
const int offset = keyn - 'a';
int rc;
if ( offset + SP_HUMAN < SP_RED_DRACONIAN )
rc = offset + SP_HUMAN;
else if ( offset + SP_HUMAN == SP_RED_DRACONIAN ) // random draco
rc = SP_RED_DRACONIAN + random2(9);
else // skip over draconian species
rc = offset + (SP_BASE_DRACONIAN - SP_RED_DRACONIAN) + 1;
return static_cast<species_type>(rc);