i.e., allow merely praying over said corpses. Now, the only gods that pay attention to butchery are Kikubaaqudgha and Elyvilon. Also, add several miscellaneous fixes.
5PE244O6RR2LB5YNIHPXYMOUYCDR4WIAQNV4DRPRZBXNGEC2K4XQC 64ALACNP37WC4GSL7H5OZXFTEMK6XAAVQTDMHCFADBVGZZLUWAWAC 67WBQJLU7E7NQR5OD57PZIJNZLBXS7MC6VLEAFK7KHKNIURZNWMQC LQL6F3NIIER36EKJ5XE2LVIH56R75ENH6L2UJDD3RKXYUBYMJRCAC 246C7O2JF3K5F4BBKYAAQP5N236M763V6DB4AF2JEYM6Y67ZDUEAC 2JEJP4VO4NUN5X63WT54RWIXPJLHB6NJ7LVGQCU2QHO7CRBIPT2AC RA7UG6FR2WA4AWD3PW4Z25PKPP6ZX3LOA3V55CZHJHBH677MTUCQC NFH2FHOAK4HAZDJJDBKU7KLA3PDCPGIM3TCMJV4ZZSZMY5W47KBAC NO3CRB2BIS6TXN62ZPC5WBPTO2TQ44NEJ3BBCSILRDLNVXZ753WQC FF6PPL5KW5DL4T7D3DHJLPCOSX7UP6IFGX5M24VYRB2SQZPYRUNQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC ONKB2ZZ2MWY7UGPBHW6EE4N3EEPJONPRRALEFZZR2YTZHNEIGV5AC LOC46PHUFJ3MDWOYUEH4R24TGGE4ADG7C44O2ZNB4EBF2YD6VX7QC 264FLET5STFALEWUDOEFCR273Y5CY2WZDHL56WHZUAQ635RUN6MAC DF5LOTJFSXOT7UBDHLBDLGA22OY4L7ZF6CVFP6H3KL4N5CHB5C5QC EC26XYXTRI5NAO7FHLP57FS7Y3XI2FTHTS4JXWNHABUT2TBKYVWAC DGFWFFHCEBQK2TSMHN7RYPRNRVGEAYXM7GYJ4L37Z2ZNSIIUWQ4QC HW7XKO7HRAUQVDVVKG5GA7PYAEL5J5GKVDPT2CKAD3FLERAY5HLAC TGJZXTUIAKCFZQJ54ZQEBGFBVZSJCAX6AWDRSH3TP7UJRLGUM5SAC L4DV5O3UTY456Y6YFXELHEWEFLB6ZUCENZ3AKYJZLGRRGUVHT5QAC 6PNQWEUFFTVYX76X5UBLRSGPFADTJ6UVD5KMBTCLQAY3YYLO6PHQC SJVBH562JHDQ4JXWCXRX6EPRAJOZLWNPER4RA76QCBMWUXN26ZFQC 3XQAOZVTIDFQ7EUC36J2AFMTHZXLZ3G5MBHFN5JZWEWWCXFENHRAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC SA36K3OJ75PNVR2F4QAPNU2LUGFTVHNIAZVSXCBXBT2NLW2RTUPAC JSHUSNMOJRLZJF7EK5ETYH65G4C3YYFGLWTYIAH4KPVXKC5AUCDQC PYRDMGIYU5BUMTGRTYHRKD2D7WULYWCVOU46TJ4R5NSVEZVCZTUQC 4O3VTUJT5T7NBNF3Q45XO2WHS6TCJXVLH6CKX4K36WUBDRT5F6KAC DHXIQXK5VTL5JDDEERAVLZK4KBQLXFTBN5TQ6MH3PRBLG5ULOS4AC M2X33JKIB2O27DLCUPSH7LSHEFDN76TUCLGWFNU5LSSR767JSTUQC AV3T4BN5IFAAE4CQURI5BKTUW22AKA7DVCTPXM4ZVCI6P62UULCAC N73PR6EHLADBQDS2XACPYB27U6A3JV3UVI7JAFFOJKCMYCH7DDEQC EGZHLWGV7MO4JXHWIMGEKC7Q4EFD3OI35FXYLZ4E37GPEMJXAETQC DQ66I7TXDJ3RLFVX7YOVGSVLCSVHEJJ6O5B6XGEHHO2ION3N6IQAC DFUIVFA7LFNOL452XOKUAKAAUVIO7PFJXIOQIPQYRR4S5LPWXHZQC PHBACPMH3F34GODHVDKNCMXWU373RJQGVTDLBFCCDLLWDXVYOLTAC DA4SGKR5R6YAADTB3R2KLIMCFH45H7UOO7YTC665C7TSY4BRBTJQC U3LUN66XOUGBCEA3E4BFKXBFTPGV5ZQRUTXUYRA73LF6YOHOQHEQC 4RWYH3CQPAAOK2OM2POLRTY6A5CPHYZJ4B55VAVSCWTSCOPWMF6AC PZNRGNZPN4YLXL2UDMEUPE33AAZZ6Z2YPK6EQGYZL2PNTRWLCUNQC RRNEVUYOK5S4M4QH77N34IXSSNUXVQAIZQLXAQKQCRITMPUKGP6AC PRQVFUGUGPKI2Q74ODEI3CYUJQB63CKC6ONQTE3BTOHKXG4JCNLQC IIUK3DT26O7F4IBKB6QFTPLO4EVKBH55SAEXLNQEQRLDGJ37NDGAC UET576SVCGS2TXEDRTO7BUTOTLJ77MYHIVZJCDWGH2BAXYMKG6DAC 5FZYO6GQ5DWJFMRHCFSLAI4NVGK2HJ6RE7BLHBVTNQJHN75K5LUQC CXP2QQ7P3BW5H552RUX5RLQ3HCPBTFB6Z6D2VWMKHJBLFVOKOGGAC UVJBHQ5KGUIEFRHKTYQPKSXYDUDKTRAXINUXGJJJ6QGNCR6JO7ZAC JW5LVDYDDQMYLQLEB4WS7V3CV7FTHW7PSADCNY5JOJW4ZR34X6GQC RIGGVFYNCRFDUUCMIAN7SDEOUL4VMMZI6OYXZW72BVNI4WXJQXWQC SYXSZQICCRNKCSZ4HDO24JIE5HBVMWFWLXXM26MS3OKB37PJOAVQC UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC VEOWM6UDFNWRAXP5YUO7XBH4ZALAJXCWRA4IRDITXJ3QWH42CTWAC FXMCYF3SEOI7OY5Y5Q335TAE53L4WETNOYAVTK3EI6YI3IU5UKGQC MAXLIRKX4Q3QOV4PUICT47GWJTMAHE5LKYBYYT7MF46VSXJOWYRQC S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC 23PFLB2E4QHL5SF3Q2YV5FXRH6MFHENEU2ACVC572ZCYDXCBZVQAC 3YAWEKEQ7P2OL2X3H53DHI7IMAKH6GDQ7NE5GBNYN7O64L3NEDSAC P25D567E2UEAQHNI7LAZPNY7KAI3J4OE77YKLWOIEEALC5RREJHAC RIW55YSFKKTJLBTOJRVUBC7JOFUBOK7OBMISW4PBSVLYJHAAKPPQC M6MBPHNAERUXYJ7KHK5FE2B44CLBY4M5MR5KY74HVDFNHVLOEQIAC PSLBTBSCSC65MRX6TEGGFNKPXLP4OE2FZYGMM6VRJTBXTTGMP5UQC Q57GOIHVFNJHTBYNUGJNME3UF2QFRJ6CN2UXVY47NHU7XAT7JJYAC SXUKGEXMGRRN6UO2GJW4HSVU5TSUNUHIHBMMF7CAG7QMLKZYWTKQC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC 5R4WV4H5SNIM5WU2X33JJ63HIEGKCXN2HELZ6FRRKKANPLMRLF3QC MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC K2B4YUKFNQX33VFTVF4WRGMXUG7OG6AKCE67MU562QNBJXGOVQTAC S6ADNAPM545WP3FRHCU6UWKX5VEMY5TPSIZYSZ3XE76VCBTVIN5QC 3PBG6FJ6WGSR4UM3I7UQUYYCSYU3UBCKCIKYKUEEANIK72TUL4XAC RX6575DZOHRUXQUZH34YZGPZJF4STUPLBQDIVTINA2L6LVCKRIGQC RQR4PTMGQLTRWLYRU3KXIIDGND7FBORESJWMWFVD3WYU5SISZXAAC GCDBSJXJCPEK4NCX5CVGDBK3432PFCU5OCO2F3DA32332ALI2ZYQC ALHRVZZEWK6YGOVB422CRLBKHV6ANAWMPP2EIWURXLKEWSHPHXCAC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC MT3256427VMCV4JUFWCN7ULY4KXSND5ZL5THDKYNWWYOXXR5DLIQC NKONHW4JNY6HP2M63MNPM3H64ZWSUNUT5FX2STW4KTS4AMXJXXVQC JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC snprintf(info, INFO_SIZE, "you butcher corpses while praying%s",verbose ? " (press <w>pc</w> to do so)" : "");
snprintf(info, INFO_SIZE, "you sacrifice fresh corpses%s",verbose ? " (by standing over them and <w>p</w>raying)" : "");
case GOD_OKAWARU:case GOD_MAKHLEB:case GOD_TROG:case GOD_LUGONU:simple_god_message(" accepts your offering.");retval = true;if (random2(level + 10) > 5)piety_change = 1;break;
// item_value() multiplies by quantity.const int value = item_value(item) / item.quantity;switch (you.religion)
if (god_likes_fresh_corpses(you.religion)){if (x_chance_in_y(13, 19)){gain_piety(1);relative_piety_gain = PIETY_SOME;}}else
if (item_orig == MONS_SAINT_ROKA)chance += 12;else if (item_orig == MONS_ORC_HIGH_PRIEST)chance += 8;else if (item_orig == MONS_ORC_PRIEST)chance += 4;
if (item_orig == MONS_SAINT_ROKA)chance += 12;else if (item_orig == MONS_ORC_HIGH_PRIEST)chance += 8;else if (item_orig == MONS_ORC_PRIEST)chance += 4;
if (x_chance_in_y(chance, 20)){gain_piety(1);relative_piety_gain = PIETY_SOME;
if (x_chance_in_y(chance, 20)){gain_piety(1);relative_piety_gain = PIETY_SOME;}break;
}// Nemelex piety gain is fairly fast... at least// when you have low piety.if (item.base_type == OBJ_CORPSES && one_chance_in(2 + you.piety/50)|| x_chance_in_y(value/2 + 1, 30 + you.piety/2)){if (is_artefact(item)){gain_piety(2);relative_piety_gain = PIETY_LOTS;
if (item.base_type == OBJ_FOOD && item.sub_type == FOOD_CHUNK|| is_blood_potion(item)){// Count chunks and blood potions towards decks of Summoning.you.sacrifice_value[OBJ_CORPSES] += value;}else if (item.base_type == OBJ_CORPSES){
if (item.base_type == OBJ_FOOD && item.sub_type == FOOD_CHUNK|| is_blood_potion(item)){// Count chunks and blood potions towards decks of// Summoning.you.sacrifice_value[OBJ_CORPSES] += value;}else if (item.base_type == OBJ_CORPSES){
start_delay(DELAY_OFFER_CORPSE, 0, corpse_id);// Kiku torments if you butcher a corpse while praying.if (you.religion == GOD_KIKUBAAQUDGHA&& you.piety >= piety_breakpoint(4))
if (!rotten)
simple_god_message(" inflicts torment against the living!");torment(TORMENT_KIKUBAAQUDGHA, you.pos());you.piety -= 8 + random2(4); // 8 to 12
offer_and_butcher_corpse(corpse_id);// Kikubaaqudgha torments if you butcher a fresh corpse// while praying.if (you.religion == GOD_KIKUBAAQUDGHA&& you.piety >= piety_breakpoint(4)){simple_god_message(" inflicts torment against the living!");torment(TORMENT_KIKUBAAQUDGHA, you.pos());you.piety -= 8 + random2(4); // 8 to 12}
result += "You can sacrifice corpses by dissecting"" them during prayer.";
result += "You can pray to sacrifice all fresh corpses on your ""square. Inscribe fresh corpses with !p, !* or =p to avoid ""sacrificing them accidentally.";
if (delay.type == DELAY_OFFER_CORPSE){// Don't attempt to offer a rotten corpse._pop_delay();// Chain onto the next delay.handle_delay();return;}
}else if (delay.type == DELAY_OFFER_CORPSE){#ifdef DEBUG_DIAGNOSTICSmprf("Corpse %d no longer valid!", delay.parm1);#endif// Don't attempt to offer an invalid item._pop_delay();// Chain onto the next delay.handle_delay();return;
case DELAY_OFFER_CORPSE:{if (!you.duration[DUR_PRAYER]){stop_delay();return;}
if (food_is_rotten(mitm[delay.parm1])){simple_god_message(coinflip() ? " refuses to accept that"" mouldy sacrifice!": " demands fresh blood!",you.religion);_pop_delay();// Chain onto the next delay.handle_delay();}else{offer_corpse(delay.parm1);StashTrack.update_stash(); // Don't stash-track this corpse anymore.}// If we were interrupted while butchering (by poisoning, for// example) then resumed butchering and finished, swap back from// butchering tool if appropriate.if (you.delay_queue.size() == 1)handle_interrupted_swap(true);break;}
"jewellery_on", "memorise", "butcher", "bottle_blood", "offer_corpse","weapon_swap", "passwall", "drop_item", "multidrop", "ascending_stairs",
"jewellery_on", "memorise", "butcher", "bottle_blood", "weapon_swap","passwall", "drop_item", "multidrop", "ascending_stairs",
{ "god_likes_butchery", you_god_likes_butchery },{ "can_consume_corpses", you_can_consume_corpses },
{ "god_likes_fresh_corpses", you_god_likes_fresh_corpses },{ "god_likes_butchery", you_god_likes_butchery },{ "can_consume_corpses", you_can_consume_corpses },
}return (0);}static const char *_moneat_names[] ={"nothing", "items", "corpses", "food"};static const char *_moneat_to_str(mon_itemeat_type etyp){COMPILE_CHECK(ARRAYSZ(_moneat_names) == NUM_MONEAT, c1);return _moneat_names[etyp];}MDEF(meat){if (const monsterentry *me = mons->find_monsterentry()){PLUARET(string, _moneat_to_str(me->gmon_eat));