summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-03-14 20:51:20 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-03-14 20:51:20 +0000
commitf5c222adb9194161ee1a86d82781c850d66a222b (patch)
tree00d7519b137d71939d86dba123f80bd61da1f953
parent795bc0f140539c77568e5620284604bb7b7c8b3b (diff)
downloadcrawl-ref-f5c222adb9194161ee1a86d82781c850d66a222b.tar.gz
crawl-ref-f5c222adb9194161ee1a86d82781c850d66a222b.zip
* Fix tiles 'V' crashing for mimics and dancing weapons.
* Display wound/attitude overlays. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9480 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/directn.cc20
-rw-r--r--crawl-ref/source/invent.cc6
-rw-r--r--crawl-ref/source/menu.cc54
-rw-r--r--crawl-ref/source/tilereg.cc2
4 files changed, 77 insertions, 5 deletions
diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc
index 30432cd59a..c004d28f99 100644
--- a/crawl-ref/source/directn.cc
+++ b/crawl-ref/source/directn.cc
@@ -563,6 +563,7 @@ void full_describe_view()
std::vector<formatted_string> fss;
std::string str = get_monster_equipment_desc(list_mons[i], true,
DESC_CAP_A, true);
+
if (player_mesmerised_by(list_mons[i]))
str += ", keeping you mesmerised";
@@ -3041,10 +3042,25 @@ std::string get_monster_equipment_desc(const monsters *mon, bool full_desc,
if (print_attitude)
{
+ std::string str = "";
if (mons_friendly(mon))
- desc += " (friendly)";
+ str = "friendly";
else if (mons_neutral(mon))
- desc += " (neutral)";
+ str = "neutral";
+
+ if (mon->type == MONS_DANCING_WEAPON
+ || mons_is_known_mimic(mon))
+ {
+ if (!str.empty())
+ str += " ";
+
+ if (mon->type == MONS_DANCING_WEAPON)
+ str += "dancing weapon";
+ else
+ str += "mimic";
+ }
+ if (!str.empty())
+ desc += " (" + str + ")";
}
}
diff --git a/crawl-ref/source/invent.cc b/crawl-ref/source/invent.cc
index 616b348e5f..55b4cf3747 100644
--- a/crawl-ref/source/invent.cc
+++ b/crawl-ref/source/invent.cc
@@ -495,6 +495,12 @@ bool InvEntry::get_tiles(std::vector<tile_def>& tileset) const
tileset.push_back(tile_def(ch, TEX_DUNGEON));
tileset.push_back(tile_def(idx, TEX_DEFAULT));
+
+ // Needs to be displayed so as to not give away mimics in shallow water.
+ if (ch == TILE_DNGN_SHALLOW_WATER)
+ tileset.push_back(tile_def(TILE_MASK_SHALLOW_WATER, TEX_DEFAULT));
+ else if (ch == TILE_DNGN_SHALLOW_WATER_MURKY)
+ tileset.push_back(tile_def(TILE_MASK_SHALLOW_WATER_MURKY, TEX_DEFAULT));
}
int brand = tile_known_weapon_brand(*item);
if (brand)
diff --git a/crawl-ref/source/menu.cc b/crawl-ref/source/menu.cc
index 23f9829fd2..f760fd2c13 100644
--- a/crawl-ref/source/menu.cc
+++ b/crawl-ref/source/menu.cc
@@ -16,6 +16,7 @@ REVISION("$Rev$");
#include "macro.h"
#include "message.h"
#ifdef USE_TILE
+ #include "monstuff.h"
#include "mon-util.h"
#endif
#include "player.h"
@@ -704,7 +705,18 @@ bool MenuEntry::get_tiles(std::vector<tile_def>& tileset) const
ch = env.tile_flv(c).wall;
tileset.push_back(tile_def(ch, TEX_DUNGEON));
- tileset.push_back(tile_def(tileidx_monster_base(m), TEX_PLAYER));
+
+ if (m->type == MONS_DANCING_WEAPON)
+ {
+ item_def item = mitm[m->inv[MSLOT_WEAPON]];
+ tileset.push_back(tile_def(tileidx_item(item), TEX_DEFAULT));
+ tileset.push_back(tile_def(TILE_ANIMATED_WEAPON, TEX_DEFAULT));
+
+ }
+ else if (mons_is_mimic(m->type))
+ tileset.push_back(tile_def(tileidx_monster_base(m), TEX_DEFAULT));
+ else
+ tileset.push_back(tile_def(tileidx_monster_base(m), TEX_PLAYER));
if (!mons_flies(m))
{
@@ -720,6 +732,46 @@ bool MenuEntry::get_tiles(std::vector<tile_def>& tileset) const
tileset.push_back(tile_def(TILE_MASK_DEEP_WATER_MURKY, TEX_DEFAULT));
}
+ if (!monster_descriptor(m->type, MDSC_NOMSG_WOUNDS))
+ {
+ std::string damage_desc;
+ mon_dam_level_type damage_level;
+ mons_get_damage_level(m, damage_desc, damage_level);
+
+ switch (damage_level)
+ {
+ case MDAM_DEAD:
+ case MDAM_ALMOST_DEAD:
+ tileset.push_back(tile_def(TILE_MDAM_ALMOST_DEAD, TEX_DEFAULT));
+ break;
+ case MDAM_SEVERELY_DAMAGED:
+ tileset.push_back(tile_def(TILE_MDAM_SEVERELY_DAMAGED, TEX_DEFAULT));
+ break;
+ case MDAM_HEAVILY_DAMAGED:
+ tileset.push_back(tile_def(TILE_MDAM_HEAVILY_DAMAGED, TEX_DEFAULT));
+ break;
+ case MDAM_MODERATELY_DAMAGED:
+ tileset.push_back(tile_def(TILE_MDAM_MODERATELY_DAMAGED, TEX_DEFAULT));
+ break;
+ case MDAM_LIGHTLY_DAMAGED:
+ tileset.push_back(tile_def(TILE_MDAM_LIGHTLY_DAMAGED, TEX_DEFAULT));
+ break;
+ case MDAM_OKAY:
+ default:
+ // no flag for okay.
+ break;
+ }
+ }
+
+ if (mons_friendly_real(m))
+ tileset.push_back(tile_def(TILE_HEART, TEX_DEFAULT));
+ else if (mons_neutral(m))
+ tileset.push_back(tile_def(TILE_NEUTRAL, TEX_DEFAULT));
+ else if (mons_looks_stabbable(m))
+ tileset.push_back(tile_def(TILE_STAB_BRAND, TEX_DEFAULT));
+ else if (mons_looks_distracted(m))
+ tileset.push_back(tile_def(TILE_MAY_STAB_BRAND, TEX_DEFAULT));
+
return (true);
}
#endif
diff --git a/crawl-ref/source/tilereg.cc b/crawl-ref/source/tilereg.cc
index f4fc7ea097..a08cf54b79 100644
--- a/crawl-ref/source/tilereg.cc
+++ b/crawl-ref/source/tilereg.cc
@@ -537,9 +537,7 @@ void DungeonRegion::pack_foreground(unsigned int bg, unsigned int fg, int x, int
}
if (fg & TILE_FLAG_ANIM_WEP)
- {
m_buf_main.add(TILE_ANIMATED_WEAPON, x, y);
- }
if (bg & TILE_FLAG_UNSEEN && (bg != TILE_FLAG_UNSEEN || fg))
m_buf_main.add(TILE_MESH, x, y);