I'm replacing the (stupid, I agree) "extra eyes" mutation with the more Crawlific "shaggy fur" mutation. It currently doesn't count towards the scales counter, but that could be changed. Also, maybe it could replace one of the scales with a similar AC bonus. Oh, and trolls start out with this at level 1 because I think it fits them.
Adding the percentage bonus (rarity 1) and penalty (rarity 9) for mana. Maybe the bonus (+10%, +20%, +30%) should be abolished entirely as David suggested; for now I've left it as a mutation pair.
As a third change I'm including the experimental sleepiness mutation that makes you randomly fall asleep. Being hit, loud noises and starving will make you wake up.
Again, may break mutations of existing save files.
To answer David's question on balancing (or rather, make everything more complicated, I'm afraid) I've counted mutations in 0.3 and as of this commit, to compare them.
Rarity influences the chance a mutation, once randomly chosen, will be considered acceptable, with a chance of rarity/10. Each round of trying to find an acceptable mutation there's a 1/1000 chance of just giving up. In brackets I will list the average probability of a good/bad mutation being chosen in a given round. (The difference to 100 is the chance of having to reroll.)
in 0.3: 46 good mutations of average rarity 3.2 (23.72%) 12 bad mutations of average rarity 8 (15.47%) 4 in-between mutations of average rarity 7 (4.51%) (56.3% chance of rerolling)
new: 48 good mutations of average rarity 3.1 (21.72%) 14 bad mutations of average rarity 7.6 (15.71%) 6 in-between mutations of average rarity 5 (4.41%) (58.16% chance of rerolling)
By in-between mutations I mean ones with advantages and drawbacks, namely weak_flexible, strong_stiff, horns, hooves, talons and paws. (The last four are probably seen as mostly negative by a lot of players due to losing an equipment slot.)
Because of the lower rarity of the new mutations (including drifting) the overall chance of not receiving a mutation has slightly increased (1/1000 chance per reroll necessary).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2640 c06c8d41-db1a-0410-9941-cceddc491573
FBK5ECMQ6HJSQSN7C3DICKJIRJ3CSO3CHCQ3ONPBKLLSHDGPBQ7QC
V3GWLMX6JL3YOYB427VLHPOTGHGWZK64HI6LLUU4X6CFMD2MEQMQC
5S3CAGZSAQC3CYFPM5TQFPHW5IE2OZRVFJMICQZXHBZRGKFMNPRQC
FCZSQBKDNMJZRJS2LWQQWLUFGOXSKXDJZQIHC7L5S7HXCXQPOMMAC
7CMQLE4XIFMWDEUZAOKIKDW7BHAJCK5S26APMEZ6TEFEH63TEZ6AC
6WA4OTA6JU7CZHYOYLSSXJLGWKVFD6GMTN6OL4LLFYAV2UTQYWYQC
5HBRQ2QZTFBQE2Z2CFADUI2D52LO5Z5CNHXHA7BJP3LGO7FJPUCQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
SJOTTUZMA3UTGT5D6LKUTBDP2CZFXT24FB5IAWCUFHSHLLACM75QC
Z63Q4DA5J5TZAC5LN55UD4CLADUMU5Z73TGEVE2YUXCHIST2Y4QAC
JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC
LPW5S327G7WSDHNED5A2UB72HVH27YYNFZGBYWUW5XSV7U4HPNQAC
LIBWXPN6HLJAIGEFJYLOL4HLIUD236U3WM5QPHIZ3DSB4CCUJERAC
MLZSEZWNNZMSIDQNAAIOJJR4K7VSVJICL5SAGHD3ROM7SYDVZABAC
XD27UUFYG5CXSQMTO5TMCAND5QUDNGLNGZFNISRFWCNO7R2ODAPQC
3UDBQWJX7TIIV3WJWCOIETL7NYQ4GPEU5SUXA247SUZXNEAQQMBQC
ZCRK2DJ5VKECRQXZTWT4NUDL2VT5ZHUK7NT6NQPLRJ56TDX5PJSAC
AQ36MO7VNGSGQ5KK7JCQA2WEHUELAFLSU2QBUWROVJFOTPMGFGMQC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
4BSWRAIA7TLRFRZ4RMLOVDHWDWBGJCAQZUOPXPJYW6OJY6B3HPLQC
3FBKOX4Y5QYPMBOCSAMHNZXCY7Z75YDQDL4EJZHZIGDXL7RMZ7TAC
JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC
text += info;
have_any = true;
break;
case MUT_LOW_MAGIC:
if (have_any)
text += ", ";
snprintf(info, INFO_SIZE, "-%d%% mp", level*10);
text += info;
have_any = true;
break;
case MUT_HIGH_MAGIC:
if (have_any)
text += ", ";
snprintf(info, INFO_SIZE, "+%d mp%%", level*10);
text += info;
have_any = true;
break;
case MUT_DRIFTING:
if (have_any)
text += ", ";
snprintf(info, INFO_SIZE, "drifting %d", level);
{"You have a third eye on your forehead.",
"You have two additional eyes on your forehead.",
"You have three additional eyes on your forehead."},
{"You are covered in fur.",
"You are covered in thick fur.",
"Your thick and shaggy fur keeps you warm."},
{"You have an increased reservoir of magic (+10 percent mp).",
"You have an strongly increased reservoir of magic (+20 percent mp).",
"You have an extremely increased reservoir of magic (+30 percent mp)."},
{"Your magical capacity is low (-10 percent mp).",
"Your magical capacity is very low (-20 percent mp).",
"Your magical capacity is extremy low (-30 percent mp)."},
{"You sprout an extra eye.",
"You sprout another eye.",
"You sprout another eye."},
{"Fur sprouts all over your body.",
"Your fur grows into a thick mane.",
"Your thick fur grows shaggy and warm."},
{"You feel more energetic.", "You feel more energetic.",
"You feel more energetic."},
{"Your extra eye disappears.",
"One of your extra eyes disappears.",
"One of your extra eyes disappears."},
{"You shed all your fur.",
"Your thick fur recedes somewhat.",
"Your shaggy fur recedes somewhat."},
{"You feel less energetic.", "You feel less energetic.",
"You feel less energetic."},
{"", "", ""},
{"", "", ""},
{"", "", ""},
{"You feel more energetic.", "You feel more energetic.",
"You feel more energetic."},
{"You feel wide awake.", "You feel more awake.", "You feel more awake."},
case MUT_LOW_MAGIC:
if (you.mutation[MUT_HIGH_MAGIC] > 0)
{
delete_mutation(MUT_HIGH_MAGIC);
return true;
}
mpr(gain_mutation[mutat][you.mutation[mutat]], MSGCH_MUTATION);
you.mutation[mutat]++;
calc_mp();
/* special-case check */
take_note(Note(NOTE_GET_MUTATION, mutat, you.mutation[mutat]));
return true;
case MUT_HIGH_MAGIC:
if (you.mutation[MUT_LOW_MAGIC] > 0)
{
delete_mutation(MUT_LOW_MAGIC);
return true;
}
mpr(gain_mutation[mutat][you.mutation[mutat]], MSGCH_MUTATION);
you.mutation[mutat]++;
calc_mp();
/* special-case check */
take_note(Note(NOTE_GET_MUTATION, mutat, you.mutation[mutat]));
return true;