Transmigrations, but let them only cast them while full or more.
(Once satiated is reached, they automatically time out.)
Bug 1941885: Don't give vampires nutrition from quaffing non-blood potions.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4235 c06c8d41-db1a-0410-9941-cceddc491573
JCWJWGMQIKQGSSFJUQRKNIWW3HBOJSHYDTOPPE5BWOJTIJTDYUTAC DIL5CIV3FGFPRSMRAGDDOHBJ2MBIOEZNMDDTJ4MYI7CU6BYAFVUAC HH7B5SORPUW74EC3V2ZVZTMDH7UXG2FLAELXUQII4TNGGHDLPETAC EB2ECXZ3EQ6L2ZY42KLQV4QPE4YCNYENXFGUM7EDTCWC2LDZJYCAC NZ3NCJMU7VE2C5OHIMHBLSSUWPXYI5RURKED4IHO2QUUAGPGUR5AC MIMVAKQXKJMHYLKXKY2TJEBL4HCOHKLDQYX6J5H4MWCI442NWEHAC XIVK73TDPJKGRQ2EHPNUERDI5JIYTYAPSCVKXROD36BIHFE3WNQQC GKA3ZGZ2P6F22FDNSYNQDMCS3N7HNZD5QCOSQ6VJRAU2K5U4YYTQC VDMADGWYGYZJWAEWU3WE7UCPVDS2O6HOHCXLOML64U5UCH4FER3AC JE5K2LGM25NQQ3VIBZ25WJEQ4AJJVFLZWOH5RLNX66NVGQWI3YMQC VOXLOCDUHOAFIKRTSISYMOA2QFY3TSHQGR7BKGGQ2VZ5BUUKUQYAC M2HMYLYYXSP5XGX6MCI77IT6UW5K4YSEUJWHPQPYXVSW5L36BJ2AC 2WVP47RBNL5OVYMAZH7TKRYD7F2TGSZ5X74PWVGAYCQP26G3JUHQC B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC J7KCPTGASQNRAKVKQ5FCXZ75E75PK7I2BB6MFSI3COWU6HRKTWSAC CLIEHAE2PP7ZIGLLIMYCWM4FC54KBOAN5AILOLAZJ5S26GTJM4RQC BZMLXBTB63CXPZZPFXM4VLE7IBXPBEZ6YLM4MSNQGJR4L5IBM3OAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC 3BJ2OOF4F524G6UKVGOZVT6W3FSTSHHTKRJADUBZCHDXZWV3KANQC 4EZVKDQA5GM3QDTNTCKEKGH4F6LGAYNLBT756PXODKZ2B7C4ZVHAC HVNEDQRIUCCAUXUYVAGIUUKPUPU6JFA2PJ5LHPMIBICCCAAVVJEQC EEZCC5GUYHETFQV4KSZJSJ6BTTWZHKS7RXQ25XQ6ODGKLDD4XFRAC GSS3OCYMI4MYKACCGNLFA267VDH2U7G4QVVDLMOVAUHZTYQ3QJDAC FCL7KOWXA5O3GLMDR22JCGMTHMZ57C4WQIJKBIIUQV3LI2CI3X7AC DWQDVEHZSTDVFS2GU24ZLIGJDA3M4767TB734JAQEAUVOOCLZ75AC UZ6N6HOUPGVSPC5NQROEEDWMEGJA5XUWUY2AKH5QG65AZ25PVXDAC TFNFP2YQA4EOVE4VIXBEQSGACZSXHWIQ2T4TIPQ46R2MJW2C4B5AC DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC KOSAQXB3KF6VAYTG2TOTHGJBB3F7AL6O32EMCXPVZJ5WHQX6XR5AC NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC WG6O475IOLZFMUQSLVR2KHM7XTBF5HH276L2KDGF7UOSESDOAILQC EAAACIJUVSBDOB6S73O4NFSMRDLFLQTFO7SXWWALGMVDZTQTHQBQC TV3ZC6WOZKSQQJQN26JIVKCHK6UK7WMDBYZDUYRWEAZ4JB4YVNAAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC AREBCIU2RU2RNHBWD4GARWEBKSL7HDFGDLII22H56OJO2AQUOMLQC U6HLBU2OIMKVNWWZ55SERG56WKAW3GSFFEGUJBP4SQVYSESGXC2QC ITXPKG6VHYSJSRQBRJUTD4AGCMMF4RDAJBAULFAN4J7OPQEHAQGQC IJ6KN5MQLEB7DR7NW2AYQNCVBV5IUKECUSECUMEJWOBRNJBAXHCQC 7Q4H6B62UZACQOUDHCHPMPBYEBXM5GVQINIHVHM4KLRENSH6VGTAC YOZHWGKGPWZGHQYNMMBHNGDO2UEVIHPOR6UF3SEZPIYWVMBGWBOAC 5TG5LXU4DX65KMWCZ7YJHOB3VAETQAVBUHEUSQTPMA327XV2HQWAC ARVJY7XPMCHI4IAQMD2VUWTAXQLCRNVSM2MK3YT4S4WHQYFTLEMAC 74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC MMND435BVG6KUGRUEMSHBQX27FRASBK5HJ6OSKLPON2LOG63L75QC 5R4WV4H5SNIM5WU2X33JJ63HIEGKCXN2HELZ6FRRKKANPLMRLF3QC 5S3CAGZSAQC3CYFPM5TQFPHW5IE2OZRVFJMICQZXHBZRGKFMNPRQC TRCCLE5RJ4VJULBOWOI2WC3RJU7WTEGS7RRQTDQL6W5UU246LKTQC 5ZG33P3GHTV45HM5STF23BNSV7T4Z6MGCLPRGCNHIVCQUTHDPOTQC H7KLIGBECC2SCGAIFPZFZ7P2TVDKR67HQ7AG5LXPP5SVNL7RWAHAC CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC 2H32CFFM2FNS63JJPNM2S6HMO543EX72GMPOU5GI6HTMQYPL6I3AC MLZSEZWNNZMSIDQNAAIOJJR4K7VSVJICL5SAGHD3ROM7SYDVZABAC 7V4DCKFJCNBXFODMKJ6H3MCDUTSD4XVQ7D4D6XFCD4JNF4HCE4KAC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC CWTKS62IFZYYR3HGPDP5LW5C53CRWVAD6AAEOV4BSWNW52BCQH3QC Q3XHNSHW6FI4JCXSEABATRFBJPMCF7PXNG2K6ZQTRRPVMIZFHUBQC KBTDCQ7GYBRPB346ZEOJ4OM2XHOHN6FJMVMTOJ42EDK5KJX7VLIAC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC PR42BCP5BPRFD2MP5H6CIJP7E57Q6TKL6SOXZWFKMFVR2OZWHT7AC IIN7AVA6JYRBXH6ZYRR7BY7TV6PW7ANAQ2A3PD55FKBKKQFEEF2AC JYCMD6WMNHXA53K4LLKVTNX6PLRLU25F6J2TYMPQXM2ENAE66NIAC UZ5623MOLKBTGBSRBJ4OBOEI4IEZSPV3NCV2DRMUZ3CHHJQVHIIAC GQL5SIGBHLU3FMCE54XVGLRY5AZHRM6DUEB722REA2DPLGJSN6EQC BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC IE3INS4WUXZOBVXB5VWRBYPVPXADD2U2W5H3TBTOYNWJ3EGRSGQQC 6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC 7CMQLE4XIFMWDEUZAOKIKDW7BHAJCK5S26APMEZ6TEFEH63TEZ6AC FBK5ECMQ6HJSQSN7C3DICKJIRJ3CSO3CHCQ3ONPBKLLSHDGPBQ7QC UKYGZDI6PYZPXDACCQGVPHANUP5ADCSNROOZIE7LYIZQWSNFHJZAC U3KGUJJQWQORJIIFH3ADVNIEEX5HOX6KEOXO7DJSL7L3Z6GG3PAQC IHIJSWVOONSTA2WCHKW3YKBLETUQECFVBVLMET5SGQZ4C6U3GCUQC ESWIM76FGJL4QFLSHU6AC4D74PT7OPLQ7ZCJYWLZS5UCBAJDXYHAC 6LT6USGJOTDMRJGXLAN2NSZXK2GKWEXDKKUV6SVV7ZC6WI6EKMDQC // If phys_scales is true then we're checking to see if the form keeps// the physical (AC/EV) properties from scales... the special intrinsic
// If phys_scales is true then we're checking to see if the form keeps// the physical (AC/EV) properties from scales... the special intrinsic
static bool spell_is_uncastable(spell_type spell)
if (you.hunger_state >= HS_FULL)return false;// Satiated or lessswitch (spell){case SPELL_RESIST_POISON:case SPELL_CURE_POISON_II:case SPELL_TAME_BEASTS:case SPELL_BLADE_HANDS:case SPELL_SPIDER_FORM:case SPELL_ICE_FORM:case SPELL_STATUE_FORM:case SPELL_DRAGON_FORM:case SPELL_AIR_WALK:case SPELL_BERSERKER_RAGE:return true;default:return false;}}static bool _spell_is_uncastable(spell_type spell)
// go off... the spell only fails at this point. This can// be a large advantage for characters who have difficulty// casting Fireball in their standard equipment. However,
// go off... the spell only fails at this point. This can// be a large advantage for characters who have difficulty// casting Fireball in their standard equipment. However,
case SPTYP_CONJURATION: miscast_conjuration(sever, cause); break;case SPTYP_ENCHANTMENT: miscast_enchantment(sever, cause); break;case SPTYP_TRANSLOCATION: miscast_translocation(sever, cause); break;case SPTYP_SUMMONING: miscast_summoning(sever, cause); break;case SPTYP_DIVINATION: miscast_divination(sever, cause); break;case SPTYP_NECROMANCY: miscast_necromancy(sever, cause); break;case SPTYP_TRANSMIGRATION: miscast_transmigration(sever, cause); break;case SPTYP_FIRE: miscast_fire(sever, cause); break;case SPTYP_ICE: miscast_ice(sever, cause); break;case SPTYP_EARTH: miscast_earth(sever, cause); break;case SPTYP_AIR: miscast_air(sever, cause); break;case SPTYP_POISON: miscast_poison(sever, cause); break;
case SPTYP_CONJURATION: _miscast_conjuration(sever, cause); break;case SPTYP_ENCHANTMENT: _miscast_enchantment(sever, cause); break;case SPTYP_TRANSLOCATION: _miscast_translocation(sever, cause); break;case SPTYP_SUMMONING: _miscast_summoning(sever, cause); break;case SPTYP_DIVINATION: _miscast_divination(sever, cause); break;case SPTYP_NECROMANCY: _miscast_necromancy(sever, cause); break;case SPTYP_TRANSMIGRATION: _miscast_transmigration(sever, cause); break;case SPTYP_FIRE: _miscast_fire(sever, cause); break;case SPTYP_ICE: _miscast_ice(sever, cause); break;case SPTYP_EARTH: _miscast_earth(sever, cause); break;case SPTYP_AIR: _miscast_air(sever, cause); break;case SPTYP_POISON: _miscast_poison(sever, cause); break;
case US_UNDEAD:
case US_SEMI_UNDEAD: // Vampiresswitch (spell){case SPELL_BORGNJORS_REVIVIFICATION:case SPELL_DEATHS_DOOR:case SPELL_NECROMUTATION:case SPELL_ALTER_SELF:return true;default:// also, the above US_HUNGRY_DEAD spells are not castable// when satiated or worsereturn false;}break;case US_UNDEAD: // Mummies
mpr("Your bloodfilled body can't sustain your transformation much ""longer.", MSGCH_WARN);you.duration[DUR_TRANSFORMATION] = 2;
if (newstate <= HS_SATIATED){if (you.duration[DUR_BERSERKER] > 1){mpr("Your bloodless body can't sustain your rage any ""longer.", MSGCH_DURATION);you.duration[DUR_BERSERKER] = 1;}int transform = you.attribute[ATTR_TRANSFORMATION];if (transform != TRAN_NONE && transform != TRAN_BAT&& you.duration[DUR_TRANSFORMATION] > 2){mpr("Your bloodless body can't sustain your ""transformation much longer.", MSGCH_DURATION);you.duration[DUR_TRANSFORMATION] = 2;}}else if (newstate == HS_ENGORGED&& you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT&& you.duration[DUR_TRANSFORMATION] > 5){mpr("Your bloodfilled body can't sustain your transformation much ""longer.", MSGCH_WARN);// give more time because suddenly stopping flying can be lethalyou.duration[DUR_TRANSFORMATION] = 5;}