convenience function.
YBNZTFKEZDBA2BWBYEVU62CIVIVTA7LYIRJAOYKGQT7V64DAMZUQC JSDIPKR5WZ37KDVQRRSLS5ADWRBGEZOOJQTGCZUISCTPPWBD6BKQC XW4ZV2FCTDSREY5ETAZTHQ2VWF7B2LGAGZGRTBJRJKIHT6ZWE3WQC 7SZPALYNCEAZR6GCI3QH5YSRUMWJXHD7IW3QU3RPTQROC5RTIUBQC KADKIXTKG32FACYRPWI6XF6FLJ5O7QWUB3UGVCSUPANOY2S6PRSQC 4HCYQDVXJDOY7B7VATNRRRF7XCCF2QLJSBRPAL3ICH7JQ3ZLAL4QC 5I3RE6QCG6W3HD54OBDOZ7IDGHKEL7XBIOU5XVWTUDQQTDZV22NQC UWKS5RFSHDUBRVQBBH7NLTZSDV63N4RQU6I6HMYN7JGPZOQ5FGXQC JMBL7S3FVFBUQGRYXVHY4LCL3RTWMFFW42EG4FQPH45YTERD35RAC 6VNXS26SKWXBVS5B3UCWS3OIIPIM2MDHBPUXBVLT5EXXZEEOFVMQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC PUY2VWZJ3G7HNCLIHZP5VGT2DAGHI436ETDJQTPEBFPRSEHOM2NQC PEXHYCLRKDG2PVOJ3DDCMUZUK2HTSPU5WKH4MODFL4FTBQRQTY5QC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC ZYRDAY7GAX43C5ZOK3TSWPRAOCZVYOJZZWP7IVX6JPW7B3Y5U55QC NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC OLMTUY4KVSPRWQKIOLSIYRAUEVJLRDJV7CCXJRW7IKWGUHSNRZTAC HB27XKFYVYIEQZGBCEZ6LKPUBMXLIPDAAS636GJ5TULIQ7KND5KQC 4I6DI5BZ4OTBYZCR2FT226PI3WJFJHL3YXPVELPDDMX4MHL5IUXAC KZIBMMGUSWOMS5NQ2KTWGY3SRYUYGZGD2YRZPQ2ISN5Z3JRSMEWQC AY3TQCPUUX7KA64V23KUW3PZD4M6DW5DZNJGWS7X2V7ANSU6LREQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC ZB5MLJOVFY2ZULUWA237VLTIJONQOW2QMOEB4O3WRQRJK4QWYOZQC KNPYFBNK3GESOQDGE2HH2EMUBQQIHUFYL6RQW2EFHCN2O2UGWDKAC 66A23OYT2NMU3M2NIOKNAKM5MQVOVRTOCXYB7BALJPB7CRIPQZLAC CGI7CYUTISKXPOHQ5MR7F4GK2PHC7ICXSVLPIXWUVNMNFNWCIXYAC B47CVG54WZNP3CQ7HOTKTWQA26GCOIKQADX2EK4ZOEYRRQ4T5W2AC RWODUU2EGEVNOZCTZIISH5UY6OJW6QFBWB2DARNATJIYZFW3ESXAC F2X5SIIXWXXEL2FVMYDC4GL2ODZ4O7RA46U66VGJ5K2EZHHAQGUAC ASXBSZVXJCWVX5VQSRWXL5BWQ4NA7JLYXP6LWQTRGYW6DC2DZZPQC 3ZWALZFSTSIVYXY4BAY6ANGINTDACZC6RSSJTEMQSTSUIE66YOBQC UPA65AL4JXYLIHH4D42IWJHRTOAF2BPOVZOAKOXBLZBYIMDZDFFQC GR6QXMDUVPNXA2XVDRJUWGVSDI2FXQCKLXAXZUVEI6NYRMK6I5LQC JXO53C3SJ5KPLXVEBFGFWCBI4EFY6TCA6QQVH5NII5NP5BC4EWUAC LOAPDCDZDTOXBCNX7IQBCACP7TCMVUBNZVUTUCLX5VXM7MEFPQBQC 7UIFNKK5IU2VUAGKWDB6KOETOVQOCOVDHZHB4OPAM2CQRCWV4AGQC KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC 6X4LO6MAQLVRJBTYVGBJUI6RGAAFM6DMXW3KFNWC23R5TX7Q2OLQC MPQIZUHUAHOF2CKNTLSYCGMR7FIC3EPA2RHZIY6JOQKAS6H6YY4AC CVYS2M2XNT3GLAYJB2FJCYLONILJ35TPZTICJGYTGRBXHDMUXLVQC W4HDISG44LF7QZC6SY3YM5OOXP36JREUIFWNYCN2OFAKRZFQUINQC GDAP46HZY4L5ANBOXI36M2OAIXFT7I7DEVB4C5RUEYEXYOTCKO5AC W3UFSWJ64J27YAP6URIHMEIC6VCIWG6GS5UPA6KPHONKXYEQ7IDQC S74K64QSPLDUVI43I2QB4B6LIZTHRSXEXUFY76RBPJZD4J2SHCLAC U5BUW5QJQ22SXMUA3JEQ4JXOE5NJF7KDOQJWPWCQ6X7P2OQMNBJQC PAAJWLYMSL5R2NS73EU5AMVTSGQKSK7AZ4P4DWEIVHYYFB3AWEQQC MPL4NSRZ4TMXOMYDRRLFF5MPEDI4RZIRCOAF6BEH4AKJLRYTMLMQC KDPJ5HMPM3G2ZE6SV3P24QRRQMZ5NCR5ERT5X3QQZAWN6JVIRUFAC 542UIZKI65UDRNEMGFFDBWYD5XC7AYLTZ3JZQRR2GHYJALD3YY6QC 36BFWYZWCQGMAMK4EF2R5C66RA2EBLTX3MJW3QDEKN64C3BJQX7AC 2IPPYYFWEFI342OOKTTEKMLLBUFPERK7RNLBF2TWQF5D47M6PSTAC AOXEL2V6ICXEIRWXB76LJARWP3NPKG2L4UFYOIQUALUJU4ZLE3UQC XJQT4B4TMM6R5AXQZTOQOJV25JXRD5P27OSFXZBFLBV4WUZRSTQAC WQIEW3O4MANA2KKYRUWEZP44KHVJ4RRHEZTDXSF4EDELX66LO26QC 4M6JJPRNEQZIOYMQI24SLTDL27TRD3HGB344TA2KY7OKJMKBDRXQC LZH2H24IV7PQGTG4M3DMAEWDUGKMZD5FMPQXLVWYYCNUGA3XD5UAC N5FAAVHNKQZJV2G3JFRW7WKTXB3A4YY6GTVIMBCG5RSA65TKVBGQC EXPQHDUJDH3J47STNSABE3SNNZWCVRSMANAZVBYQY3W7E2KQUP7AC ZVG6W2UMHJ3GHLF4ZVCUHZOOEUNJMWPURVBN2OQXKVTXYC4Z2LPQC BNRY5YIXLFE2TDNU2JQHWWXJQVWNSEWQ52DU7XUWIT5DZWKGBDDAC K7EIE5VJDKRYBAZRDFEEEKST2P2B7HFPH2AJVER5JUUQVTYXZWHQC UWI3ZNJDRQRL7CXFNFEG46TA6SAK24XUFY5YOKVOTJA3VG3OBNFAC OPNCHI4UGN7WBIYPAXVV2C4N22ZSWROA435FJCY5UZVXKWRYQ42QC WVKP2MFDE56ZO3OI7FCEKE5LI3MAUIL6IDTUW6MEBCV5OWF4OKEAC AACWTVIT7SKC6RDU2FU72JT3U43IT37C37WZE3AH4V6XVHSJFBVQC IT3NSSLR756K7TZ7S7DOMS7DZUVGIFS5EAR22PEERAF5ZRBICV4AC OWERGKLVPNPGIIS23FZ7ZDOBWUIXCKYAFG3URXU75JAUDX3N5ENAC BD5ZPI4AQYR4SHYGKH4FJ6XNNCGSSEXESF2HMD5WN4GJAJXAMGGAC HE3D6YNIZOLTMT7TCUPL7GMHNYOUUF6B7357F6K5PKXTVDOEDI6AC C67GX7W5HBCDPQJRSHWMLM4DUJ3ELFSHH42SVICFJVCJW25T5Z3AC W52V2LIYPIAH7SAOWAM5FZ326CJAS3T44AMMERLQP5ET2NGJOIWAC QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC 3DQXSE4YGFBBDUWK4YEOFWW4UPWILWELFSLP37SL6BERGAZJC5YAC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC 5XSXMOBGXFLTIQE6WDXWWFVDOTUPZSIQ2FWT3YI5QMVU6D76IUYQC PWH7XDI4TKX47RBFLLWDCQAX3C4W5IDZIQGAGRHNEKOALJN2QCNQC 2BGXBH5OMEFAX2XTS2OWIRODUGW6V2FJR4QRJIQTV4C2WIJI22BQC DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC GUK3LTWA6FGBAHQ3VMRDVVFHOI3IT5NF33MOC6I43IZ5R4JZS4WAC V53DXVC5T3N6J47H2CNG4MMPRR4PHW4AIS66QNVTKJNNYTTTQL4AC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC V633AMMPMHJB5ZLP5IHFXCT6FCENVTPX25TY7T5MF2QZLDDN24HAC MFOXVZEY4AR3FDNGKAIB7YSXWTE6DOUXPS7UGSJGSBIK7VCRWLKAC 2Z6IWKMEWE4OIFVWFSZBA2SIXMBJNV6H6LNEPOXTJZW433ABU4EQC R22TTMI6WXWULC7ODKFF3QCB7MOTETQQ6IR4BUCUPOCQKQNCTT5AC KX6HOBTF5OBZLH2VNEFHH6YAX66FSE6JGBY5I2WIAW5IEJUGNL6AC P4KV3XKK2NCQAUPCMTHJPSA2FETTBY5WOMCVP4IFMNJZABEQWKWQC RQFQSU37Y3ZBFR634JWYHE77LIOOINGBRNL4KUHPPRA3ZR6W5QIAC LFIEDWOSNPS5D6EUWPUPOBBN5CEHVF2MLNOSPXEIVMRZ77A5BH4AC 23PFLB2E4QHL5SF3Q2YV5FXRH6MFHENEU2ACVC572ZCYDXCBZVQAC UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC N5XD5IAOMEDF37AXEBALHFINB4H527T6YNTCHN5KKO6YHXAP5PNQC LC2XZTUD56PLARIGBTDXDPJIYJNMJU446GFDGLRIFD2I4F66L6TAC G4TVXOLIF5X2MWV7I4UPT3MSQHRMGME6QRIIFAQ64C45JGYK7SIAC AGKLT4LWLCN3JE4K72NLWJ2KWVH7QQYUT22B2YTKEJOIPVR3XITAC IKNISANLZPADZVTNXZFPH2TQWCS6ZAMERU5JVGGSDFIPV3UEDVLQC 2EN4FKVA4YVBL7S2X4765EB5GVPNXXSGPY6IKGX77HFLLEKZ5KBQC CMGEKP57BEOQXLDZJCFDQJ3R47REQOG45GI6OV4AWOZTZ2CH7JPQC B7MSPF6X2RLGWN4M6ZZF3WSOPKGYPTTD7LIJVST7DXN27DG6JHNAC HFXCFYFH2X3BIZR55ZADL3CV4MQJEEHDSIJZ7YSTHO3HTZP7GWEAC KO7TLN7OM7UQF33RRTOFPFTDQLTYCOE4N7KWQUTWRIUSEB6PQ4WQC 5FHWTG7M6FW4B3I33YI7QSM3OZIB6ZGC6TI6JISSLY5Y43HI56VAC UADYVV3UD5ERJTZZJGY4EUQ4NJ2JSBG7YYUJ75ZRBIXRQXQKOJPAC QLEBDRVUQ3BMCT7LV4EBPG7T5X4KMQJAVLMLHHB7DRCNNGDQBRNQC NHCEH7ZFP3IFRMZMC25ZA2X5ZSS3MOCHCYLVCSVY7RTY62WX7UAQC 5WVUTEZLEZEML54CKPR6GACQBYY3EMVNXMLJOREN6SSEUZGC47AQC 5JCN5YNO7MROLVA6X2TBQROHP6QFOKVP3CDFNPW6IQ7HZT2DXU3QC if (monster->type != MONS_REAPER&& mons_holiness(monster) != MH_UNDEAD){
if (monster->holiness() != MH_UNDEAD)
if (mons_holiness(mon) == MH_UNDEAD)monster_polymorph(mon, MONS_DEATH_OOZE);
if (mon->holiness() == MH_UNDEAD)monster_polymorph(mon, MONS_DEATH_OOZE);else{const int x = mon->hit_dice + (coinflip() ? 1 : -1) * random2(5);if (x < 3)monster_polymorph(mon, MONS_OOZE);else if (x >= 3 && x < 5)monster_polymorph(mon, MONS_JELLY);else if (x >= 5 && x < 7)monster_polymorph(mon, MONS_BROWN_OOZE);else if (x >= 7 && x <= 11){if (coinflip())monster_polymorph(mon, MONS_SLIME_CREATURE);elsemonster_polymorph(mon, MONS_GIANT_AMOEBA);}
const int x = mon->hit_dice + (coinflip() ? 1 : -1) * random2(5);if (x < 3)monster_polymorph(mon, MONS_OOZE);else if (x >= 3 && x < 5)monster_polymorph(mon, MONS_JELLY);else if (x >= 5 && x < 7)monster_polymorph(mon, MONS_BROWN_OOZE);else if (x >= 7 && x <= 11){if (coinflip())monster_polymorph(mon, MONS_SLIME_CREATURE);elsemonster_polymorph(mon, MONS_GIANT_AMOEBA);}
if (coinflip())monster_polymorph(mon, MONS_ACID_BLOB);
if (mons_class_holiness(mon->type) == MH_PLANT|| mons_class_holiness(mon->type) == MH_NONLIVING)
if (mon->holiness() == MH_PLANT|| mon->holiness() == MH_NONLIVING)
mon_holy_type mons_holiness(const monsters *mon){if (testbits(mon->flags, MF_HONORARY_UNDEAD))return (MH_UNDEAD);return (mons_class_holiness(mon->type));}
}bool mons_is_unholy(const monsters *mon){const mon_holy_type holiness = mons_holiness(mon);return (holiness == MH_UNDEAD || holiness == MH_DEMONIC);
return (mons_holiness(this));
if (testbits(flags, MF_HONORARY_UNDEAD))return (MH_UNDEAD);return (mons_class_holiness(type));}bool monsters::is_unholy() const{const mon_holy_type holi = holiness();return (holi == MH_UNDEAD || holi == MH_DEMONIC);
if (!mons_class_is_confusable(mons->type)|| !mons->add_ench(mon_enchant(ENCH_CONFUSION, 0, KC_YOU,(16 + random2avg(13, 2)) * 10)))
if (!mons_class_is_confusable(mon->type)|| !mon->add_ench(mon_enchant(ENCH_CONFUSION, 0, KC_YOU,(16 + random2avg(13, 2)) * 10)))
rc = (mons_holiness(mon) == MH_DEMONIC && mon->type != MONS_HELL_HOG)|| (mons_holiness(mon) == MH_NATURAL && mon->type != MONS_HOG);
rc = (mon->holiness() == MH_DEMONIC && mon->type != MONS_HELL_HOG)|| (mon->holiness() == MH_NATURAL && mon->type != MONS_HOG);