summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/descript/spells.txt2
-rw-r--r--crawl-ref/source/mon-util.cc11
-rw-r--r--crawl-ref/source/monplace.cc3
3 files changed, 9 insertions, 7 deletions
diff --git a/crawl-ref/source/dat/descript/spells.txt b/crawl-ref/source/dat/descript/spells.txt
index cca950f851..1a7d4f8734 100644
--- a/crawl-ref/source/dat/descript/spells.txt
+++ b/crawl-ref/source/dat/descript/spells.txt
@@ -145,7 +145,7 @@ This spell removes poison from the caster's system.
%%%%
Death Channel
-This spell raises living creatures slain by the caster into a state of unliving slavery as spectral things. Note that spectral things are incapable of leaving the level they were created on.
+This spell raises living creatures slain by the caster into a state of unliving slavery as spectral things. Note that spectral things can follow you beyond the level they were created on.
%%%%
Death's Door
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index c8fa4f589c..9f6e384654 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -1038,12 +1038,12 @@ bool mons_can_be_zombified(const monsters *mon)
bool mons_class_can_use_stairs(int mc)
{
- return (!mons_class_is_zombified(mc));
+ return (!mons_class_is_zombified(mc) || mc == MONS_SPECTRAL_THING);
}
bool mons_can_use_stairs(const monsters *mon)
{
- return (!mons_is_zombified(mon) || mons_enslaved_intact_soul(mon));
+ return (mons_class_can_use_stairs(mon->type));
}
bool mons_enslaved_body_and_soul(const monsters *mon)
@@ -3491,8 +3491,8 @@ bool monster_shover(const monsters *m)
return (false);
}
- // Monsters too stupid to use stairs (e.g. zombified undead) are also
- // disqualified.
+ // Monsters too stupid to use stairs (e.g. non-spectral zombified undead)
+ // are also disqualified.
if (!mons_can_use_stairs(m))
return (false);
@@ -3535,7 +3535,8 @@ bool monster_senior(const monsters *m1, const monsters *m2, bool fleeing)
// If they're the same holiness, monsters smart enough to use stairs can
// push past monsters too stupid to use stairs (so that e.g. non-zombified
- // undead can push past zombified undead).
+ // or spectral zombified undead can push past non-spectral zombified
+ // undead).
if (m1->holiness() == m2->holiness() && mons_can_use_stairs(m1)
&& !mons_can_use_stairs(m2))
{
diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc
index 5f19d2318b..406219e0bc 100644
--- a/crawl-ref/source/monplace.cc
+++ b/crawl-ref/source/monplace.cc
@@ -630,7 +630,8 @@ static monster_type _resolve_monster_type(monster_type mon_type,
mon_type = pick_random_monster(place, *lev_mons, *lev_mons);
// Don't allow monsters too stupid to use stairs (e.g.
- // zombified undead) to be placed at stairs.
+ // non-spectral zombified undead) to be placed near
+ // stairs.
if (proximity != PROX_NEAR_STAIRS
|| mons_class_can_use_stairs(mon_type))
{