mutations only apply at these hunger levels, too.
Differentiated mutations into physical (affecting a character's appearance and stuff: scales, hooves, wings, …) and internal (resistances etc.). I guess this is what people usually refer to as "cosmetic", which I think is an inaccurate description since it makes it sound like they were completely superficial and had no real effect.
Here's a list of arbitrarily chosen "physical" mutations:
Mutations currently not applying are still listed on the 'A' screen, though in darkgrey and in (brackets).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4246 c06c8d41-db1a-0410-9941-cceddc491573
3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC
FFML2ORNAXZP6JIAJY2B3NED2XY5GK7ILRG2NWHSSK4OTCJA4YVQC
V3XKQWA475RYTIPXE6DXCNGUPYEQX4MVKGFMFMF6RIP5NKIZPHLAC
O6O7MA4QSG2QN35CL2HWEGSIFBOSXNAKFYFUAWHBKTRKZC6EK4XAC
NTCZQW5GWRWYYLPJNC6GMAD527KMSPIJTAJK4Q2N3M3B7MYY5MNQC
PFFMHGU3JVWF2MOGQZO6BXBWSO4RDQXC3OJJCNWW2Z2TI6H2LSCAC
SLI7H36NM34AN7DGGLKPVOBLIB6LUDUYCQROOWW6EHFTXAD6GTWQC
3WAR2UAC4C4D2GOK4AUV4JITGFSBO3NIBAXGQZXSMFUTNTCLTU4AC
4J3E7OBDPROOOS2OUPPLV3KVM2P26QQLHQ53BOLY5E3DQD4TPVWQC
IKB5DMEWTYCKBM5453YWYZ5G72XSZAPH4XNVPYALHJFHVVBR54NAC
6YMXFO4BZAMBWHSVWS2FTO2D7EGABBK4NPCSCAN4ELFHEYTWGXVAC
SK7ZZFNS55YHSM4HODJE5OOBIVSC55NHHHOVVZP6YTLM4GADIF5AC
PUFMMCAH4X5Z25VMUNTWJLRG4NSUGNK45WY4I7NJ2GQXBGBK6SAAC
RK3TWXHPC3PFCY6WRRWV7VYSREPWZZSXK3ROQLB3QMYIJ3BLPBOQC
GYRKOLZFYXWJTPEV35USSHCJNA6Y4XMDHSTEZWEBM57WQP2PT6UQC
YGLH2MKT4HM2RF4W6U33ANH7Z32MTWD6WNEL2AUD3B3AGFVJMQGQC
KBNY5FWKTEAKABFCLPC3QFKFSVZKAGXINPCIFV6WDSWFO4VCKNTAC
LDBTCT5WIPLJPZWXS2RUQ26QKISCUUTLO77M464WOE6VSYSNPKYAC
KCHX2F3JFEWOZT3WMJVZAAQUU2QSZ5Q7RDCD7WUJ7VE65J52JFUQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
FSD7GIK3YLZXWLEH37BU6KV3IUCFGXPQL6IZ7H65YWNRBEKDBX5AC
RC6L3CIBLJEH4GWRFD7UQNGI6PZT74FRUVOYHSAN2XCC74NZUASQC
CYYY4OASJTLMNQPNC2H57XAHBRT7JYO6MDY3J5DX5PMWRYT7RRUQC
PSVRXDOZHL5MTPWU47RTZ3MJ2R4JQQI6ATKYN2W3GIUNM5HRBYLAC
NRMSQFTORG3GC7HQBIN5DHB5GLWXM6IQO6PTXD4C7LBQWJIHYIGAC
CSRWDG2SUGS4YR4PAFI574EGEXW65P6JDT4ZHWDICS2G2GZIGEUQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC
22RFWMSJGG26Z2MQEEXGKVTFSTLREHQIG46WYOTMDRKI5YVMRNVAC
TJRYL3NXPW5IUGEV3YOC7JYWEXCZDBFPLT4AUG4P227WVKVB72ZAC
BOJPQUU6D4LHA2PGXUZBGTOW54G7ISKFXC4UQHLBSVAI7KQGYW6QC
AREBCIU2RU2RNHBWD4GARWEBKSL7HDFGDLII22H56OJO2AQUOMLQC
3SVWI6KK6IFQ6SB6L3TIC7QIGDITU5QLVAG5C7X57HH75ZHW7T2AC
7K5P2GRF6QUXTMERG2R3BB6DZFQYJQ6V2KNPMBPFDLOP36NQILPAC
IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC
NXVPOFYKJFWQWKVPQUMWH2Y2KJEZX44BUOBFJ4JD4KFGPEGYHG4QC
FBK5ECMQ6HJSQSN7C3DICKJIRJ3CSO3CHCQ3ONPBKLLSHDGPBQ7QC
4DEFHDNO2GUBYL4EGYEAR2IP3KBDXRU7UL7L4P7HEZY2UNR6IYJAC
DMLFJIPOE4ZXUFQ25VVEZCMURP2UPJBBWDGQS3DPQVUNVBBQ4GDQC
QVVC7AYGVA6U64PTNA7L27422NLMO327P22BQKXEVIMPZHIHO7MQC
TXVVUZNKI2O5YJXC2N4GPG3RJFNC6LSC5IJZKD5XLS4LGJHD2H7AC
6VWEOFSQULR4MFAPQATLUPHQVSOGB4LGSSTDWLRROFDC62TDW2VAC
X7X6JKZXOCG6NVLZLGNCQDFFXW4H3S77BVAJ5LS7ZHZ4GQVLMOMAC
P2YNOE2TUTZFAOBTHJOIVD6TCV7J7D2UKUX67LHZUL6QY44ZMENQC
BFCFMN2BXNLXJCYYCL2V2XTDQQNM3PJPSRB6CU76FM3332NC7GMAC
VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC
JE5K2LGM25NQQ3VIBZ25WJEQ4AJJVFLZWOH5RLNX66NVGQWI3YMQC
7CMQLE4XIFMWDEUZAOKIKDW7BHAJCK5S26APMEZ6TEFEH63TEZ6AC
UVJBHQ5KGUIEFRHKTYQPKSXYDUDKTRAXINUXGJJJ6QGNCR6JO7ZAC
M55DKMLPTAPYGJCNR45A25G6SMNZHDMLUV5AUKRCF2MZ4XQZ3SRQC
TFNFP2YQA4EOVE4VIXBEQSGACZSXHWIQ2T4TIPQ46R2MJW2C4B5AC
KBBSDMAXAGEDFMIVL6BSPMMSOBZKWPJTFCLBGCHRLE5DGTVAACSAC
7AMQN7MITMXBNVDAK5VOXTQ4TZIAOD6ZLOFJG7GQMBTY23Y2BKSAC
RB3ZDZXUZ3KVU5C4MFWTQB4J3PCQ5IQS4UVUBRS3TLSPFKBWNFDAC
WYNGGL55XFKKEY6NQBH7EKVIZZATLZ2MVPAMNM4Q3SVISGT3UEDAC
X6JLXMSRNWRGP2PVQYX6Z4OUZLDSSQ2VL3EQQM5Q427MXBMRILEQC
V3GWLMX6JL3YOYB427VLHPOTGHGWZK64HI6LLUU4X6CFMD2MEQMQC
ILO5P5FRDUY4SEQEXMTUDKOPXAUBJRSORHHUVTLLCYOYSXBXOVRAC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC
XEC3L6W6TGIRWHINULNLKCIP4UBMHFYE33WJL7272I2GRRCFZBWAC
Z63Q4DA5J5TZAC5LN55UD4CLADUMU5Z73TGEVE2YUXCHIST2Y4QAC
ZCRK2DJ5VKECRQXZTWT4NUDL2VT5ZHUK7NT6NQPLRJ56TDX5PJSAC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
MLZSEZWNNZMSIDQNAAIOJJR4K7VSVJICL5SAGHD3ROM7SYDVZABAC
43ZTEB57FU7KE5EVMYWZONNVJBZCGF3JEAJZIY25LC4LGE65PG5QC
YMC3RKF4Z7DOHZNGG7INC343SXCTWOPK7ISD42I3WA3AZZNVBGIAC
CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC
7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC
JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC
LIBWXPN6HLJAIGEFJYLOL4HLIUD236U3WM5QPHIZ3DSB4CCUJERAC
22QXEMVWB4WB7NRHBLXMRVAYNG36KKTJJABENPBRXYERXEYVBLFQC
ZQOWGHJR6A253WHSD75VXHTPXL3AQR7QF3FH6HMOA2AMRWF4YB4QC
YLQG4LJO36VGGVGMUWKVWM73HK76IVBK6GALSYIRCIIRY6SZRMIQC
F7Q7QRZACTDPP6KH3AB5J6B6B5PRVV4FURTOIGXHRHWNVSQT3TVAC
XD27UUFYG5CXSQMTO5TMCAND5QUDNGLNGZFNISRFWCNO7R2ODAPQC
TRCCLE5RJ4VJULBOWOI2WC3RJU7WTEGS7RRQTDQL6W5UU246LKTQC
EWFP6RFDHTEGD6SX36LYRLQB3APIKGAHNBKWPD56RGYBUE4FWJUQC
AQ36MO7VNGSGQ5KK7JCQA2WEHUELAFLSU2QBUWROVJFOTPMGFGMQC
PGTE3JC4J5U536IJTCJFXTUOSRE73JXZJINWAGCANOQOCGC7J6AAC
3UDBQWJX7TIIV3WJWCOIETL7NYQ4GPEU5SUXA247SUZXNEAQQMBQC
5FECCMAC5QKG3SJ4ATZFE2QF7I3A4YKWKCU4XQEW2P2SWZ2J33YQC
LMBMPQQHAC32RYZP65R3NUY43EAWI2FGPOZLG4G2UPEUVCT56Z3QC
POKKD4OOQZD4PMEITE5SNPXBNRJNNEJ5DJLRHF5PSF4G4MCYFM3AC
3BYA46OYLVN6ZPGAZD5OGIMMH5PRWGNSU3ITJRCVBE6P5HYYYAYQC
WF3F2I73VYD5BGLTUC3YWXZQ3CN2H2ZPBH2R7WJ5WQLHJSUYGU5QC
SIWYMIPYJIFTWSVO4PAVBZEXUYPUMHAUEO442J6YCYWAK3IOV5JQC
LABXKXWWQY2V4FUDLGVTDYHXINAP6KRHZDHBQ2FE22FFOEIZPL6QC
Z2KSBD2LWXDNFJPIIYS3GGXHBXQLTLDYGPAJY4T3LNNSOVT5ALZAC
AO7VKBS75RKHQDP3KYUVNMCE562K7NMVO2W3YXH7D5DKMKGO5GOQC
CMNLYUECIMEZSOYG4KOSINOPER5OM7PPCGIHCM7LQVWEO77XFUYQC
EEYHYRJXQKQZZ5PGEV5OCUJHCEPCHBECIPAD5QY4UMZUI5LLSVGAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
CAHE52HL2ZGRJPBYZ3DS4BVKUD2XC7N3SG25TGG7JGHGJDST4P3QC
2VOD7XONHR3G2JGZGXOPHNR2AN7WUQZFR5KJH5ZY4P4G67H3RCSQC
PDK36YVNNJ76LDXLK3NBHHLE47GZRVYGAXDY2FWLD5H7HR4Q6WRAC
6BCD3B7SZ4T2VPOGO562767LMFCVMKBAUMF4PQ7T5XNKSXVY7F6QC
CLIEHAE2PP7ZIGLLIMYCWM4FC54KBOAN5AILOLAZJ5S26GTJM4RQC
4BSWRAIA7TLRFRZ4RMLOVDHWDWBGJCAQZUOPXPJYW6OJY6B3HPLQC
LS5XCCGKQHSJQGWLWLGTP2F5OYWK4ND5AQQAGRN6H2HVBSXNCCZAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
YOSC3MX2F7VXOMQEIUQ5KH6L2KW3MI4AHU7TO5ZO32UB3TTQH77AC
MNYDF64QY6NHYKOAFOGBQJFYU7TZDILXRV23EXJPN4IZOCLSJ2AQC
RZLMIEOHITWGYNVBHDVVWS24YQ5SD5HG3T3JCMIBCD2VA5TEPHCQC
JCCPNQ53VSG5CX62GMJDSK527UAXZJ5LGI53ZPPQLZ3FZ4MCHTOAC
4UXFU3FZOCBSLDQ4S7MJKAE2H7VUHCNRDQMIY6NJ3PHYXWNGISDQC
G3HJCS277WA2VONPOJW6FAOQO7VHMSMLXZWYIXKFE4N4Y3OV7UZAC
5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC
NQIXUYGUIQTKZUB2IQDII7BBDMZ4VN4NUUTGT2ARQBZTDJUMPKRQC
AFE345BJ7IX2YYYX3I5I6RYLXNWJCFE4WMH6F5JMIR6X7WUP75CAC
GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC
RGWUYJO74FDGTH22CYSHBKFDGJ4S76WTLIULKPXA4QT5ZCNOB4LQC
Z6XF4AIERIW4U4AR3HU2ILYFZ54IK4K4ORQ6JKCEWRO5LZODWDDAC
Q4YYTFXYZUDBYWT37U354CJOAQMAAIWM5W72TAEGMEUKZIUZBMGAC
IKKMJHAWBTZFUVGXCLQZ46PV5RRAMNJGUWKPJTVXVMMWW5QGWPLAC
4QKMTZSWYJYJ46HW2TXO6KBPJV4NPBXA4T3ZRRRDYZSAA77ULVZQC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
SEXTAB43OKE5D5NNPNNPJXWR3CLJVRL7VSLMKDATDRLNX4FI3AFQC
652WD4FIJ7E2WV2M2RSIJXVKZULJHKMRMH7P3DKXLUX6WLEZLY3AC
IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
3KAINFIXO7WNWGUGZB43EUNFRS2ZPBLQZDTY456QACMRHYIJ7WDAC
V4C7C4NGWD34ZZHOT4V7FRYRC7ZZA2W6FSN3BO73IJBSVFCHQOCQC
YZXHBEKWQPY4BTKG5FFGLP3AIRBQSTKQVLJJHWKQEA3HTN4UHDYQC
G6WNKWA4GNUGNOH63AKXJQMQS2V4FGJ55CB4P2Z3MPSX3UPMVF6AC
M2HMYLYYXSP5XGX6MCI77IT6UW5K4YSEUJWHPQPYXVSW5L36BJ2AC
JK3HFJG76OOQHJMXJUSZRTR5CX5ZMS52LRVBLOR7E2NBI6PRSHHAC
CWTKS62IFZYYR3HGPDP5LW5C53CRWVAD6AAEOV4BSWNW52BCQH3QC
ST3CXDUDCT4LYUREVQE6YDKTGM3XZTSGGNCHWKMYJDQVZ2VSFYZQC
P3BAFR6LTI7HANQCRLZWJ7LRJYFPFYIG7OVZV4RZM5EAMODRJKZAC
KHHAE5ZK7ITEZVMMUKYROKECLE2RU5ZU5OQ4Z4XSRQXE2R65O67AC
NR7PW3FTNYTZEM7RSWVNMWB5NQHRDMMY3TB6L5II5VCW76OAMT6QC
Q3XHNSHW6FI4JCXSEABATRFBJPMCF7PXNG2K6ZQTRRPVMIZFHUBQC
7HMVMNBIRU5WDSIWYK6RX57E4LA35N3HLT7RPIAGCDLEKAEEDX2QC
H7KLIGBECC2SCGAIFPZFZ7P2TVDKR67HQ7AG5LXPP5SVNL7RWAHAC
2WVP47RBNL5OVYMAZH7TKRYD7F2TGSZ5X74PWVGAYCQP26G3JUHQC
R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC
6RJVKSL7RVZIZIZIC4TWIYJQ24RUSB346ODS3NYGDHUIRTC4Z5FQC
XCEZ7OA2INNPSYNAB5U6JB7XNDAD5BKU26YLFPPZ3SEESFZKADQAC
75M6AVUSS3G5EJECJJRB67V5UYDOIV26FZNB2FFCMBZ33EK7FVIQC
KQNIGKATHT4YSPJFPJGIGPD6VNR5B753SE2JN2LCXZZJNHCGY3DQC
HIRKGUMNJPWKSVTR6TVBPD3MWNA63CEHCLCIPWEMGDFHVB3NPLDQC
6UPCB64Z2W243QR3JQD7WPQMPVNVBPYRG7GTGZK6LTKKBBSKBHZQC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
2OQFLBVWCTXCWUPSDM76KNXTNC3YPAKRI5KLDAEU4KQLN4DEOLYQC
7BBEAPSUBQMBK4XC2Q6YJ2JPSVSPCSBJUYXM6EWXHNTQG4AEJX3QC
HC35ORPWMUNGV4G2TVNPID4ZDRNTWXE4U37LYT4QGSEQR2EXQJNAC
UFNXOEBCAUO3QMYOF6EXYILHZ44AXVMCOV76SFV3VV7DMVUPZWBAC
3FBKOX4Y5QYPMBOCSAMHNZXCY7Z75YDQDL4EJZHZIGDXL7RMZ7TAC
RM2JXW3ATVYRYHF3NMG5ALGI64OJ7IP2F3MDUDPUT5TBKSSN4KVQC
W52PCSHX72WAMWKG6L4BPUBVMO6E72KYYBNKAA7554KNOTY6V7WQC
BXYKBTK36VL22UA6PMF4Z3SCGZEUDBFDJPPLWC7CQTQC55NPTDEAC
CVONAX7DEKDLWPFR6SSOZRTKRDKVXGKURYU6SQAFGG4EGCUTDM5AC
LKLHWERPXMDTRNYPEXVDVB6PE7CT5PZ6WMNJJDTBBE5FBHOCEK5AC
ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC
EIJQB5HNBFGK6MQ7OOM6TC3BKONFXF3CIDM7HTL7VKE44ZM6ACJQC
67WH6I2XIMRRL26UM4FJJJZEMJIDPW5Q77FFNZGKWGTWS7GTCJ6QC
FCZSQBKDNMJZRJS2LWQQWLUFGOXSKXDJZQIHC7L5S7HXCXQPOMMAC
WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC
GZMPIDNMBXZ4B2ZWKREHBPAVN53J6WRVY5W5KY52KEBHKU6IW4IQC
FXVDNB6MAAOSEP37HP7CIPPXNS7FDECN3GCRMT5UFFCKLHIL6IVAC
KW43PGXTTM57DXUGGBQXJ5G5OYYIY3WB76TXIKL2ZCIJGH7GH4LAC
V4DWL5WBO2JCODVS5QQNWXDH4DAYZN3D5V3UDCHM2KKOMADOTEDQC
if (parts2[i] == 0 && (you.mutation[MUT_CLAWS] >= 3 ||
you.species == SP_TROLL || you.species == SP_GHOUL))
if (parts2[i] == 0 && (player_mutation_level(MUT_CLAWS) >= 3
|| you.species == SP_TROLL || you.species == SP_GHOUL))
ret += 3 * prop[ RAP_AC ] + 3 * prop[ RAP_EVASION ]
+ 3 * prop[ RAP_ACCURACY ] + 3 * prop[ RAP_DAMAGE ]
+ 6 * prop[ RAP_STRENGTH ] + 6 * prop[ RAP_INTELLIGENCE ]
ret += 3 * prop[ RAP_AC ] + 3 * prop[ RAP_EVASION ]
+ 3 * prop[ RAP_ACCURACY ] + 3 * prop[ RAP_DAMAGE ]
+ 6 * prop[ RAP_STRENGTH ] + 6 * prop[ RAP_INTELLIGENCE ]
&& (player_is_swimming() && you.species == SP_MERFOLK
|| you.mutation[MUT_HOOVES] || you.mutation[MUT_TALONS]))
&& ( player_is_swimming() && you.species == SP_MERFOLK
|| player_mutation_level(MUT_HOOVES)
|| player_mutation_level(MUT_TALONS) ))
return (you.mutation[MUT_TORMENT_RESISTANCE] ||
you.attribute[ATTR_TRANSFORMATION] == TRAN_LICH ||
you.species == SP_VAMPIRE && you.hunger_state == HS_STARVING);
return (player_mutation_level(MUT_TORMENT_RESISTANCE)
|| you.attribute[ATTR_TRANSFORMATION] == TRAN_LICH
|| you.species == SP_VAMPIRE && you.hunger_state == HS_STARVING);
if (you.mutation[MUT_FAST] > 0 &&
(!you.demon_pow[MUT_FAST] || !player_is_shapechanged()))
mv -= (you.mutation[MUT_FAST] + 1);
if (player_mutation_level(MUT_FAST) > 0
&& (!you.demon_pow[MUT_FAST] || !player_is_shapechanged()) )
{
mv -= (player_mutation_level(MUT_FAST) + 1);
}
AC += 100 * you.mutation[MUT_TOUGH_SKIN];
AC += 100 * you.mutation[MUT_GREY_SCALES];
AC += 100 * you.mutation[MUT_SPECKLED_SCALES];
AC += 100 * you.mutation[MUT_IRIDESCENT_SCALES];
AC += 100 * you.mutation[MUT_PATTERNED_SCALES];
AC += 100 * you.mutation[MUT_BLUE_SCALES];
AC += 100 * you.mutation[MUT_SHAGGY_FUR];
AC += 100 * player_mutation_level(MUT_TOUGH_SKIN);
AC += 100 * player_mutation_level(MUT_GREY_SCALES);
AC += 100 * player_mutation_level(MUT_SPECKLED_SCALES);
AC += 100 * player_mutation_level(MUT_IRIDESCENT_SCALES);
AC += 100 * player_mutation_level(MUT_PATTERNED_SCALES);
AC += 100 * player_mutation_level(MUT_BLUE_SCALES);
AC += 100 * player_mutation_level(MUT_SHAGGY_FUR);
if (you.mutation[MUT_GREEN_SCALES] > 0)
AC += (you.mutation[MUT_GREEN_SCALES] * 200) - 100;
if (you.mutation[MUT_NACREOUS_SCALES] > 0)
AC += (you.mutation[MUT_NACREOUS_SCALES] * 200) - 100;
if (you.mutation[MUT_BLACK2_SCALES] > 0)
AC += (you.mutation[MUT_BLACK2_SCALES] * 200) - 100;
if (you.mutation[MUT_WHITE_SCALES] > 0)
AC += (you.mutation[MUT_WHITE_SCALES] * 200) - 100;
if (player_mutation_level(MUT_GREEN_SCALES) > 0)
AC += (player_mutation_level(MUT_GREEN_SCALES) * 200) - 100;
if (player_mutation_level(MUT_NACREOUS_SCALES) > 0)
AC += (player_mutation_level(MUT_NACREOUS_SCALES) * 200) - 100;
if (player_mutation_level(MUT_BLACK2_SCALES) > 0)
AC += (player_mutation_level(MUT_BLACK2_SCALES) * 200) - 100;
if (player_mutation_level(MUT_WHITE_SCALES) > 0)
AC += (player_mutation_level(MUT_WHITE_SCALES) * 200) - 100;
AC += you.mutation[MUT_GREY2_SCALES] * 200;
AC += you.mutation[MUT_YELLOW_SCALES] * 200;
AC += you.mutation[MUT_PURPLE_SCALES] * 200;
AC += player_mutation_level(MUT_GREY2_SCALES) * 200;
AC += player_mutation_level(MUT_YELLOW_SCALES) * 200;
AC += player_mutation_level(MUT_PURPLE_SCALES) * 200;
result += you.mutation[MUT_STRONG] - you.mutation[MUT_WEAK];
result += you.mutation[MUT_STRONG_STIFF]-you.mutation[MUT_FLEXIBLE_WEAK];
result += player_mutation_level(MUT_STRONG)
- player_mutation_level(MUT_WEAK);
result += player_mutation_level(MUT_STRONG_STIFF)
- player_mutation_level(MUT_FLEXIBLE_WEAK);
result += you.mutation[MUT_AGILE] - you.mutation[MUT_CLUMSY];
result += you.mutation[MUT_FLEXIBLE_WEAK]-you.mutation[MUT_STRONG_STIFF];
result -= you.mutation[MUT_BLACK_SCALES];
result -= you.mutation[MUT_BONEY_PLATES];
result += player_mutation_level(MUT_AGILE)
- player_mutation_level(MUT_CLUMSY);
result += player_mutation_level(MUT_FLEXIBLE_WEAK)
- player_mutation_level(MUT_STRONG_STIFF);
result -= player_mutation_level(MUT_BLACK_SCALES);
result -= player_mutation_level(MUT_BONEY_PLATES);
result -= grey2_modifier[you.mutation[MUT_GREY2_SCALES]];
result -= metallic_modifier[you.mutation[MUT_METALLIC_SCALES]];
result -= yellow_modifier[you.mutation[MUT_YELLOW_SCALES]];
result -= red2_modifier[you.mutation[MUT_RED2_SCALES]];
result -= grey2_modifier[player_mutation_level(MUT_GREY2_SCALES)];
result -= metallic_modifier[player_mutation_level(MUT_METALLIC_SCALES)];
result -= yellow_modifier[player_mutation_level(MUT_YELLOW_SCALES)];
result -= red2_modifier[player_mutation_level(MUT_RED2_SCALES)];
first number = probability (0 means it doesn't appear naturally?)
second number = maximum levels */
first number = probability (0 means it doesn't appear naturally?)
second number = maximum levels
first boolean = is mutation mostly bad?
second boolean = is mutation physical, i.e. external only?
*/
{ MUT_TOUGH_SKIN, 10, 3, false },
{ MUT_STRONG, 8, 14, false },
{ MUT_CLEVER, 8, 14, false },
{ MUT_AGILE, 8, 14, false },
{ MUT_GREEN_SCALES, 2, 3, false },
{ MUT_BLACK_SCALES, 1, 3, false },
{ MUT_GREY_SCALES, 2, 3, false },
{ MUT_BONEY_PLATES, 1, 3, false },
{ MUT_REPULSION_FIELD, 1, 3, false },
{ MUT_POISON_RESISTANCE, 4, 1, false },
{ MUT_TOUGH_SKIN, 10, 3, false, true },
{ MUT_STRONG, 8, 14, false, true },
{ MUT_CLEVER, 8, 14, false, true },
{ MUT_AGILE, 8, 14, false, true },
{ MUT_GREEN_SCALES, 2, 3, false, true },
{ MUT_BLACK_SCALES, 1, 3, false, true },
{ MUT_GREY_SCALES, 2, 3, false, true },
{ MUT_BONEY_PLATES, 1, 3, false, true },
{ MUT_REPULSION_FIELD, 1, 3, false, false },
{ MUT_POISON_RESISTANCE, 4, 1, false, false },
{ MUT_CARNIVOROUS, 5, 3, false },
{ MUT_HERBIVOROUS, 5, 3, true },
{ MUT_HEAT_RESISTANCE, 4, 3, false },
{ MUT_COLD_RESISTANCE, 4, 3, false },
{ MUT_SHOCK_RESISTANCE, 2, 1, false },
{ MUT_REGENERATION, 3, 3, false },
{ MUT_FAST_METABOLISM, 10, 3, true },
{ MUT_SLOW_METABOLISM, 7, 3, false },
{ MUT_WEAK, 10, 14, true },
{ MUT_DOPEY, 10, 14, true },
{ MUT_CARNIVOROUS, 5, 3, false, false },
{ MUT_HERBIVOROUS, 5, 3, true, false },
{ MUT_HEAT_RESISTANCE, 4, 3, false, false },
{ MUT_COLD_RESISTANCE, 4, 3, false, false },
{ MUT_SHOCK_RESISTANCE, 2, 1, false, false },
{ MUT_REGENERATION, 3, 3, false, false },
{ MUT_FAST_METABOLISM, 10, 3, true, false },
{ MUT_SLOW_METABOLISM, 7, 3, false, false },
{ MUT_WEAK, 10, 14, true, true },
{ MUT_DOPEY, 10, 14, true, true },
{ MUT_CLUMSY, 10, 14, true },
{ MUT_TELEPORT_CONTROL, 2, 1, false },
{ MUT_TELEPORT, 3, 3, true },
{ MUT_MAGIC_RESISTANCE, 5, 3, false },
{ MUT_FAST, 1, 3, false },
{ MUT_ACUTE_VISION, 2, 1, false },
{ MUT_DEFORMED, 8, 3, true },
{ MUT_TELEPORT_AT_WILL, 2, 3, false },
{ MUT_SPIT_POISON, 8, 3, false },
{ MUT_MAPPING, 3, 3, false },
{ MUT_CLUMSY, 10, 14, true, true },
{ MUT_TELEPORT_CONTROL, 2, 1, false, false },
{ MUT_TELEPORT, 3, 3, true, false },
{ MUT_MAGIC_RESISTANCE, 5, 3, false, false },
{ MUT_FAST, 1, 3, false, false },
{ MUT_ACUTE_VISION, 2, 1, false, false },
{ MUT_DEFORMED, 8, 3, true, true },
{ MUT_TELEPORT_AT_WILL, 2, 3, false, false },
{ MUT_SPIT_POISON, 8, 3, false, false },
{ MUT_MAPPING, 3, 3, false, false },
{ MUT_BREATHE_FLAMES, 4, 3, false },
{ MUT_BLINK, 3, 3, false },
{ MUT_HORNS, 7, 3, false },
{ MUT_STRONG_STIFF, 10, 3, false },
{ MUT_FLEXIBLE_WEAK, 10, 3, false },
{ MUT_SCREAM, 6, 3, true },
{ MUT_CLARITY, 6, 1, false },
{ MUT_BERSERK, 7, 3, true },
{ MUT_DETERIORATION, 10, 3, true },
{ MUT_BLURRY_VISION, 10, 3, true },
{ MUT_BREATHE_FLAMES, 4, 3, false, false },
{ MUT_BLINK, 3, 3, false, false },
{ MUT_HORNS, 7, 3, false, true },
{ MUT_STRONG_STIFF, 10, 3, false, true },
{ MUT_FLEXIBLE_WEAK, 10, 3, false, true },
{ MUT_SCREAM, 6, 3, true, false },
{ MUT_CLARITY, 6, 1, false, false },
{ MUT_BERSERK, 7, 3, true, false },
{ MUT_DETERIORATION, 10, 3, true, false },
{ MUT_BLURRY_VISION, 10, 3, true, false },
{ MUT_MUTATION_RESISTANCE, 4, 3, false },
{ MUT_FRAIL, 10, 3, true },
{ MUT_ROBUST, 5, 3, false },
{ MUT_MUTATION_RESISTANCE, 4, 3, false, false },
{ MUT_FRAIL, 10, 3, true, true },
{ MUT_ROBUST, 5, 3, false, true },
{ MUT_TORMENT_RESISTANCE, 0, 1, false },
{ MUT_NEGATIVE_ENERGY_RESISTANCE, 0, 3, false },
{ MUT_SUMMON_MINOR_DEMONS, 0, 1, false },
{ MUT_SUMMON_DEMONS, 0, 1, false },
{ MUT_HURL_HELLFIRE, 0, 1, false },
{ MUT_CALL_TORMENT, 0, 1, false },
{ MUT_RAISE_DEAD, 0, 1, false },
{ MUT_TORMENT_RESISTANCE, 0, 1, false, false },
{ MUT_NEGATIVE_ENERGY_RESISTANCE, 0, 3, false, false },
{ MUT_SUMMON_MINOR_DEMONS, 0, 1, false, false },
{ MUT_SUMMON_DEMONS, 0, 1, false, false },
{ MUT_HURL_HELLFIRE, 0, 1, false, false },
{ MUT_CALL_TORMENT, 0, 1, false, false },
{ MUT_RAISE_DEAD, 0, 1, false, false },
{ MUT_CONTROL_DEMONS, 0, 1, false },
{ MUT_PANDEMONIUM, 0, 1, false },
{ MUT_DEATH_STRENGTH, 0, 1, false },
{ MUT_CHANNEL_HELL, 0, 1, false },
{ MUT_DRAIN_LIFE, 0, 1, false },
{ MUT_THROW_FLAMES, 0, 1, false },
{ MUT_THROW_FROST, 0, 1, false },
{ MUT_SMITE, 0, 1, false },
{ MUT_CONTROL_DEMONS, 0, 1, false, false },
{ MUT_PANDEMONIUM, 0, 1, false, false },
{ MUT_DEATH_STRENGTH, 0, 1, false, false },
{ MUT_CHANNEL_HELL, 0, 1, false, false },
{ MUT_DRAIN_LIFE, 0, 1, false, false },
{ MUT_THROW_FLAMES, 0, 1, false, false },
{ MUT_THROW_FROST, 0, 1, false, false },
{ MUT_SMITE, 0, 1, false, false },
{ MUT_BREATHE_POISON, 0, 1, false }, // Naga only
{ MUT_STINGER, 0, 3, false }, // Naga and Draconian only
{ MUT_BIG_WINGS, 0, 1, false }, // Draconian only
// Naga only
{ MUT_BREATHE_POISON, 0, 1, false, false },
// Naga and Draconian only
{ MUT_STINGER, 0, 3, false, true },
// Draconian only
{ MUT_BIG_WINGS, 0, 1, false, true },
{ MUT_BLUE_MARKS, 0, 3, false }, // used by evil gods to mark followers
{ MUT_GREEN_MARKS, 0, 3, false },
// used by evil gods to mark followers (currently UNUSED)
{ MUT_BLUE_MARKS, 0, 3, false, true },
{ MUT_GREEN_MARKS, 0, 3, false, true },
{ MUT_SHAGGY_FUR, 2, 3, false },
{ MUT_HIGH_MAGIC, 1, 3, false },
{ MUT_SHAGGY_FUR, 2, 3, false, true },
{ MUT_HIGH_MAGIC, 1, 3, false, false },
{ MUT_LOW_MAGIC, 9, 3, true },
{ RANDOM_MUTATION, 0, 3, false },
{ RANDOM_MUTATION, 0, 3, false },
{ RANDOM_MUTATION, 0, 3, false },
{ RANDOM_MUTATION, 0, 3, false },
{ MUT_LOW_MAGIC, 9, 3, true, false },
{ RANDOM_MUTATION, 0, 3, false, false },
{ RANDOM_MUTATION, 0, 3, false, false },
{ RANDOM_MUTATION, 0, 3, false, false },
{ RANDOM_MUTATION, 0, 3, false, false },
{ MUT_RED_SCALES, 2, 3, false },
{ MUT_NACREOUS_SCALES, 1, 3, false },
{ MUT_GREY2_SCALES, 2, 3, false },
{ MUT_METALLIC_SCALES, 1, 3, false },
{ MUT_BLACK2_SCALES, 2, 3, false },
{ MUT_WHITE_SCALES, 2, 3, false },
{ MUT_YELLOW_SCALES, 2, 3, false },
{ MUT_BROWN_SCALES, 2, 3, false },
{ MUT_BLUE_SCALES, 2, 3, false },
{ MUT_PURPLE_SCALES, 2, 3, false },
{ MUT_RED_SCALES, 2, 3, false, true },
{ MUT_NACREOUS_SCALES, 1, 3, false, true },
{ MUT_GREY2_SCALES, 2, 3, false, true },
{ MUT_METALLIC_SCALES, 1, 3, false, true },
{ MUT_BLACK2_SCALES, 2, 3, false, true },
{ MUT_WHITE_SCALES, 2, 3, false, true },
{ MUT_YELLOW_SCALES, 2, 3, false, true },
{ MUT_BROWN_SCALES, 2, 3, false, true },
{ MUT_BLUE_SCALES, 2, 3, false, true },
{ MUT_PURPLE_SCALES, 2, 3, false, true },
{ MUT_SPECKLED_SCALES, 2, 3, false },
{ MUT_ORANGE_SCALES, 2, 3, false },
{ MUT_INDIGO_SCALES, 2, 3, false },
{ MUT_RED2_SCALES, 1, 3, false },
{ MUT_IRIDESCENT_SCALES, 1, 3, false },
{ MUT_PATTERNED_SCALES, 1, 3, false }
{ MUT_SPECKLED_SCALES, 2, 3, false, true },
{ MUT_ORANGE_SCALES, 2, 3, false, true },
{ MUT_INDIGO_SCALES, 2, 3, false, true },
{ MUT_RED2_SCALES, 1, 3, false, true },
{ MUT_IRIDESCENT_SCALES, 1, 3, false, true },
{ MUT_PATTERNED_SCALES, 1, 3, false, true }
|| you.mutation[MUT_MUTATION_RESISTANCE] == 3
|| you.mutation[MUT_MUTATION_RESISTANCE] && !one_chance_in(3))
|| player_mutation_level(MUT_MUTATION_RESISTANCE) == 3
|| player_mutation_level(MUT_MUTATION_RESISTANCE)
&& !one_chance_in(3))
else if (you.mutation[mutat] >= 3 &&
mutat != MUT_STRONG && mutat != MUT_CLEVER &&
mutat != MUT_AGILE && mutat != MUT_WEAK &&
mutat != MUT_DOPEY && mutat != MUT_CLUMSY)
else if (you.mutation[mutat] >= 3
&& mutat != MUT_STRONG && mutat != MUT_CLEVER
&& mutat != MUT_AGILE && mutat != MUT_WEAK
&& mutat != MUT_DOPEY && mutat != MUT_CLUMSY)
|| (mutat >= MUT_GREEN_SCALES && mutat <= MUT_BONEY_PLATES)
|| (mutat >= MUT_RED_SCALES && mutat <= MUT_PATTERNED_SCALES))
&& body_covered() >= 3 && !force_mutation)
|| mutat >= MUT_GREEN_SCALES && mutat <= MUT_BONEY_PLATES
|| mutat >= MUT_RED_SCALES && mutat <= MUT_PATTERNED_SCALES)
&& body_covered() >= 3 && !force_mutation)
// currently only takes one turn to eat (except ghouls and chunks)...
// if this changes then those items will have to have special code
// (like ghoul chunks) to guarantee that the special thing is only
// currently only takes one turn to eat (except ghouls and chunks)...
// if this changes then those items will have to have special code
// (like ghoul chunks) to guarantee that the special thing is only
// Some convenient functions to hide the bit operations and create
// an interface layer between the code and the data in case this
// Some convenient functions to hide the bit operations and create
// an interface layer between the code and the data in case this
// Currently assuming amulets are always wearable (only needs
// to be held over head or heart... giants can strap it on with
// a bit of binder twine). However, rings need to actually fit
// Currently assuming amulets are always wearable (only needs
// to be held over head or heart... giants can strap it on with
// a bit of binder twine). However, rings need to actually fit
|| player_genus(GENPC_DRACONIAN)
|| (you.species == SP_MERFOLK && player_is_swimming())
|| you.mutation[ MUT_STINGER ])
|| player_genus(GENPC_DRACONIAN)
|| (you.species == SP_MERFOLK && player_is_swimming())
|| player_mutation_level( MUT_STINGER ))
you.mutation[MUT_BERSERK] * 25 +
(wearing_amulet( AMU_RAGE ) ? 10 : 0) +
(player_has_spell( SPELL_BERSERKER_RAGE ) ? 5 : 0);
player_mutation_level(MUT_BERSERK) * 25
+ (wearing_amulet( AMU_RAGE ) ? 10 : 0)
+ (player_has_spell( SPELL_BERSERKER_RAGE ) ? 5 : 0);
else if (player_genus(GENPC_DRACONIAN) && you.mutation[MUT_BIG_WINGS])
else if (player_genus(GENPC_DRACONIAN)
&& player_mutation_level(MUT_BIG_WINGS))
{