diff options
author | Matthew Cline <zelgadis@sourceforge.net> | 2009-10-21 13:21:20 -0700 |
---|---|---|
committer | Matthew Cline <zelgadis@sourceforge.net> | 2009-10-21 13:21:20 -0700 |
commit | c7a7fb4439a5f5006109abcd20cd0300f7d36827 (patch) | |
tree | 9a92c9a28570abc6488d58a032048e5f8b12c137 /crawl-ref/source/traps.cc | |
parent | 1995a2a6436f8a2d3216634f24d5ed76d97327e2 (diff) | |
download | crawl-ref-c7a7fb4439a5f5006109abcd20cd0300f7d36827.tar.gz crawl-ref-c7a7fb4439a5f5006109abcd20cd0300f7d36827.zip |
Don't disturb monsters witth their own sound
A monster making noise was causing an ME_DISTURB behaviour_event() for
itself, possibly causing it to get a new foe, which could cause strange
results if it switched foes during the middle of spell-casting when it
made noise from chanting. Now noisy() can accept a "who" parameter, in
which case the monster which caused the noise will ignore the noise.
This is done in all cases except for when a monster of animal or lower
intelligence sets off an alarm trap or does a spell miscast.
Diffstat (limited to 'crawl-ref/source/traps.cc')
-rw-r--r-- | crawl-ref/source/traps.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/crawl-ref/source/traps.cc b/crawl-ref/source/traps.cc index c0b3f22f5b..990e277e51 100644 --- a/crawl-ref/source/traps.cc +++ b/crawl-ref/source/traps.cc @@ -415,8 +415,14 @@ void trap_def::trigger(actor& triggerer, bool flat_footed) const char* message_here = "An alarm trap emits a blaring wail!"; const char* message_near = "You hear a blaring wail!"; const char* message_far = "You hear a distant blaring wail!"; - noisy(12, this->pos, (you_trigger ? message_here : - (in_sight ? message_near : message_far))); + const char* msg = (you_trigger ? message_here : + (in_sight ? message_near : message_far)); + // Monsters of normal or greater intelligence will realize that + // they were the one to set off the trap. + int source = !m ? you.mindex() : + mons_intel(m) >= I_NORMAL ? m->mindex() : -1; + + noisy(12, this->pos, msg, source); } break; |