git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7375 c06c8d41-db1a-0410-9941-cceddc491573
SA36K3OJ75PNVR2F4QAPNU2LUGFTVHNIAZVSXCBXBT2NLW2RTUPAC
QIBABNGBNE2IHO5K6IYOF2XTGBGUB6T3TNEPR4ML6Y32KJUGB2UQC
HHEQMWTLQUCVN6X3VPK5QE52UNSZG5KVJCJTJKPF2LBEVTSAKEFQC
V7VKAKOQDTFNNSV246CCIQMIHOYTWF6DTWO2VNERQCYARWCP7MQAC
4Y4BVQ57OFLX3AS5WQ476JYSVDXRPRTRJFREEY3HMXS53JDZSGVAC
W5N4OCBAXAMSJQXZ5ELP6MSQAPDWWINHH6WWWGR3YTJLB54LBZXQC
5G3BNY5AC56UJIA2ZQOENUJJECH2XO66MEU5FX7NEJVQOF3B47ZAC
4CAY6GVCRQWUZADPPCUPVSLRYSOYHRVIXISAWBG7RXMTXLKAQW5AC
EDUH6KPERERLEVR3ARID7KSTD5WTY5MLO7XPKYYDZLBTE53OVKXAC
EVAZZ7L2G3NWUUVG5YYFFVX2J5A5SQWQRNM7HVOG7HVZX7LZ2NHAC
PTRDP6NBP3ZM3PEF7J4WJPJ2GPV25TLDFJ6XQ24DYOU7W6YYZ2TQC
JSHUSNMOJRLZJF7EK5ETYH65G4C3YYFGLWTYIAH4KPVXKC5AUCDQC
35FHBDIH2RNGH3MQAFTCJMUTZPABFMLZTBY4WEISZAKYDLOQU2ZAC
WEUUIXFTUICBHZ65N7EIBJ3VYMTYFEWCQ2ED7PMTO2UBMUICHNVQC
YNPHNL4SCDSELDUFX23UZT4NVH3J3Z4IDAFGMTVCUGTKJYZHBYMQC
3EB4KPH75XXSFJY724VBTYUSPZTBBKZMEE2V47VWW6H2BEYDOYMQC
VK7T7J3IKTOVP7YHXPOWNYC2GC6MFEMU7O3ESQSB7PO7HQ7GCK6AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
NNQPJEMQAJC6V45OOHEX7OA54DE5IEQI73SJTS5O6PPU3KMHF4WQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
B3HWU2BEQQ4E6WKVTW3JQQJFMWTVW3XWKY6BHFNBRHSZPRCF2OTQC
IQGGFC563RBS7GDOACKCLXK752EE5RC3T6G5L6H446SXTMSA7T2AC
P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC
2H32CFFM2FNS63JJPNM2S6HMO543EX72GMPOU5GI6HTMQYPL6I3AC
BJPPSWEN35BG4KP3XTXPDMAJ2GAUMHXKHCNALAZ4B4OS6B3KDSUQC
3IJHKZOTXLU7B6F4UIKXCQCPXEVLKRX2M3VWAAPGRLL24IIP2T2QC
PVLLIAYFIAU4TQFBIP7B4ARIBUX2CVTSBQECEU6VTONJV4ANHVFAC
6L4EP4ZRWWYLT55PD5KTTJON5J2JB5VV5MWNHF5VPZQZ5BKEYZ4QC
NDKS43E4XVAU3FDY276OF5JW7E5SF6F5EJD2XLV5JLKZ5W6N554QC
PYRDMGIYU5BUMTGRTYHRKD2D7WULYWCVOU46TJ4R5NSVEZVCZTUQC
QCSLMPAVJIRPFKQRPQH2KGKHEWMVD3PD3EFEC3P5QM4Y5TMTDYMQC
J2EXARCZZISVWZOPIPATFLWBKQVY7UL3GQ5LSPLEEVSRIBIBSV5AC
HLDXVOZVU4R5WJWLRKRXXD4IB6URK5TJRLWZZTI4RYQXGJITPU3AC
FRJDHZKBOJX3LPWYDK426RBIQXNC6WFQXE556YFMMXJ2F53OW4JAC
R5HVRGDKUX6A2H4DRHGWFBC2P625VAJHDZTERDMLFVXWSZLMHKRAC
ZDJ2CMPHHVPWTVDMDALWOARI5PA22VZ4FXIWR465PKZ4RVQOPJJAC
UEGIR7RQHUYBINNXH75E4PEDA5XIVFDAC2MQ5H5J2ZFDNVPBC67QC
6PAG7GHXHIYXJPPTEK4KZQZT4CL2SJDAGTVIUDB4KK66PVSTWUMAC
MPQIZUHUAHOF2CKNTLSYCGMR7FIC3EPA2RHZIY6JOQKAS6H6YY4AC
DK362IHKSDADMUPD35NOTKM4WESQM37KG2PNOJRV2FGELDWULYPQC
KLBFYCPBHLKC5K3UYCZQ5ECWP7ECL6ZYLIBXZ7O466RLEI56A6RQC
CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC
LOJYD6QZRNLNDDZJKVBMKQIBPTKSRN2ETCYGNVV47M7L3QLUJUJAC
WHY6LRRJ5T2NSBE3IUCR4X3TOAH7TTK5NPUPUIFT7TPNJ6J4HBDAC
U5EDSMYL25OHBJYMJ2MBV7VC2P45BJ2WQVVHSG24OZCHWCOUIXHAC
QDBILCQHREAKSVXBJJGE2EPNR4ATTQWUZMV7BLJYZWWUI737TSKQC
WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC
KYVZGUJXV23ELA4CKPVQZO3NTJCODXMCWYAZJYWVWJVLPETNHLGQC
2Q3P7FHAAZRJ337GTR2ZLD72ECBUDJ42MROKVCNKNDV6CGMQOSYAC
3NRASCNNNVJPCVJTAEEWAFEQVHDWR7BKQNS3CGMR5J4TFEJIFD6AC
BSM7LVUI3SSHMQJDHUQB2EDNRCXK4IMGKJKDZXJC3XL4N5X3VVKAC
NDCVITU5R7TBEUC4FILNFRKWQGUNCJUGW5HA5KW3CQTU6AYRLYWQC
ENQRCBNN7MKP6FFQAZ62FYXEVWCRJB5747LTYMZGRGINXQL6HT5AC
TBLVONZGCKVUXW7NEG4NSDMFIIO6UZOG4FHTJGT6MKSSO3B5J46AC
ZUWTZESSQN2JSW3LVGGJ7A7JYSFUCZ2FCBD2XFOLENBBOP4J5BOQC
6D63Q5KX6WA26VKOOGJPQLKFPZVCGULYCQTU6HJMOOUB6RDQUWTQC
ODCWOILHAMEQQVMGVUU6PWRSMHAINWP3MYFMPVMQBQZ5RYKGO45AC
4YEAIFVCMFU6FLSLGNZQHA7YPMPVZVFAQMK726G6UBMWM7DHZODQC
IYDUDWPDA7JST3MVKYBAAX7GYDSM6FXXQ2QMMIKEDQLT4VXTHOUAC
5LDEEBB7DT4CORJZOAYLQFXNI7FOURUJGAKVDVX7YL745NNRW63AC
7VHG6TWBIZ64QGRE64HCF324J542YUXE724KANC3MC2FAC2DTWLAC
JM3SEYOSSVTS5BPBMEHOLIBCYMPZFDXAJ4JQN5DGIHZHZTC7IYZQC
264FLET5STFALEWUDOEFCR273Y5CY2WZDHL56WHZUAQ635RUN6MAC
ODC6BAHQUNDR3CUPXEFXSKSGRACPWCQSQF4XTUYBVTVVMDSDI7KQC
PKD2ZZF2LQ5WZJKTQD7WUTFD2CC34YDPANIXB4EBIDIBR22HS3JQC
OEM4F45F24KHESQR73Y6RA3BNLANV3WE623LK6ELMSDPA7LILSWAC
E42EFZ3RINKLTGOJJZAH2N5QF3P4S5NCO5T52HLXJRMBPP463HTAC
FIYBXLWALQINNQTHG2KNDUUTAQAZRDDLXW2XOVSKDKBADJ3XCJ4AC
ENOQQ6DEA6ECRNTBGYYNK7G3DFEILMKQBNKP4SUQIZW2L6HWVR7QC
CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC
T45QB5GRYMAKNE2QRUUA435BQUJCHPRBNBT7G2YLKCBXYGKFDJWQC
TFQQFUXNCKWDRDLMHZWXYQQS7CS5DHTLESFCOHIU7PIJ2VNFBAEQC
WVFKGV3AMOYUZ53MWH2RWRITRRCPKKNPTO7QASA5WVKWAUGDJ2OQC
VZUTMVHQCC54ILC5YOB6V5IWKPYOCXDAQR5LIPSLBAA5ZXMWLXLQC
P2OYYNPHIBGOLT4CRLNTTIXDN34EU2QCMFQJNLAMUAHQXZTEDPXQC
BEPZL7D7JJHJUUDCVLGJRKKWM7NUAC7X2SU5XJMEASE6YTB53P3AC
4LNX57GAARCBHAHC6JY73VFHAHV6B5DYUBPSF7RM6USDEAAMUR3QC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
6OPIH7ZQWB6PKTR4GEWHUE6BLUENR5ELHAC4TV5IVMRLGWUQYLXAC
simple_god_message(" forgives your inadvertent "
"blood-drinking, just this once.");
case GOD_SHINING_ONE:
if (!known)
{
simple_god_message(" forgives your inadvertent "
"blood-drinking, just this once.");
break;
}
penance = level;
// deliberate fall-through
case GOD_ZIN:
case GOD_ELYVILON:
if (!known)
{
simple_god_message(" forgives your inadvertent "
"blood-drinking, just this once.");
break;
}
piety_change = -2*level;
retval = true;
}
penance = level;
// deliberate fall-through
case GOD_ZIN:
case GOD_ELYVILON:
if (!known)
{
simple_god_message(" forgives your inadvertent "
"blood-drinking, just this once.");
default:
case DID_CANNIBALISM:
switch (you.religion)
{
case GOD_ZIN:
case GOD_SHINING_ONE:
case GOD_ELYVILON:
piety_change = -level;
penance = level;
ret = true;
break;
default:
case DID_CANNIBALISM:
switch (you.religion)
{
case GOD_ZIN:
case GOD_SHINING_ONE:
case GOD_ELYVILON:
piety_change = -level;
penance = level;
retval = true;
break;
default:
break;
}
// If you make some god like these acts, modify did_god_conduct call
// in beam.cc with god_likes_necromancy check or something similar
case DID_NECROMANCY:
case DID_UNHOLY:
case DID_ATTACK_HOLY:
switch (you.religion)
{
case GOD_ZIN:
case GOD_SHINING_ONE:
case GOD_ELYVILON:
if (!known && thing_done != DID_ATTACK_HOLY)
case DID_NECROMANCY:
case DID_UNHOLY:
case DID_ATTACK_HOLY:
switch (you.religion)
simple_god_message(" forgives your inadvertent unholy act, "
"just this once.");
case GOD_ZIN:
case GOD_SHINING_ONE:
case GOD_ELYVILON:
if (!known && thing_done != DID_ATTACK_HOLY)
{
simple_god_message(" forgives your inadvertent unholy act, "
"just this once.");
break;
}
piety_change = -level;
if (known || thing_done == DID_ATTACK_HOLY
&& victim->attitude != ATT_HOSTILE)
{
penance = level * ((you.religion == GOD_SHINING_ONE) ? 2
: 1);
}
retval = true;
break;
default:
penance = level * ((you.religion == GOD_SHINING_ONE) ? 2 : 1);
if (!known)
{
simple_god_message(" forgives your inadvertent holy act, "
"just this once.");
break;
}
retval = true;
piety_change = -level;
penance = level * 2;
simple_god_message(" forgives your inadvertent holy act, "
"just this once.");
break;
if (thing_done == DID_UNCHIVALRIC_ATTACK)
{
if (tso_unchivalric_attack_safe_monster(victim))
break;
if (!known)
{
simple_god_message(" forgives your inadvertent "
"dishonourable attack, just this "
"once.");
break;
}
}
retval = true;
piety_change = -level;
penance = level * 2;
case DID_UNCHIVALRIC_ATTACK:
case DID_POISON:
if (you.religion == GOD_SHINING_ONE)
{
if (thing_done == DID_UNCHIVALRIC_ATTACK)
case DID_ATTACK_NEUTRAL:
switch (you.religion)
case DID_ATTACK_NEUTRAL:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_ELYVILON:
if (!known)
{
simple_god_message(" forgives your inadvertent attack on a "
"neutral, just this once.");
default:
simple_god_message(" forgives your inadvertent attack on a "
"neutral, just this once.");
break;
if (!known)
{
simple_god_message(" forgives your inadvertent attack on "
"an ally, just this once.");
break;
}
piety_change = -level;
if (known)
penance = level * 3;
retval = true;
default:
case DID_FRIEND_DIED:
switch (you.religion)
{
case GOD_ELYVILON: // healer god cares more about this
if (you.penance[GOD_ELYVILON])
penance = 1; // if already under penance smaller bonus
else
penance = level;
// fall through
case GOD_ZIN: // in contrast to TSO, who doesn't mind martyrs
case GOD_OKAWARU:
piety_change = -level;
retval = true;
break;
default:
break;
}
case DID_ATTACK_FRIEND:
if (god_hates_attacking_friend(you.religion, victim))
{
if (!known)
case DID_DEDICATED_BUTCHERY: // a.k.a. field sacrifice
switch (you.religion)
piety_change = -level;
if (known)
penance = level * 3;
ret = true;
}
break;
case GOD_OKAWARU:
case GOD_MAKHLEB:
case GOD_TROG:
case GOD_BEOGH:
case GOD_LUGONU:
simple_god_message(" accepts your offering.");
retval = true;
if (random2(level + 10) > 5)
piety_change = 1;
break;
case DID_FRIEND_DIED:
switch (you.religion)
{
case GOD_ELYVILON: // healer god cares more about this
if (you.penance[GOD_ELYVILON])
penance = 1; // if already under penance smaller bonus
else
penance = level;
// fall through
case GOD_ZIN: // in contrast to TSO, who doesn't mind martyrs
case GOD_OKAWARU:
piety_change = -level;
ret = true;
break;
default:
default:
break;
}
case DID_DEDICATED_BUTCHERY: // a.k.a. field sacrifice
switch (you.religion)
{
case GOD_ELYVILON:
simple_god_message(" does not appreciate your butchering the dead "
"during prayer!");
ret = true;
piety_change = -10;
penance = 10;
break;
case DID_KILL_LIVING:
switch (you.religion)
{
case GOD_ELYVILON:
// killing only disapproved during prayer
if (you.duration[DUR_PRAYER])
{
simple_god_message(" does not appreciate your shedding "
"blood during prayer!");
retval = true;
piety_change = -level;
penance = level * 2;
}
break;
case GOD_OKAWARU:
case GOD_MAKHLEB:
case GOD_TROG:
case GOD_BEOGH:
case GOD_LUGONU:
simple_god_message(" accepts your offering.");
ret = true;
if (random2(level + 10) > 5)
piety_change = 1;
break;
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_OKAWARU:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_TROG:
case GOD_BEOGH:
case GOD_LUGONU:
if (god_hates_attacking_friend(you.religion, victim))
break;
case DID_KILL_LIVING:
switch (you.religion)
{
case GOD_ELYVILON:
// killing only disapproved during prayer
if (you.duration[DUR_PRAYER])
{
simple_god_message(" does not appreciate your shedding blood "
"during prayer!");
ret = true;
piety_change = -level;
penance = level * 2;
default:
break;
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_OKAWARU:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_TROG:
case GOD_BEOGH:
case GOD_LUGONU:
if (god_hates_attacking_friend(you.religion, victim))
case DID_KILL_UNDEAD:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_OKAWARU:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_LUGONU:
if (god_hates_attacking_friend(you.religion, victim))
break;
simple_god_message(" accepts your kill.");
retval = true;
// Holy gods are easier to please this way
if (random2(level + 18 - (is_good_god(you.religion) ? 0 :
you.experience_level / 2)) > 4)
piety_change = 1;
simple_god_message(" accepts your kill.");
ret = true;
if (random2(level + 18 - you.experience_level / 2) > 5)
piety_change = 1;
default:
break;
}
default:
break;
}
break;
case DID_KILL_DEMON:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_OKAWARU:
case GOD_MAKHLEB:
case GOD_TROG:
if (god_hates_attacking_friend(you.religion, victim))
break;
case DID_KILL_UNDEAD:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_OKAWARU:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_LUGONU:
if (god_hates_attacking_friend(you.religion, victim))
simple_god_message(" accepts your kill.");
retval = true;
// Holy gods are easier to please this way
if (random2(level + 18 - (is_good_god(you.religion) ? 0 :
you.experience_level / 2)) > 3)
piety_change = 1;
simple_god_message(" accepts your kill.");
ret = true;
// Holy gods are easier to please this way
if (random2(level + 18 - (is_good_god(you.religion) ? 0 :
you.experience_level / 2)) > 4)
piety_change = 1;
default:
break;
}
case DID_KILL_DEMON:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_OKAWARU:
case GOD_MAKHLEB:
case GOD_TROG:
if (god_hates_attacking_friend(you.religion, victim))
break;
case DID_KILL_CHAOTIC:
if (you.religion == GOD_ZIN
&& !god_hates_attacking_friend(you.religion, victim))
{
simple_god_message(" appreciates your killing of a spawn of "
"chaos.");
retval = true;
if (random2(level + 18) > 3)
piety_change = 1;
}
break;
simple_god_message(" accepts your kill.");
ret = true;
// Holy gods are easier to please this way
if (random2(level + 18 - (is_good_god(you.religion) ? 0 :
you.experience_level / 2)) > 3)
piety_change = 1;
case DID_KILL_PRIEST:
if (you.religion == GOD_BEOGH
&& !god_hates_attacking_friend(you.religion, victim))
{
simple_god_message(" appreciates your killing of a heretic "
"priest.");
retval = true;
if (random2(level + 10) > 5)
piety_change = 1;
}
}
break;
// Note that holy deaths are special, they are always noticed...
// If you or any friendly kills one, you'll get the credit or
// the blame.
case DID_KILL_HOLY:
case DID_HOLY_KILLED_BY_SERVANT:
switch (you.religion)
{
case GOD_ZIN:
case GOD_SHINING_ONE:
case GOD_ELYVILON:
if (testbits(victim->flags, MF_CREATED_FRIENDLY)
|| testbits(victim->flags, MF_WAS_NEUTRAL))
{
level *= 3;
penance = level;
}
piety_change = -level;
retval = true;
break;
case DID_KILL_NATURAL_EVIL:
if (you.religion == GOD_SHINING_ONE
&& !god_hates_attacking_friend(you.religion, victim))
{
simple_god_message(" accepts your kill.");
ret = true;
if (random2(level + 18) > 3)
piety_change = 1;
}
break;
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_MAKHLEB:
case GOD_LUGONU:
if (god_hates_attacking_friend(you.religion, victim))
break;
case DID_KILL_CHAOTIC:
if (you.religion == GOD_ZIN
&& !god_hates_attacking_friend(you.religion, victim))
{
simple_god_message(" appreciates your killing of a "
"spawn of chaos.");
ret = true;
if (random2(level + 18) > 3)
piety_change = 1;
}
break;
if (thing_done == DID_KILL_HOLY)
simple_god_message(" accepts your kill.");
else
simple_god_message(" accepts your collateral kill.");
retval = true;
if (random2(level + 18) > 2)
piety_change = 1;
case DID_KILL_PRIEST:
if (you.religion == GOD_BEOGH
&& !god_hates_attacking_friend(you.religion, victim))
{
simple_god_message(" appreciates your killing of a "
"heretic priest.");
ret = true;
if (random2(level + 10) > 5)
piety_change = 1;
}
break;
if (you.religion == GOD_YREDELEMNUL
&& thing_done == DID_KILL_HOLY)
{
simple_god_message(" appreciates your killing of a holy "
"being.");
retval = true;
if (random2(level + 10) > 5)
piety_change = 1;
}
break;
case DID_KILL_WIZARD:
if (you.religion == GOD_TROG
&& !god_hates_attacking_friend(you.religion, victim))
{
simple_god_message(" appreciates your killing of a magic user.");
ret = true;
if (random2(level + 10) > 5)
piety_change = 1;
}
break;
default:
break;
}
break;
// Note that holy deaths are special, they are always noticed...
// If you or any friendly kills one, you'll get the credit or the
// blame.
case DID_KILL_HOLY:
case DID_HOLY_KILLED_BY_SERVANT:
switch (you.religion)
{
case GOD_ZIN:
case GOD_SHINING_ONE:
case GOD_ELYVILON:
if (testbits(victim->flags, MF_CREATED_FRIENDLY)
|| testbits(victim->flags, MF_WAS_NEUTRAL))
// Undead slave is any friendly undead monster. Kiku and Yred pay
// attention to the undead, and both like the death of living
// things.
case DID_LIVING_KILLED_BY_UNDEAD_SLAVE:
switch (you.religion)
level *= 3;
penance = level;
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_LUGONU:
simple_god_message(" accepts your slave's kill.");
retval = true;
if (random2(level + 10 - you.experience_level/3) > 5)
piety_change = 1;
break;
default:
break;
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_MAKHLEB:
case GOD_LUGONU:
if (god_hates_attacking_friend(you.religion, victim))
// Servants are currently any friendly or charmed monster, excluding
// undead, which are handled above.
case DID_LIVING_KILLED_BY_SERVANT:
switch (you.religion)
{
case GOD_KIKUBAAQUDGHA: // note: reapers aren't undead
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_TROG:
case GOD_BEOGH:
case GOD_LUGONU:
simple_god_message(" accepts your collateral kill.");
retval = true;
if (random2(level + 10 - you.experience_level/3) > 5)
piety_change = 1;
simple_god_message(
make_stringf(" accepts your %skill.",
thing_done == DID_KILL_HOLY ? "" : "collateral ")
.c_str());
ret = true;
if (random2(level + 18) > 2)
piety_change = 1;
default:
break;
}
break;
simple_god_message(" appreciates your killing of a "
"holy being.");
ret = true;
if (random2(level + 10) > 5)
case GOD_SHINING_ONE:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_LUGONU:
simple_god_message(" accepts your collateral kill.");
retval = true;
if (random2(level + 10 - (is_good_god(you.religion) ? 0 :
you.experience_level/3)) > 5)
{
default:
case DID_DEMON_KILLED_BY_SERVANT:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_MAKHLEB:
case GOD_TROG:
simple_god_message(" accepts your collateral kill.");
retval = true;
if (random2(level + 10 - (is_good_god(you.religion) ? 0 :
you.experience_level/3)) > 5)
{
piety_change = 1;
}
break;
default:
break;
}
// Undead slave is any friendly undead monster. Kiku and Yred pay
// attention to the undead, and both like the death of living
// things.
case DID_LIVING_KILLED_BY_UNDEAD_SLAVE:
switch (you.religion)
{
case GOD_KIKUBAAQUDGHA:
case GOD_YREDELEMNUL:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_LUGONU:
simple_god_message(" accepts your slave's kill.");
ret = true;
if (random2(level + 10 - you.experience_level/3) > 5)
piety_change = 1;
break;
default:
break;
}
break;
case DID_NATURAL_EVIL_KILLED_BY_SERVANT:
if (you.religion == GOD_SHINING_ONE)
{
simple_god_message(" accepts your collateral kill.");
retval = true;
// Servants are currently any friendly or charmed monster, excluding
// undead, which are handled above.
case DID_LIVING_KILLED_BY_SERVANT:
switch (you.religion)
{
case GOD_KIKUBAAQUDGHA: // note: reapers aren't undead
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_TROG:
case GOD_BEOGH:
case GOD_LUGONU:
simple_god_message(" accepts your collateral kill.");
ret = true;
if (random2(level + 10 - you.experience_level/3) > 5)
piety_change = 1;
break;
default:
if (random2(level + 10) > 5)
piety_change = 1;
}
case DID_UNDEAD_KILLED_BY_SERVANT:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_VEHUMET:
case GOD_MAKHLEB:
case GOD_LUGONU:
simple_god_message(" accepts your collateral kill.");
ret = true;
if (random2(level + 10 - (is_good_god(you.religion) ? 0 :
you.experience_level/3)) > 5)
case DID_SPELL_MEMORISE:
if (you.religion == GOD_TROG)
case DID_DEMON_KILLED_BY_SERVANT:
switch (you.religion)
{
case GOD_SHINING_ONE:
case GOD_MAKHLEB:
case GOD_TROG:
simple_god_message(" accepts your collateral kill.");
ret = true;
if (random2(level + 10 - (is_good_god(you.religion) ? 0 :
you.experience_level/3)) > 5)
case DID_SPELL_CASTING:
if (you.religion == GOD_TROG)
}
break;
case DID_NATURAL_EVIL_KILLED_BY_SERVANT:
if (you.religion == GOD_SHINING_ONE)
{
simple_god_message(" accepts your collateral kill.");
ret = true;
if (random2(level + 10) > 5)
piety_change = 1;
}
break;
case DID_SPELL_MEMORISE:
if (you.religion == GOD_TROG)
{
penance = level * 10;
piety_change = -penance;
ret = true;
}
break;
case DID_SPELL_CASTING:
if (you.religion == GOD_TROG)
{
piety_change = -level;
penance = level * 5;
ret = true;
}
break;
case DID_SPELL_PRACTISE:
// Like CAST, but for skill advancement.
// Level is number of skill points gained... typically 10 * exerise,
// but may be more/less if the skill is at 0 (INT adjustment), or
// if the PC's pool is low and makes change.
if (you.religion == GOD_SIF_MUNA)
{
// Old curve: random2(12) <= spell-level, this is similar,
// but faster at low levels (to help ease things for low level
// Power averages about (level * 20 / 3) + 10 / 3 now. Also
// note that spell skill practise comes just after XP gain, so
// magical kills tend to do both at the same time (unlike melee).
// This means high level spells probably work pretty much like
// they used to (use spell, get piety).
piety_change = div_rand_round( level + 10, 80 );
case DID_SPELL_PRACTISE:
// Like CAST, but for skill advancement.
// Level is number of skill points gained...
// typically 10 * exercise, but may be more/less if the
// skill is at 0 (INT adjustment), or if the PC's pool is
// low and makes change.
if (you.religion == GOD_SIF_MUNA)
{
// Old curve: random2(12) <= spell-level, this is
// similar, but faster at low levels (to help ease
// things for low level spells). Power averages about
// (level * 20 / 3) + 10 / 3 now. Also note that spell
// skill practise comes just after XP gain, so magical
// kills tend to do both at the same time (unlike
// melee). This means high level spells probably work
// pretty much like they used to (use spell, get piety).
piety_change = div_rand_round(level + 10, 80);
// level == 0: stacked, deck not used up
// level == 1: used up or nonstacked
// level == 2: used up and nonstacked
// and there's a 1/3 chance of an additional bonus point
// for nonstacked cards.
int chance = 0;
switch (level)
case DID_CARDS:
if (you.religion == GOD_NEMELEX_XOBEH)
case 0: chance = 0; break;
case 1: chance = 40; break;
case 2: chance = 70; break;
default:
case 3: chance = 100; break;
}
piety_change = level;
retval = true;
// level == 0: stacked, deck not used up
// level == 1: used up or nonstacked
// level == 2: used up and nonstacked
// and there's a 1/3 chance of an additional bonus point
// for nonstacked cards.
int chance = 0;
switch (level)
{
case 0: chance = 0; break;
case 1: chance = 40; break;
case 2: chance = 70; break;
default:
case 3: chance = 100; break;
}
if (x_chance_in_y(chance, 100)
&& you.attribute[ATTR_CARD_COUNTDOWN])
{
you.attribute[ATTR_CARD_COUNTDOWN]--;
if (x_chance_in_y(chance, 100)
&& you.attribute[ATTR_CARD_COUNTDOWN])
{
you.attribute[ATTR_CARD_COUNTDOWN]--;
case DID_CAUSE_GLOWING:
case DID_DELIBERATE_MUTATING:
if (you.religion == GOD_ZIN)
{
if (!known && thing_done != DID_CAUSE_GLOWING)
case DID_CAUSE_GLOWING:
case DID_DELIBERATE_MUTATING:
if (you.religion == GOD_ZIN)
simple_god_message(" forgives your inadvertent chaotic act, "
"just this once.");
break;
if (!known && thing_done != DID_CAUSE_GLOWING)
{
simple_god_message(" forgives your inadvertent chaotic "
"act, just this once.");
break;
}
else
{
static long last_glowing_lecture = -1L;
if (last_glowing_lecture != you.num_turns)
{
simple_god_message(" does not appreciate the mutagenic "
"glow surrounding you!");
last_glowing_lecture = you.num_turns;
}
}
piety_change = -level;
retval = true;
static long last_glowing_lecture = -1L;
if (last_glowing_lecture != you.num_turns)
{
simple_god_message(" does not appreciate the mutagenic "
"glow surrounding you!");
last_glowing_lecture = you.num_turns;
}
piety_change = -level * 5;
if (level > 1)
penance = 5;
retval = true;
// level depends on intelligence: normal -> 1, high -> 2
// cannibalism is still worse
case DID_EAT_SOULED_BEING:
if (you.religion == GOD_ZIN)
{
piety_change = -level * 5;
if (level > 1)
penance = 5;
ret = true;
}
break;
case DID_DESTROY_ORCISH_IDOL:
if (you.religion == GOD_BEOGH)
{
piety_change = -level;
penance = level * 3;
retval = true;
}
break;
case DID_DESTROY_ORCISH_IDOL:
if (you.religion == GOD_BEOGH)
{
piety_change = -level;
penance = level * 3;
ret = true;
case DID_STABBING: // unused
case DID_STIMULANTS: // unused
case DID_EAT_MEAT: // unused
case DID_CREATE_LIFE: // unused
case DID_SPELL_NONUTILITY: // unused
case NUM_CONDUCTS:
break;
case DID_STABBING: // unused
case DID_STIMULANTS: // unused
case DID_EAT_MEAT: // unused
case DID_CREATE_LIFE: // unused
case DID_SPELL_NONUTILITY: // unused
case NUM_CONDUCTS:
break;
if (piety_change > 0)
gain_piety(piety_change);
else
_dock_piety(-piety_change, penance);
if (piety_change > 0)
gain_piety(piety_change);
else
_dock_piety(-piety_change, penance);