proper message is always displayed when they happen.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4677 c06c8d41-db1a-0410-9941-cceddc491573
I2ZR5QRPQEDTO5V5ILIJUA5KIEOGJY3BRHRNPXS5BJG7GXTBXJSQC
P2OYYNPHIBGOLT4CRLNTTIXDN34EU2QCMFQJNLAMUAHQXZTEDPXQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
PEXHYCLRKDG2PVOJ3DDCMUZUK2HTSPU5WKH4MODFL4FTBQRQTY5QC
JDZCDMUCQ7VENYVLB62KQWUIRGABID37OKATOKCBUPCDL7W75NPAC
A3QXTQ5RKIGDWIKA7JHIGIHQE5EVGO6WNNWF6XY2VZNP67JESDHQC
KOBNLIHIAHSV6IPA3R4HI2KB5HY5XIIJQPJ2GBETYB5AK73NAKJQC
TN2D3PHU7VSGUND2BDIC2F4U6O2HFSV3JXLF7HMYYMY7GZXM6IFAC
IT3NSSLR756K7TZ7S7DOMS7DZUVGIFS5EAR22PEERAF5ZRBICV4AC
RW5UFKOQ5JYDVX7LEW26AWEFKFA4M5PTAIXWRCVESEQK3WKTY6VQC
UFKLHUYL7WAQ3CI3D42T4C6KBGAUR63DSQAUQTTZG7GJMXSCVJWAC
SQFABNVS6OSVRBMJAIV6KIIZW2TYIOQ5BZGLPYJ6BPFD2HMRH4MAC
BWHU47MJ7KAVKMKMRBVYLOHUCASSNVCGPC3SPMNBAC7DLI6XX2YQC
FDMKFGCTWKKSBP3B5VE4BSVFHUVNX5BSDFRVD6E735DHPVYEQFGQC
CQD3RU44235F3CYFDZBC3JRT2H3AE7PXJNVBBMCRF65Q5LPA3EHQC
// If you don't worship a good god, you make all
// non-hostile holy beings hostile. If you do worship a
// good god, you make all non-hostile evil and unholy beings
// hostile.
else if ((mons_is_holy(monster) &&
!is_good_god(you.religion)) ||
(mons_is_evil_or_unholy(monster) &&
is_good_god(you.religion)))
// If you don't worship a good god, you make all non-hostile
// holy beings hostile.
else if (!is_good_god(you.religion))
return apply_to_all_dungeons(_moral_beings_on_level_attitude_change);
return apply_to_all_dungeons(_holy_beings_on_level_attitude_change);
}
static bool _evil_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_evil_or_unholy(monster))
{
#ifdef DEBUG_DIAGNOSTICS
mprf(MSGCH_DIAGNOSTICS, "Evil 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 (is_good_god(you.religion))
{
// If you worship a good god, you make all non-hostile
// evil and unholy beings hostile.
if (monster->attitude != ATT_HOSTILE)
{
monster->attitude = ATT_HOSTILE;
behaviour_event(monster, ME_ALERT, MHITYOU);
// for now CREATED_FRIENDLY/WAS_NEUTRAL stays
success = true;
}
}
}
}
return success;
}
static bool _evil_beings_attitude_change()
{
return apply_to_all_dungeons(_evil_beings_on_level_attitude_change);