summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/religion.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-23 01:32:57 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-23 01:32:57 +0000
commit70b49eb0667159b6a079e8decd5dc37ddfcef60f (patch)
tree1d7803404eebb41c7dd5d0abee6a2e071c5b782c /crawl-ref/source/religion.cc
parent6da9dc107ac5c8eac196c44d61105d1e412c9761 (diff)
downloadcrawl-ref-70b49eb0667159b6a079e8decd5dc37ddfcef60f.tar.gz
crawl-ref-70b49eb0667159b6a079e8decd5dc37ddfcef60f.zip
Expand bless_follower() to allow explicitly picking the follower as well
as picking one randomly, fix a potential problem with the display of the blessing message, and add a piety-dependent chance that followers will be specifically blessed when gaining levels. Hook the last of these up to Beogh for now (since the random chance on piety gain occurs less and less often as piety goes up). TSO should also get this eventually. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3821 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/religion.cc')
-rw-r--r--crawl-ref/source/religion.cc29
1 files changed, 21 insertions, 8 deletions
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index bff047e0d2..b15bf4f23d 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -827,19 +827,32 @@ static bool blessing_healing(monsters *mon, bool extra)
return heal_monster(mon, mon->max_hit_points, extra);
}
+// Bless a follower within sight of the player.
void bless_follower(god_type god,
- bool (*suitable)(const monsters* mon))
+ bool (*suitable)(const monsters* mon),
+ monsters* follower)
{
+ // If there are no monsters (including followers) in sight, get out.
if (!there_are_monsters_nearby())
return;
- int monster = choose_random_nearby_monster(0, suitable);
+ monsters *mon;
- if (monster == NON_MONSTER)
- return;
+ // If a follower was specified, and it's suitable, pick it.
+ if (follower && suitable(follower))
+ mon = follower;
+ // Otherwise, pick a random follower.
+ else
+ {
+ int monster = choose_random_nearby_monster(0, suitable);
+
+ if (monster == NON_MONSTER)
+ return;
+
+ mon = &menv[monster];
+ }
- monsters* mon = &menv[monster];
- const char *blessed = mon->name(DESC_NOCAP_A).c_str();
+ const char *blessed = mon->name(DESC_NOCAP_THE).c_str();
const char *result;
int chance = random2(20);
@@ -906,8 +919,8 @@ void bless_follower(god_type god,
}
blessing_done:
- mprf(MSGCH_GOD, "%s blesses %s with %s.", god_name(god).c_str(),
- blessed, result);
+ snprintf(info, INFO_SIZE, " blesses %s with %s.", blessed, result);
+ simple_god_message(info);
}
static void do_god_gift(bool prayed_for)