diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-23 01:32:57 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-23 01:32:57 +0000 |
commit | 70b49eb0667159b6a079e8decd5dc37ddfcef60f (patch) | |
tree | 1d7803404eebb41c7dd5d0abee6a2e071c5b782c /crawl-ref/source/religion.cc | |
parent | 6da9dc107ac5c8eac196c44d61105d1e412c9761 (diff) | |
download | crawl-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.cc | 29 |
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) |