the appropriate number of singleton items were sacced. Modify Okawaru and Makhleb piety gain test slightly.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5775 c06c8d41-db1a-0410-9941-cceddc491573
AV3T4BN5IFAAE4CQURI5BKTUW22AKA7DVCTPXM4ZVCI6P62UULCAC
D32GUD7KJLTXTAHUYZZ3IXBAOGWXFP47OD5BPRXOSBOCG2NEMOWAC
MDFQRJ6QZNFUBVSFWLXUJ6EBXOU47T3CVDI2XKBGNNRF4DXDKESQC
FD2HXXWW7BLKG7G27VXGP67TXDCODDK3CXFEZOJFXNB7IF2GHKFAC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
72CQFK27NR37P2WQ32U4PEXXKMRIO7JEMJN2ZCPNVPZMT7UPFJJAC
XKAJWK6MPHS3ZCZIPPLTIMOPF6AROGLRDDCS6EFE3IGE4AHT7MYQC
DK362IHKSDADMUPD35NOTKM4WESQM37KG2PNOJRV2FGELDWULYPQC
L3DRKFURVDCV3EJKGG6GVVQX3D5MZPICTVOKNOD3LGM2PECBA7PQC
KYVZGUJXV23ELA4CKPVQZO3NTJCODXMCWYAZJYWVWJVLPETNHLGQC
C2VJXKTIPFZ34C6L6FNCDAGEI7NLTKUXTNB7RN4EYAJCALULIBMQC
RHRAOBKSM35XB4EELW33PZ6ZJ25Z7R5CVCJVBEEAKCBQR7YK2BBAC
E42EFZ3RINKLTGOJJZAH2N5QF3P4S5NCO5T52HLXJRMBPP463HTAC
UKN6HTZXDUUOWKNWNKWPHKGUGL474JIAQN5JU3DM3DU26WGMNP4AC
4O3VTUJT5T7NBNF3Q45XO2WHS6TCJXVLH6CKX4K36WUBDRT5F6KAC
KC4WE63EQMVI6QBPDO3EAEPMFLAOS7H5WUAFL7JPRIE3V7CR333AC
VXMRWJ2CPHIB2NAHMZKUV7DAFA7GLVA32WDS53WNT3BIDHK6GOZQC
IIUK3DT26O7F4IBKB6QFTPLO4EVKBH55SAEXLNQEQRLDGJ37NDGAC
PRQVFUGUGPKI2Q74ODEI3CYUJQB63CKC6ONQTE3BTOHKXG4JCNLQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
}
// God effects of sacrificing one item from a stack (e.g., a weapon, one
// out of 20 arrows, etc.) Does not modify the actual item in any way.
static piety_gain_t _sacrifice_one_item_noncount( const item_def& item)
{
piety_gain_t relative_piety_gain = PIETY_NONE;
// item_value() multiplies by quantity
const int value = item_value(item) / item.quantity;
switch (you.religion)
{
case GOD_NEMELEX_XOBEH:
if (you.attribute[ATTR_CARD_COUNTDOWN] && random2(800) < value)
{
you.attribute[ATTR_CARD_COUNTDOWN]--;
#if DEBUG_DIAGNOSTICS || DEBUG_CARDS || DEBUG_SACRIFICE
mprf(MSGCH_DIAGNOSTICS, "Countdown down to %d",
you.attribute[ATTR_CARD_COUNTDOWN]);
#endif
}
if (item.base_type == OBJ_CORPSES && one_chance_in(2+you.piety/50)
// Nemelex piety gain is fairly fast...at least
// when you have low piety.
|| value/2 >= random2(30 + you.piety/2))
{
if ( is_artefact(item) )
{
gain_piety(2);
relative_piety_gain = PIETY_LOTS;
}
else
{
gain_piety(1);
relative_piety_gain = PIETY_SOME;
}
}
if (item.base_type == OBJ_FOOD && item.sub_type == FOOD_CHUNK)
// No sacrifice value for chunks of flesh, since food
// value goes towards decks of wonder.
;
else if (item.base_type == OBJ_CORPSES)
{
#if DEBUG_GIFTS || DEBUG_CARDS || DEBUG_SACRIFICE
mprf(MSGCH_DIAGNOSTICS, "Corpse mass is %d",
item_mass(item));
#endif
you.sacrifice_value[item.base_type] += item_mass(item);
}
else
you.sacrifice_value[item.base_type] += value;
break;
case GOD_OKAWARU:
case GOD_MAKHLEB:
if (item.base_type == OBJ_CORPSES
|| value >= random2(200)
|| (player_under_penance() && value >= random2(5)))
{
gain_piety(1);
relative_piety_gain = PIETY_SOME;
}
break;
case GOD_SIF_MUNA:
if (value >= 150) // no point in saccing stacks to Sif
{
gain_piety(1 + random2(3));
relative_piety_gain = PIETY_SOME;
}
break;
case GOD_KIKUBAAQUDGHA:
case GOD_TROG:
case GOD_SHINING_ONE:
gain_piety(1);
relative_piety_gain = PIETY_SOME;
break;
default:
break;
}
return relative_piety_gain;
case GOD_NEMELEX_XOBEH:
if (you.attribute[ATTR_CARD_COUNTDOWN] && random2(800) < value)
{
you.attribute[ATTR_CARD_COUNTDOWN]--;
#if DEBUG_DIAGNOSTICS || DEBUG_CARDS || DEBUG_SACRIFICE
mprf(MSGCH_DIAGNOSTICS, "Countdown down to %d",
you.attribute[ATTR_CARD_COUNTDOWN]);
#endif
}
if (item.base_type == OBJ_CORPSES
&& one_chance_in(2+you.piety/50)
// Nemelex piety gain is fairly fast...at least
// when you have low piety.
|| value/2 >= random2(30 + you.piety/2))
{
if ( is_artefact(item) )
{
gain_piety(2);
relative_piety_gain = PIETY_LOTS;
}
else
{
gain_piety(1);
relative_piety_gain = PIETY_SOME;
}
}
if (item.base_type == OBJ_FOOD && item.sub_type == FOOD_CHUNK)
// No sacrifice value for chunks of flesh, since food
// value goes towards decks of wonder.
;
else if (item.base_type == OBJ_CORPSES)
{
#if DEBUG_GIFTS || DEBUG_CARDS || DEBUG_SACRIFICE
mprf(MSGCH_DIAGNOSTICS, "Corpse mass is %d",
item_mass(item));
#endif
you.sacrifice_value[item.base_type] += item_mass(item);
}
else
you.sacrifice_value[item.base_type] += value;
break;
const piety_gain_t gain = _sacrifice_one_item_noncount(item);
case GOD_OKAWARU:
case GOD_MAKHLEB:
if (mitm[i].base_type == OBJ_CORPSES
|| random2(value) >= 50
|| player_under_penance())
// Update piety gain if necessary.
if ( gain != PIETY_NONE )
gain_piety(1);
relative_piety_gain = PIETY_SOME;
}
break;
case GOD_SIF_MUNA:
if (value >= 150)
{
gain_piety(1 + random2(3));
relative_piety_gain = PIETY_SOME;
if ( relative_piety_gain == PIETY_NONE )
relative_piety_gain = gain;
else // some + some = lots
relative_piety_gain = PIETY_LOTS;
break;
case GOD_KIKUBAAQUDGHA:
case GOD_TROG:
case GOD_SHINING_ONE:
gain_piety(1);
relative_piety_gain = PIETY_SOME;
break;
default:
break;