and make them become enraged by your lawful aura if you start worshipping Zin.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5750 c06c8d41-db1a-0410-9941-cceddc491573
ENQRCBNN7MKP6FFQAZ62FYXEVWCRJB5747LTYMZGRGINXQL6HT5AC
WA57DRAZPLTIY6LVTYBBOP2NFFJ3FZJYOJL4CQC24BL4H66RR3PAC
UEI5JAVCMN7Y2SACTEZPZSNFJWOJTC55G24Q6LKQCT4XNDH5ZQIAC
4SWAT5KCKQV527NKELAXFQ5XA4Q5HONQXD4VBXMUZNPVPQKPCPNAC
DJZK6ZJ42EUTFF2OBOL5YYFPMLXCTDNGE2RF73ZJ4N54FEIHBGPQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
I2ZR5QRPQEDTO5V5ILIJUA5KIEOGJY3BRHRNPXS5BJG7GXTBXJSQC
P2OYYNPHIBGOLT4CRLNTTIXDN34EU2QCMFQJNLAMUAHQXZTEDPXQC
NDCVITU5R7TBEUC4FILNFRKWQGUNCJUGW5HA5KW3CQTU6AYRLYWQC
T45QB5GRYMAKNE2QRUUA435BQUJCHPRBNBT7G2YLKCBXYGKFDJWQC
4A3Y2BLAYXUFAAT6EK5GYT5ZIMQXQX64ZVJCKNPGEZY7IGTUWWIAC
2OPTG7FWHLKQYXJIL4BDN3UW67CV3SKILQE6NTOA3YBYI5V7SQSQC
XL76SC3IJRRKWPA6L3BWJWCMZBM4Q5VYOLTWUG3XGM22MO6PFE3AC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC
Z37LPWKBVEMAADJPZDI3DIPZTEIE4HI456I5PM2XTAG74X237XFQC
T6TL6NTIOBYNUIONGK3JFZJ5ONWV6S4CTIRDC5JMKMCBGG5IY3EAC
5JS3QSE3EIXSBVI4DATH2EIFD7QN3POAFEUM7MK4NRMPH5JOPAAQC
INWKDE6QMV7PUWMZ65IZTUF4WB2G2OR2Q2NPTNID4Y3NVD7JWN3AC
D2T32ZGFCJFZVJW7H2AEV3QD7Z4ZYKWEPOZTAFTAPDUTBGXNJXNAC
YZXHBEKWQPY4BTKG5FFGLP3AIRBQSTKQVLJJHWKQEA3HTN4UHDYQC
RX6575DZOHRUXQUZH34YZGPZJF4STUPLBQDIVTINA2L6LVCKRIGQC
LC6XAT35IRP2B5MFZSVROVFOOPLDIXUFWKSMIKP2TXC7WQSL66MQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
FLDIOEND63BONSOAIZ7WYAVNQLJ35O3VFY3PTVRWWYOJL4JXREHAC
WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC
static bool _chaotic_beings_on_level_attitude_change()
{
bool success = false;
for ( int i = 0; i < MAX_MONSTERS; ++i )
{
monsters *monster = &menv[i];
if (monster->type != -1
&& mons_is_chaotic(monster))
{
#ifdef DEBUG_DIAGNOSTICS
mprf(MSGCH_DIAGNOSTICS, "Chaotic attitude changing: %s on level %d, branch %d",
monster->name(DESC_PLAIN).c_str(),
static_cast<int>(you.your_level),
static_cast<int>(you.where_are_you));
#endif
// If you worship Zin, you make all non-hostile chaotic
// beings hostile.
if (is_lawful_god(you.religion))
{
if (monster->attitude != ATT_HOSTILE
|| monster->has_ench(ENCH_CHARM))
{
monster->attitude = ATT_HOSTILE;
monster->del_ench(ENCH_CHARM, true);
behaviour_event(monster, ME_ALERT, MHITYOU);
// for now CREATED_FRIENDLY/WAS_NEUTRAL stays
success = true;
}
}
}
}
return success;
}
static bool _chaotic_beings_attitude_change()
{
return apply_to_all_dungeons(_chaotic_beings_on_level_attitude_change);
}
// evil and unholy beings hostile, and when you start worshipping
// Trog, you make all non-hostile magic users hostile.
// evil and unholy beings hostile; when you start worshipping Zin,
// you make all non-hostile chaotic beings hostile; and when you
// start worshipping Trog, you make all non-hostile magic users
// hostile.
static bool _is_mons_mutator_or_rotter(monsters *mons)
{
if (mons->has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER))
return true;
if (mons->has_spell(SPELL_POLYMORPH_OTHER))
return true;
const int attk_flavour = mons_attack_spec(mons, 0).flavour;
return (attk_flavour == AF_MUTATE || attk_flavour == AF_ROT);
}
bool is_mons_poisoner(monsters *mons)
{
if (mons_corpse_effect(mons->type) == CE_POISONOUS)
return true;
const int attk_flavour = mons_attack_spec(mons, 0).flavour;
return (attk_flavour == AF_POISON
|| attk_flavour == AF_POISON_NASTY
|| attk_flavour == AF_POISON_MEDIUM
|| attk_flavour == AF_POISON_STRONG
|| attk_flavour == AF_POISON_STR);
}
bool mons_is_chaotic(const monsters *mon)
{
if (mon->has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER))
return true;
if (mon->has_spell(SPELL_POLYMORPH_OTHER))
return true;
const int attk_flavour = mons_attack_spec(mon, 0).flavour;
return (attk_flavour == AF_MUTATE || attk_flavour == AF_ROT);
}
bool mons_is_poisoner(const monsters *mon)
{
if (mons_corpse_effect(mon->type) == CE_POISONOUS)
return true;
const int attk_flavour = mons_attack_spec(mon, 0).flavour;
return (attk_flavour == AF_POISON
|| attk_flavour == AF_POISON_NASTY
|| attk_flavour == AF_POISON_MEDIUM
|| attk_flavour == AF_POISON_STRONG
|| attk_flavour == AF_POISON_STR);
}