diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-03-14 20:51:20 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-03-14 20:51:20 +0000 |
commit | f5c222adb9194161ee1a86d82781c850d66a222b (patch) | |
tree | 00d7519b137d71939d86dba123f80bd61da1f953 /crawl-ref/source/menu.cc | |
parent | 795bc0f140539c77568e5620284604bb7b7c8b3b (diff) | |
download | crawl-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.cc | 54 |
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 |