summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/kills.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/kills.cc')
-rw-r--r--crawl-ref/source/kills.cc16
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);
}