summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/database/shout.txt18
-rw-r--r--crawl-ref/source/monspeak.cc17
-rw-r--r--crawl-ref/source/monstuff.cc16
-rw-r--r--crawl-ref/source/view.cc7
4 files changed, 28 insertions, 30 deletions
diff --git a/crawl-ref/source/dat/database/shout.txt b/crawl-ref/source/dat/database/shout.txt
index 3a6a06fea1..e2cf21c1a3 100644
--- a/crawl-ref/source/dat/database/shout.txt
+++ b/crawl-ref/source/dat/database/shout.txt
@@ -263,25 +263,25 @@ Wanderer player ghost
%%%%
'a'
-@The_monster@ twitches @possessive@ antennae in your direction.
+VISUAL:@The_monster@ twitches @possessive@ antennae in your direction.
%%%%
'cap-B'
-@The_monster@ twitches @possessive@ antennae in your direction.
+VISUAL:@The_monster@ twitches @possessive@ antennae in your direction.
%%%%
# Giant spores have their own visual, this is only for the eyeball
# related ones.
'cap-G'
-@The_monster@ turns @possessive@ gaze towards you.
+VISUAL:@The_monster@ turns @possessive@ gaze towards you.
%%%%
'j'
-@The_monster@ swivels @possessive@ eye-stalks towards you.
+VISUAL:@The_monster@ swivels @possessive@ eye-stalks towards you.
%%%%
'cap-J'
-@The_monster@ quivers.
+VISUAL:@The_monster@ quivers.
########################################
# Shouts for specific monsters
########################################
@@ -290,7 +290,7 @@ Wanderer player ghost
# other 'G' monsters.
giant spore
-@The_monster@ waves @possessive@ rhizomes.
+VISUAL:@The_monster@ waves @possessive@ rhizomes.
%%%%
# Shadow imps and white imps copy imps.
imp
@@ -298,11 +298,11 @@ imp
# Shout one half the time, taunt the other half.
@__SHOUT@
-@The_monster@ @says@, "@imp_taunt@"
+SOUND:@The_monster@ @says@, "@imp_taunt@"
%%%%
moth of wrath
-@The_monster@'s fur bristles in rage as it notices you.
+VISUAL:@The_monster@'s fur bristles in rage as it notices you.
%%%%
shadow imp
@@ -318,5 +318,5 @@ white imp
Polyphemus
# This would also work for other monsters that are surrounded by allies.
-@The_monster@ shouts, "Attack, my pets! Attack!"
+SOUND:@The_monster@ shouts, "Attack, my pets! Attack!"
%%%%
diff --git a/crawl-ref/source/monspeak.cc b/crawl-ref/source/monspeak.cc
index 2e82194879..c956118664 100644
--- a/crawl-ref/source/monspeak.cc
+++ b/crawl-ref/source/monspeak.cc
@@ -749,7 +749,7 @@ void mons_speaks_msg(const monsters *monster, const std::string &msg,
// This function is a little bit of a problem for the message
// channels since some of the messages it generates are "fake"
- // warning to scare the player. In order to accomidate this
+ // warning to scare the player. In order to accomodate this
// intent, we're falsely categorizing various things in the
// function as spells and danger warning... everything else
// just goes into the talk channel -- bwr
@@ -795,21 +795,14 @@ void mons_speaks_msg(const monsters *monster, const std::string &msg,
// Except for VISUAL, none of the above influence these.
if (line == "__YOU_RESIST" && (!silence || param == "VISUAL"))
- {
canned_msg( MSG_YOU_RESIST );
- continue;
- }
else if (line == "__NOTHING_HAPPENS" && (!silence || param == "VISUAL"))
- {
canned_msg( MSG_NOTHING_HAPPENS );
- continue;
- }
else if (line == "__MORE" && (!silence || param == "VISUAL"))
- {
more();
- continue;
- }
-
- mpr(line.c_str(), msg_type);
+ else if (msg_type == MSGCH_TALK_VISUAL && !you.can_see(monster))
+ ; // do nothing
+ else
+ mpr(line.c_str(), msg_type);
}
}
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 32e3c578ce..3540f91167 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -8125,7 +8125,7 @@ static void _find_good_alternate_move(monsters *monster,
for (int mod = sdir, i = 0; i < 2; mod += inc, i++)
{
- int newdir = (dir + 8 + mod) % 8;
+ const int newdir = (dir + 8 + mod) % 8;
if (good_move[mon_compass[newdir].x+1][mon_compass[newdir].y+1])
{
dist[i] = distance(monster->pos()+mon_compass[newdir],
@@ -8133,11 +8133,13 @@ static void _find_good_alternate_move(monsters *monster,
}
else
{
- dist[i] = (mons_is_fleeing(monster)) ? (-FAR_AWAY)
- : FAR_AWAY;
+ dist[i] = (mons_is_fleeing(monster)) ? (-FAR_AWAY) : FAR_AWAY;
}
}
+ const int dir0 = ((dir + 8 + sdir) % 8);
+ const int dir1 = ((dir + 8 - sdir) % 8);
+
// Now choose.
if (dist[0] == dist[1] && abs(dist[0]) == FAR_AWAY)
continue;
@@ -8147,12 +8149,12 @@ static void _find_good_alternate_move(monsters *monster,
{
if (dist[0] >= dist[1] && dist[0] >= current_distance)
{
- mmov = mon_compass[((dir+8)+sdir)%8];
+ mmov = mon_compass[dir0];
break;
}
if (dist[1] >= dist[0] && dist[1] >= current_distance)
{
- mmov = mon_compass[((dir+8)-sdir)%8];
+ mmov = mon_compass[dir1];
break;
}
}
@@ -8160,12 +8162,12 @@ static void _find_good_alternate_move(monsters *monster,
{
if (dist[0] <= dist[1] && dist[0] <= current_distance)
{
- mmov = mon_compass[((dir+8)+sdir)%8];
+ mmov = mon_compass[dir0];
break;
}
if (dist[1] <= dist[0] && dist[1] <= current_distance)
{
- mmov = mon_compass[((dir+8)-sdir)%8];
+ mmov = mon_compass[dir1];
break;
}
}
diff --git a/crawl-ref/source/view.cc b/crawl-ref/source/view.cc
index a13194baa1..0e836ba0d9 100644
--- a/crawl-ref/source/view.cc
+++ b/crawl-ref/source/view.cc
@@ -1197,8 +1197,11 @@ void handle_monster_shouts(monsters* monster, bool force)
}
}
- msg = do_mon_str_replacements(msg, monster, s_type);
- msg::streams(channel) << msg << std::endl;
+ if (channel != MSGCH_TALK_VISUAL || you.can_see(monster))
+ {
+ msg = do_mon_str_replacements(msg, monster, s_type);
+ msg::streams(channel) << msg << std::endl;
+ }
}
const int noise_level = get_shout_noise_level(s_type);