summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authorMatthew Cline <zelgadis@sourceforge.net>2009-12-05 20:01:16 -0800
committerMatthew Cline <zelgadis@sourceforge.net>2009-12-05 20:03:57 -0800
commit259fa0c5a67742c72a0952297789ae834b2ffe1d (patch)
treecba5a5e3c4fe8cf4f1690eecc4d7087f23b3f80f /crawl-ref
parentba0c7906057642dd0464f304e3afa1ad62a3c479 (diff)
downloadcrawl-ref-259fa0c5a67742c72a0952297789ae834b2ffe1d.tar.gz
crawl-ref-259fa0c5a67742c72a0952297789ae834b2ffe1d.zip
Sometimes give msg when mermaid stops beholding
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/behold.cc25
-rw-r--r--crawl-ref/source/spells4.cc5
2 files changed, 26 insertions, 4 deletions
diff --git a/crawl-ref/source/behold.cc b/crawl-ref/source/behold.cc
index 650c2f089f..b1235c6a85 100644
--- a/crawl-ref/source/behold.cc
+++ b/crawl-ref/source/behold.cc
@@ -107,6 +107,29 @@ void player::beholders_check_noise(int loudness)
}
}
+static void _removed_beholder_msg(const monsters* mon)
+{
+ if (!mon->alive() || mons_genus(mon->type) != MONS_MERMAID
+ || mon->submerged() || !you.see_cell(mon->pos()))
+ {
+ return;
+ }
+
+ if (you.can_see(mon))
+ {
+ if (silenced(you.pos()) || silenced(mon->pos()))
+ {
+ mprf("You can no longer hear %s's singing!",
+ mon->name(DESC_NOCAP_THE).c_str());
+ return;
+ }
+ mprf("%s stops singing.", mon->name(DESC_CAP_THE).c_str());
+ return;
+ }
+
+ mpr("Something stops singing.");
+}
+
// Update all beholders' status after changes.
void player::update_beholders()
{
@@ -120,6 +143,7 @@ void player::update_beholders()
{
beholders.erase(beholders.begin() + i);
removed = true;
+ _removed_beholder_msg(mon);
}
}
if (removed)
@@ -135,6 +159,7 @@ void player::update_beholder(const monsters *mon)
if (beholders[i] == mon->mindex())
{
beholders.erase(beholders.begin() + i);
+ _removed_beholder_msg(mon);
_removed_beholder();
return;
}
diff --git a/crawl-ref/source/spells4.cc b/crawl-ref/source/spells4.cc
index 3a87718b9e..5147acc2ea 100644
--- a/crawl-ref/source/spells4.cc
+++ b/crawl-ref/source/spells4.cc
@@ -755,10 +755,7 @@ void cast_silence(int pow)
you.increase_duration(DUR_SILENCE, 10 + random2avg(pow,2), 100);
if (you.beheld())
- {
- you.clear_beholders();
- mpr("You break out of your daze!", MSGCH_RECOVERY);
- }
+ you.update_beholders();
}
static int _discharge_monsters(coord_def where, int pow, int, actor *)