Clean up some corpse handling, add food_is_rotten() function instead of manually checking special < 100 everywhere.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3283 c06c8d41-db1a-0410-9941-cceddc491573
5TG5LXU4DX65KMWCZ7YJHOB3VAETQAVBUHEUSQTPMA327XV2HQWAC
VCG3BRIYRTNNWYC3LOXD6KFGXOX37HAFW2HNV7WXVG2V7EUHLDZQC
MJWFTUS66PTCNEYXEJA3CUJFXNWXIKDD6H3V24PW7HK64NSVOFSAC
YMC3RKF4Z7DOHZNGG7INC343SXCTWOPK7ISD42I3WA3AZZNVBGIAC
ESWIM76FGJL4QFLSHU6AC4D74PT7OPLQ7ZCJYWLZS5UCBAJDXYHAC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
TTJ3ZULM45YPPVIYM5AQ5WE362I5WCJ7RUILQDGVCBEXKVQ3YAYAC
E5DMZFW6WCFAKTKKOQPYTQXZ2CGLWMVH64LRXDUI2UIG4VYUHIVQC
CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC
VNHFP63ZLLZU3A3PLXP4BITX57DUIYDHFOHQYK3BOBHV3S64G26QC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
7Q4H6B62UZACQOUDHCHPMPBYEBXM5GVQINIHVHM4KLRENSH6VGTAC
ARVJY7XPMCHI4IAQMD2VUWTAXQLCRNVSM2MK3YT4S4WHQYFTLEMAC
MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC
O2GH2BHUL4XXIIJSMKNV2NIC4KQACE6HLMUL4KEUDFNFEAGMZSZAC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC
264FLET5STFALEWUDOEFCR273Y5CY2WZDHL56WHZUAQ635RUN6MAC
MMND435BVG6KUGRUEMSHBQX27FRASBK5HJ6OSKLPON2LOG63L75QC
P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC
JXOE7KJIEAJHPLMZAJ6O4YHDTRB6BGNP6XT3ZSEFYGSIUMHR77KQC
2H32CFFM2FNS63JJPNM2S6HMO543EX72GMPOU5GI6HTMQYPL6I3AC
5ZG33P3GHTV45HM5STF23BNSV7T4Z6MGCLPRGCNHIVCQUTHDPOTQC
7HMVMNBIRU5WDSIWYK6RX57E4LA35N3HLT7RPIAGCDLEKAEEDX2QC
CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC
HIRKGUMNJPWKSVTR6TVBPD3MWNA63CEHCLCIPWEMGDFHVB3NPLDQC
} // end offer_corpse()
// ritual sacrifice can also bloodify the ground
const int mons_class = mitm[corpse].plus;
const int max_chunks = mons_weight( mons_class ) / 150;
bleed_onto_floor(you.x_pos, you.y_pos, mons_class, max_chunks, true);
destroy_item(corpse);
}
}
{
if (!dbname)
buff << mons_type_name(it_plus, DESC_PLAIN) << ' ';
if (item_typ == CORPSE_BODY)
buff << "corpse";
else if (item_typ == CORPSE_SKELETON)
buff << "skeleton";
else
buff << "corpse bug";
}
if (!dbname)
buff << mons_type_name(it_plus, DESC_PLAIN) << ' ';
if (item_typ == CORPSE_BODY)
buff << "corpse";
else if (item_typ == CORPSE_SKELETON)
buff << "skeleton";
else
buff << "corpse bug";
std::string prompt = "Butcher " + mitm[o].name(DESC_NOCAP_A) + '?';
const int answer = yesnoquit( prompt.c_str(), true, 'n', false );
if ( answer == 1 )
mprf("Butcher %s? [y/n/q/D]", mitm[o].name(DESC_NOCAP_A).c_str());
// possible results:
// 0 - cancel all butchery (quit)
// 1 - say no to this butchery, continue prompting
// 2 - OK this butchery
// Yes, this is a hack because it's too annoying to adapt
// yesnoquit() to this purpose.
int result = 100;
while (result == 100)
corpse_id = o;
break;
const int keyin = getchm(KC_CONFIRM);
if (keyin == CK_ESCAPE || keyin == 'q' || keyin == 'Q')
result = 0;
if (keyin == ' ' || keyin == '\r' || keyin == '\n' ||
keyin == 'n' || keyin == 'N')
result = 1;
if (keyin == 'y' || keyin == 'Y' || keyin == 'd' ||
keyin == 'D')
result = 2;
bool rotten = (mitm[corpse_id].special < 100);
if (you.duration[DUR_PRAYER] && !rotten &&
god_likes_butchery(you.religion))
{
const bool rotten = food_is_rotten(mitm[corpse_id]);
if (can_sac && !rotten)
// ritual sacrifice can also bloodify the ground
const int mons_class = mitm[corpse_id].plus;
const int max_chunks = mons_weight( mons_class ) / 150;
bleed_onto_floor(you.x_pos, you.y_pos, mons_class, max_chunks, true);
destroy_item(corpse_id);
}
you.inv[which_inventory_slot].sub_type = CORPSE_SKELETON;
you.inv[which_inventory_slot].special = 90;
you.inv[which_inventory_slot].colour = LIGHTGREY;
food.sub_type = CORPSE_SKELETON;
food.special = 90;
food.colour = LIGHTGREY;
const int chunk_type = mons_corpse_effect( mitm[item_link].plus );
const int intel = mons_intel( mitm[item_link].plus ) - I_ANIMAL;
const bool cannibal = is_player_same_species( mitm[item_link].plus );
const bool rotten = (mitm[item_link].special < 100);
if (!prompt_eat_chunk(mitm[item_link], rotten))
const int chunk_type = mons_corpse_effect( food.plus );
const int intel = mons_intel( food.plus ) - I_ANIMAL;
const bool cannibal = is_player_same_species( food.plus );
const bool rotten = food_is_rotten(food);
if (!prompt_eat_chunk(food, rotten))