summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/menu.cc
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 /crawl-ref/source/menu.cc
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
Diffstat (limited to 'crawl-ref/source/menu.cc')
-rw-r--r--crawl-ref/source/menu.cc54
1 files changed, 53 insertions, 1 deletions
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