summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/command.cc3
-rw-r--r--crawl-ref/source/dat/database/monspeak.txt2
-rw-r--r--crawl-ref/source/describe.cc25
-rw-r--r--crawl-ref/source/describe.h2
-rw-r--r--crawl-ref/source/directn.cc2
-rw-r--r--crawl-ref/source/initfile.cc8
-rw-r--r--crawl-ref/source/spells2.cc2
-rw-r--r--crawl-ref/source/spl-book.cc2
8 files changed, 36 insertions, 10 deletions
diff --git a/crawl-ref/source/command.cc b/crawl-ref/source/command.cc
index 501e8ada2a..9a6f33c56d 100644
--- a/crawl-ref/source/command.cc
+++ b/crawl-ref/source/command.cc
@@ -1172,7 +1172,8 @@ static bool _do_description(std::string key, std::string footer = "")
break;
}
- describe_monsters(mon);
+ const monsters m = mon;
+ describe_monsters(m);
return (false);
}
diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt
index fd21e04a20..9c5835a431 100644
--- a/crawl-ref/source/dat/database/monspeak.txt
+++ b/crawl-ref/source/dat/database/monspeak.txt
@@ -2268,7 +2268,7 @@ orc sorcerer
@_wizard_@
w:1
-@_generic_orc_speech@
+@_generic_orc_speech_@
w:1
__NONE
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc
index 1e72b06d1f..765b17c950 100644
--- a/crawl-ref/source/describe.cc
+++ b/crawl-ref/source/describe.cc
@@ -2328,9 +2328,9 @@ static std::string _describe_draconian(const monsters *mon)
// Contains sketchy descriptions of every monster in the game.
//
//---------------------------------------------------------------
-void describe_monsters(monsters& mons)
+void describe_monsters(const monsters& mons)
{
- // for undetected mimics describe mimicked item instead
+ // For undetected mimics describe mimicked item instead.
if (mons_is_mimic(mons.type) && !(mons.flags & MF_KNOWN_MIMIC))
{
item_def item;
@@ -2433,7 +2433,7 @@ void describe_monsters(monsters& mons)
break;
}
case MONS_PLAYER_GHOST:
- body << "The apparition of " << get_ghost_description(mons)
+ body << "$The apparition of " << get_ghost_description(mons)
<< ".$";
break;
@@ -2456,6 +2456,21 @@ void describe_monsters(monsters& mons)
break;
}
+ if (mons_behaviour_perceptible(&mons) && !mons_is_sleeping(&mons)
+ && !mons_is_confused(&mons)
+ && (mons_see_invis(&mons) || mons_sense_invis(&mons)))
+ {
+ if (you.invisible() && mons.foe == MHITYOU && !mons_is_fleeing(&mons))
+ {
+ if (mons_see_invis(&mons))
+ body << "$$It is watching you carefully.";
+ else
+ body << "$$It is looking in your general direction.";
+ }
+ else if (mons.foe == MHITNOT || mons_is_fleeing(&mons))
+ body << "$$It seems to be peering into the shadows.";
+ }
+
std::string symbol_suffix = "__";
symbol_suffix += symbol;
symbol_suffix += "_suffix";
@@ -2507,11 +2522,11 @@ void describe_monsters(monsters& mons)
mouse_control mc(MOUSE_MODE_MORE);
if (Options.tutorial_left)
- tutorial_describe_monster(static_cast<const monsters*>(&mons));
+ tutorial_describe_monster(&mons);
if (getch() == 0)
getch();
-} // end describe_monsters
+}
// Describes the current ghost's previous owner. The caller must
// prepend "The apparition of" or whatever and append any trailing
diff --git a/crawl-ref/source/describe.h b/crawl-ref/source/describe.h
index 66c0275b46..2e00c44c99 100644
--- a/crawl-ref/source/describe.h
+++ b/crawl-ref/source/describe.h
@@ -67,7 +67,7 @@ void inscribe_item( item_def &item, bool proper_prompt );
/* ***********************************************************************
* called from: command - direct
* *********************************************************************** */
-void describe_monsters(monsters &mons);
+void describe_monsters(const monsters &mons);
// last updated 12 Jun 2008 {jpeg}
/* ***********************************************************************
diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc
index 233853d2f4..15a4905ca2 100644
--- a/crawl-ref/source/directn.cc
+++ b/crawl-ref/source/directn.cc
@@ -1219,7 +1219,7 @@ void full_describe_square(const coord_def &c)
if (mid != NON_MONSTER && player_monster_visible(&menv[mid]))
{
// First priority: monsters.
- describe_monsters(menv[mid]);
+ describe_monsters(static_cast<const monsters>(menv[mid]));
}
else if (oid != NON_ITEM)
{
diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc
index 947065149b..503f2911f1 100644
--- a/crawl-ref/source/initfile.cc
+++ b/crawl-ref/source/initfile.cc
@@ -261,12 +261,16 @@ static int _str_to_weapon( const std::string &str )
return (WPN_SHORT_SWORD);
else if (str == "mace")
return (WPN_MACE);
+ else if (str == "ankus")
+ return (WPN_ANKUS);
else if (str == "spear")
return (WPN_SPEAR);
else if (str == "trident")
return (WPN_TRIDENT);
else if (str == "hand axe" || str == "handaxe")
return (WPN_HAND_AXE);
+ else if (str == "unarmed" || str == "claws")
+ return (WPN_UNARMED);
else if (str == "random")
return (WPN_RANDOM);
@@ -281,12 +285,16 @@ std::string weapon_to_str( int weapon )
return "short sword";
case WPN_MACE:
return "mace";
+ case WPN_ANKUS:
+ return "ankus";
case WPN_SPEAR:
return "spear";
case WPN_TRIDENT:
return "trident";
case WPN_HAND_AXE:
return "hand axe";
+ case WPN_UNARMED:
+ return "claws";
case WPN_RANDOM:
default:
return "random";
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc
index 47101e47e0..2736a57266 100644
--- a/crawl-ref/source/spells2.cc
+++ b/crawl-ref/source/spells2.cc
@@ -681,9 +681,11 @@ void cast_toxic_radiance(void)
if (static_cast<int>(message.length()) < get_number_of_cols() - 2)
mpr(message.c_str());
else
+ {
// Exclamation mark to suggest that a lot of creatures were
// affected.
mpr("The monsters around you are poisoned!");
+ }
}
}
diff --git a/crawl-ref/source/spl-book.cc b/crawl-ref/source/spl-book.cc
index 0ab544910f..2a1b9bf5a3 100644
--- a/crawl-ref/source/spl-book.cc
+++ b/crawl-ref/source/spl-book.cc
@@ -1244,7 +1244,7 @@ bool learn_spell(int book)
}
// You can always memorise selective amnesia:
- if (you.spell_no == 21 && specspell != SPELL_SELECTIVE_AMNESIA)
+ if (you.spell_no >= 21 && specspell != SPELL_SELECTIVE_AMNESIA)
{
mpr("Your head is already too full of spells!");
return (false);