diff options
Diffstat (limited to 'crawl-ref/source/kills.cc')
-rw-r--r-- | crawl-ref/source/kills.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/crawl-ref/source/kills.cc b/crawl-ref/source/kills.cc index fa7e0a3924..3d577cb283 100644 --- a/crawl-ref/source/kills.cc +++ b/crawl-ref/source/kills.cc @@ -279,8 +279,9 @@ void Kills::merge(const Kills &k) void Kills::record_kill(const struct monsters *mon) { - // Handle player ghosts separately. - if (mon->type == MONS_PLAYER_GHOST) + // Handle player ghosts separately, but don't handle summoned + // ghosts at all. {due} + if (mon->type == MONS_PLAYER_GHOST && !mon->is_summoned()) { record_ghost_kill(mon); return ; @@ -365,6 +366,9 @@ void Kills::load(reader& inf) void Kills::record_ghost_kill(const struct monsters *mon) { + // We should never get to this point, but just in case... {due} + if (mon->is_summoned()) + return; kill_ghost ghostk(mon); ghosts.push_back(ghostk); } @@ -482,7 +486,8 @@ void kill_def::merge(const kill_def &k, bool uniq) void kill_def::add_kill(const struct monsters *mon, unsigned short place) { kills++; - add_place(place, mons_is_unique(mon->type)); + // They're only unique if they aren't summoned. + add_place(place, mons_is_unique(mon->type) && !mon->is_summoned()); } void kill_def::add_place(unsigned short place, bool force) @@ -533,6 +538,9 @@ std::string kill_def::base_name(const kill_monster_desc &md) const case MONS_RAKSHASA_FAKE: name = "illusory " + name; break; + case MONS_MARA_FAKE: + name = "illusory " + name; + break; } return name; } @@ -622,7 +630,7 @@ kill_ghost::kill_ghost(const monsters *mon) // Check whether this is really a ghost, since we also have to handle // the Pandemonic demons. - if (mon->type == MONS_PLAYER_GHOST) + if (mon->type == MONS_PLAYER_GHOST && !mon->is_summoned()) ghost_name = "The ghost of " + get_ghost_description(*mon, true); } |