summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spells1.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-07 23:04:11 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-04-07 23:04:11 +0000
commit3672d894756ece74eec3daa854a8e79cbe2f8f7d (patch)
treeebf4dbb9f810ae2ac9705b3e09950da65c0efc60 /crawl-ref/source/spells1.cc
parent0915163a542776844b0ce664221417f86c05245c (diff)
downloadcrawl-ref-3672d894756ece74eec3daa854a8e79cbe2f8f7d.tar.gz
crawl-ref-3672d894756ece74eec3daa854a8e79cbe2f8f7d.zip
For consistency, if a holy being is permanently neutralized via Zin's
Recite or Elyvilon's healing, run the conversion-on-sight routine so that they don't attack you. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@4120 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/spells1.cc')
-rw-r--r--crawl-ref/source/spells1.cc24
1 files changed, 15 insertions, 9 deletions
diff --git a/crawl-ref/source/spells1.cc b/crawl-ref/source/spells1.cc
index f01a93f4d1..9ba23622d2 100644
--- a/crawl-ref/source/spells1.cc
+++ b/crawl-ref/source/spells1.cc
@@ -701,17 +701,23 @@ static int _healing_spell( int healed, int target_x = -1, int target_y = -1)
if (you.religion == GOD_ELYVILON && _mons_hostile(monster))
{
simple_god_message(" supports your offer of peace.");
- simple_monster_message( monster, " turns neutral." );
- monster->attitude = ATT_NEUTRAL;
- monster->flags |= MF_WAS_NEUTRAL;
- // give half of the monster's xp
- unsigned int exp_gain = 0, avail_gain = 0;
- gain_exp( exper_value(monster) / 2 + 1, &exp_gain, &avail_gain );
- monster->flags |= MF_GOT_HALF_XP;
+ if (mons_is_holy(monster))
+ good_god_holy_attitude_change(monster);
+ else
+ {
+ simple_monster_message( monster, " turns neutral." );
+ monster->attitude = ATT_NEUTRAL;
+ monster->flags |= MF_WAS_NEUTRAL;
- // finally give a small piety return
- gain_piety(1 + random2(healed/15));
+ // give half of the monster's xp
+ unsigned int exp_gain = 0, avail_gain = 0;
+ gain_exp( exper_value(monster) / 2 + 1, &exp_gain, &avail_gain );
+ monster->flags |= MF_GOT_HALF_XP;
+
+ // finally give a small piety return
+ gain_piety(1 + random2(healed/15));
+ }
}
else if (nothing_happens)
canned_msg(MSG_NOTHING_HAPPENS);