summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-29 01:17:56 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-29 01:17:56 +0000
commitceb1c2e2b5c916de83891236f0a8e0b4fe6c985d (patch)
tree61eb096fa79f789b5a8173c3bd51071df5896b25
parent4329e91d1f1a753e5994e6d298d46606ba9cdca2 (diff)
downloadcrawl-ref-ceb1c2e2b5c916de83891236f0a8e0b4fe6c985d.tar.gz
crawl-ref-ceb1c2e2b5c916de83891236f0a8e0b4fe6c985d.zip
Like Beogh, have TSO randomly bless a follower when you kill evil (as an
alternative to the health restoration). Also, clean up TSO's other blessing routines again. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3930 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/monstuff.cc22
-rw-r--r--crawl-ref/source/religion.cc6
-rw-r--r--crawl-ref/source/religion.h2
3 files changed, 21 insertions, 9 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 7a6dd3ea75..d19d84e943 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -858,6 +858,14 @@ void monster_die(monsters *monster, killer_type killer, int i, bool silent)
&& (!player_under_penance() &&
random2(you.piety) >= piety_breakpoint(0))))
{
+ // For TSO, give health from killing evil, or randomly
+ // bless a follower.
+ if (you.religion == GOD_SHINING_ONE && one_chance_in(3)
+ && bless_follower())
+ {
+ break;
+ }
+
if (you.hp < you.hp_max)
{
mpr("You feel a little better.");
@@ -1000,8 +1008,6 @@ void monster_die(monsters *monster, killer_type killer, int i, bool silent)
}
}
- // Give a follower power from killing evil, or randomly
- // bless it.
if (you.religion == GOD_SHINING_ONE
&& mons_is_evil_or_unholy(monster)
&& (!player_under_penance()
@@ -1009,15 +1015,18 @@ void monster_die(monsters *monster, killer_type killer, int i, bool silent)
&& !invalid_monster_index(i))
{
monsters *mon = &menv[i];
- if (mon->alive() && mon->hit_points < mon->max_hit_points
- && !one_chance_in(3))
+
+ // Give a follower health from killing evil, or
+ // randomly bless it.
+ if (one_chance_in(3) && bless_follower())
+ break;
+
+ if (mon->alive() && mon->hit_points < mon->max_hit_points)
{
simple_monster_message(mon, " looks invigorated.");
heal_monster( mon, 1 + random2(monster->hit_dice / 4),
false );
}
- else
- bless_follower(mon);
}
// Randomly bless the follower who killed.
@@ -1029,6 +1038,7 @@ void monster_die(monsters *monster, killer_type killer, int i, bool silent)
&& !invalid_monster_index(i))
{
monsters *mon = &menv[i];
+
bless_follower(mon);
}
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index 94c7160d61..82c9c00e4a 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -979,7 +979,7 @@ static bool beogh_blessing_priesthood(monsters* mon)
// Bless the follower indicated in follower, if any. If there isn't
// one, bless a random follower within sight of the player.
-void bless_follower(monsters* follower,
+bool bless_follower(monsters* follower,
god_type god,
bool (*suitable)(const monsters* mon))
{
@@ -1030,7 +1030,7 @@ void bless_follower(monsters* follower,
}
}
- return;
+ return false;
}
mon = &menv[monster];
@@ -1164,6 +1164,8 @@ blessing_done:
snprintf(info, INFO_SIZE, " blesses %s with %s.", blessed.c_str(),
result.c_str());
simple_god_message(info);
+
+ return true;
}
static void do_god_gift(bool prayed_for)
diff --git a/crawl-ref/source/religion.h b/crawl-ref/source/religion.h
index df053ac3f0..7860cac099 100644
--- a/crawl-ref/source/religion.h
+++ b/crawl-ref/source/religion.h
@@ -74,7 +74,7 @@ bool tso_stab_safe_monster(const actor *act);
bool is_tso_follower(const monsters* mon);
bool is_orcish_follower(const monsters* mon);
bool is_follower(const monsters* mon);
-void bless_follower(monsters* follower = NULL,
+bool bless_follower(monsters* follower = NULL,
god_type god = you.religion,
bool (*suitable)(const monsters* mon) = is_follower);