git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2425 c06c8d41-db1a-0410-9941-cceddc491573
AQ36MO7VNGSGQ5KK7JCQA2WEHUELAFLSU2QBUWROVJFOTPMGFGMQC
EEYHYRJXQKQZZ5PGEV5OCUJHCEPCHBECIPAD5QY4UMZUI5LLSVGAC
NR7PW3FTNYTZEM7RSWVNMWB5NQHRDMMY3TB6L5II5VCW76OAMT6QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
AO7VKBS75RKHQDP3KYUVNMCE562K7NMVO2W3YXH7D5DKMKGO5GOQC
PGTE3JC4J5U536IJTCJFXTUOSRE73JXZJINWAGCANOQOCGC7J6AAC
P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
CMNLYUECIMEZSOYG4KOSINOPER5OM7PPCGIHCM7LQVWEO77XFUYQC
WLX2RQMMOMP2PYPAGJRM4VFD2WTLJTOAZZPPY3MV76FU2EGEJ54QC
#endif
"You cover the ground very slowly.", // 10*14/10 = 14
"You cover the ground rather slowly.", // 8*14/10 = 11
"You cover the ground rather quickly.", // 7*14/10 = 9
"You cover the ground quickly." // 6*14/10 = 8
"You cover ground very slowly.", // 10*14/10 = 14
"You cover ground rather slowly.", // 8*14/10 = 11
"You cover ground rather quickly.", // 7*14/10 = 9
"You cover ground quickly." // 6*14/10 = 8
/*
Chance out of 10 that mutation will be given/removed randomly. 0 means never.
*/
const char mutation_rarity[] = {
10, // tough skin
8, // str
8, // int
8, // dex
2, // gr scales
1, // bl scales
2, // grey scales
1, // bone
1, // repuls field
4, // res poison
static const mutation_def mutation_defs[] = {
{ MUT_TOUGH_SKIN, 10, 3 },
{ MUT_STRONG, 8, 14 },
{ MUT_CLEVER, 8, 14 },
{ MUT_AGILE, 8, 14 },
{ MUT_GREEN_SCALES, 2, 3 },
{ MUT_BLACK_SCALES, 1, 3 },
{ MUT_GREY_SCALES, 2, 3 },
{ MUT_BONEY_PLATES, 1, 3 },
{ MUT_REPULSION_FIELD, 1, 3 },
{ MUT_POISON_RESISTANCE, 4, 1 },
5, // carn
5, // herb
4, // res fire
4, // res cold
2, // res elec
3, // regen
10, // fast meta
7, // slow meta
10, // abil loss
10, // ""
{ MUT_CARNIVOROUS, 5, 3 },
{ MUT_HERBIVOROUS, 5, 3 },
{ MUT_HEAT_RESISTANCE, 4, 3 },
{ MUT_COLD_RESISTANCE, 4, 3 },
{ MUT_SHOCK_RESISTANCE, 2, 1 },
{ MUT_REGENERATION, 3, 3 },
{ MUT_FAST_METABOLISM, 10, 3 },
{ MUT_SLOW_METABOLISM, 7, 3 },
{ MUT_WEAK, 10, 14 },
{ MUT_DOPEY, 10, 14 },
10, // ""
2, // tele control
3, // teleport
5, // res magic
1, // run
2, // see invis
8, // deformation
2, // teleport at will
8, // spit poison
3, // sense surr
{ MUT_CLUMSY, 10, 14 },
{ MUT_TELEPORT_CONTROL, 2, 1 },
{ MUT_TELEPORT, 3, 3 },
{ MUT_MAGIC_RESISTANCE, 5, 3 },
{ MUT_FAST, 1, 3 },
{ MUT_ACUTE_VISION, 2, 1 },
{ MUT_DEFORMED, 8, 3 },
{ MUT_TELEPORT_AT_WILL, 2, 3 },
{ MUT_SPIT_POISON, 8, 3 },
{ MUT_MAPPING, 3, 3 },
4, // breathe fire
3, // blink
7, // horns
10, // strong/stiff muscles
10, // weak/loose muscles
6, // forgetfulness
6, // clarity (as the amulet)
7, // berserk/temper
10, // deterioration
10, // blurred vision
{ MUT_BREATHE_FLAMES, 4, 3 },
{ MUT_BLINK, 3, 3 },
{ MUT_HORNS, 7, 3 },
{ MUT_STRONG_STIFF, 10, 3 },
{ MUT_FLEXIBLE_WEAK, 10, 3 },
{ MUT_LOST, 6, 3 },
{ MUT_CLARITY, 6, 1 },
{ MUT_BERSERK, 7, 3 },
{ MUT_DETERIORATION, 10, 3 },
{ MUT_BLURRY_VISION, 10, 3 },
0,
0,
0,
0,
0,
0,
0,
{ MUT_TORMENT_RESISTANCE, 0, 1 },
{ MUT_NEGATIVE_ENERGY_RESISTANCE, 0, 3 },
{ MUT_SUMMON_MINOR_DEMONS, 0, 1 },
{ MUT_SUMMON_DEMONS, 0, 1 },
{ MUT_HURL_HELLFIRE, 0, 1 },
{ MUT_CALL_TORMENT, 0, 1 },
{ MUT_RAISE_DEAD, 0, 1 },
0,
0,
0,
0,
0,
0,
0,
0,
2, //jmf: claws
1, //jmf: hooves
{ MUT_CONTROL_DEMONS, 0, 1 },
{ MUT_PANDEMONIUM, 0, 1 },
{ MUT_DEATH_STRENGTH, 0, 1 },
{ MUT_CHANNEL_HELL, 0, 1 },
{ MUT_DRAIN_LIFE, 0, 1 },
{ MUT_THROW_FLAMES, 0, 1 },
{ MUT_THROW_FROST, 0, 1 },
{ MUT_SMITE, 0, 1 },
{ MUT_CLAWS, 2, 3 },
{ MUT_HOOVES, 1, 1 },
1, // fangs
0,
0,
0,
0,
0,
0,
0,
0,
0,
{ MUT_FANGS, 1, 3 },
{ MUT_BREATHE_POISON, 0, 1 },
{ MUT_STINGER, 0, 3 },
{ MUT_BIG_WINGS, 0, 3 },
{ MUT_BLUE_MARKS, 0, 3 },
{ MUT_GREEN_MARKS, 0, 3 },
// Four placeholders:
{ RANDOM_MUTATION, 0, 3 },
{ RANDOM_MUTATION, 0, 3 },
{ RANDOM_MUTATION, 0, 3 },
{ RANDOM_MUTATION, 0, 3 },
2, // red scales
1, // nac scales
2, // r-grey scales
1, // metal scales
2, // black scales
2, // wh scales
2, // yel scales
2, // brown scales
2, // blue scales
2, // purple scales
{ MUT_RED_SCALES, 2, 3 },
{ MUT_NACREOUS_SCALES, 1, 3 },
{ MUT_GREY2_SCALES, 2, 3 },
{ MUT_METALLIC_SCALES, 1, 3 },
{ MUT_BLACK2_SCALES, 2, 3 },
{ MUT_WHITE_SCALES, 2, 3 },
{ MUT_YELLOW_SCALES, 2, 3 },
{ MUT_BROWN_SCALES, 2, 3 },
{ MUT_BLUE_SCALES, 2, 3 },
{ MUT_PURPLE_SCALES, 2, 3 },
2, // speckled scales
2, // orange scales
2, // indigo scales
1, // kn red scales
1, // irid scales
1, // pattern scales
0, //
0, //
0, //
0 //
{ MUT_SPECKLED_SCALES, 2, 3 },
{ MUT_ORANGE_SCALES, 2, 3 },
{ MUT_INDIGO_SCALES, 2, 3 },
{ MUT_RED2_SCALES, 1, 3 },
{ MUT_IRIDESCENT_SCALES, 1, 3 },
{ MUT_PATTERNED_SCALES, 1, 3 },
#ifdef DEBUG_DIAGNOSTICS
void sanity_check_mutation_defs()
{
ASSERT(ARRAYSIZE(mutation_defs) == NUM_MUTATIONS);
for (unsigned i = 0; i < ARRAYSIZE(mutation_defs); ++i)
{
const mutation_def &mdef(mutation_defs[i]);
ASSERT(mdef.mutation == static_cast<mutation_type>(i)
|| mdef.mutation == RANDOM_MUTATION);
}
}
#endif
int limit = 3;
if ( mutat == MUT_STRONG || mutat == MUT_CLEVER ||
mutat == MUT_AGILE || mutat == MUT_WEAK ||
mutat == MUT_DOPEY || mutat == MUT_CLUMSY )
limit = 14;
if ( you.mutation[mutat] >= limit )
if ( you.mutation[mutat] >= mutation_defs[mutat].levels )