diff options
author | Adam Borowski <kilobyte@angband.pl> | 2010-07-30 15:09:59 +0200 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2010-07-30 18:45:16 +0200 |
commit | 4817bb3d806b3156bea1d2bc2b648f04bb0e04e5 (patch) | |
tree | 54d5234b45870325645aa33199895f88bc35d92d /crawl-ref/source/kills.cc | |
parent | b580da2a2d2bce87a2528ecd05a3ed7dfb50a480 (diff) | |
download | crawl-ref-4817bb3d806b3156bea1d2bc2b648f04bb0e04e5.tar.gz crawl-ref-4817bb3d806b3156bea1d2bc2b648f04bb0e04e5.zip |
Fix the lua kills report for monsters with non-ascii glyphs.
Diffstat (limited to 'crawl-ref/source/kills.cc')
-rw-r--r-- | crawl-ref/source/kills.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/crawl-ref/source/kills.cc b/crawl-ref/source/kills.cc index 3e7e179da5..9feaffd9e3 100644 --- a/crawl-ref/source/kills.cc +++ b/crawl-ref/source/kills.cc @@ -20,6 +20,7 @@ #include "kills.h" #include "clua.h" #include "options.h" +#include "viewchar.h" #define KILLS_MAJOR_VERSION 4 #define KILLS_MINOR_VERSION 1 @@ -860,8 +861,8 @@ static int kill_lualc_symbol(lua_State *ls) kill_exp *ke = static_cast<kill_exp*>( lua_touserdata(ls, 1) ); if (ke) { - unsigned char ch = ke->monnum != -1? - mons_char(ke->monnum) : + wchar_t ch = ke->monnum != -1? + mons_char(ke->monnum) : is_ghost(ke)? 'p' : '&'; if (ke->monnum == MONS_PROGRAM_BUG) @@ -871,20 +872,21 @@ static int kill_lualc_symbol(lua_State *ls) { case kill_monster_desc::M_ZOMBIE: case kill_monster_desc::M_SKELETON: + ch = mons_char(mons_zombie_size(ke->monnum) == Z_SMALL ? + MONS_ZOMBIE_SMALL : MONS_ZOMBIE_LARGE); + break; case kill_monster_desc::M_SIMULACRUM: - ch = mons_zombie_size(ke->monnum) == Z_SMALL ? 'z' : 'Z'; + ch = mons_char(mons_zombie_size(ke->monnum) == Z_SMALL ? + MONS_SIMULACRUM_SMALL : MONS_SIMULACRUM_LARGE); break; case kill_monster_desc::M_SPECTRE: - ch = 'W'; + ch = mons_char(MONS_SPECTRAL_THING); break; default: break; } - char s[2]; - s[0] = (char) ch; - s[1] = 0; - lua_pushstring(ls, s); + lua_pushstring(ls, stringize_glyph(ch).c_str()); return 1; } return 0; |