summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/descript/ability.txt4
-rw-r--r--crawl-ref/source/dat/descript/spells.txt4
-rw-r--r--crawl-ref/source/describe.cc7
-rw-r--r--crawl-ref/source/monplace.cc43
-rw-r--r--crawl-ref/source/randart.cc2
5 files changed, 47 insertions, 13 deletions
diff --git a/crawl-ref/source/dat/descript/ability.txt b/crawl-ref/source/dat/descript/ability.txt
index 161a34deda..c76ef0d985 100644
--- a/crawl-ref/source/dat/descript/ability.txt
+++ b/crawl-ref/source/dat/descript/ability.txt
@@ -192,11 +192,11 @@ Summon the personification of Death, which, depending on your Invocations skill,
# Yredelemnul
Animate Remains
-Reanimate a single corpse or skeleton as a follower.
+Reanimate a single corpse or skeleton as a follower. Note that zombies and skeletons cannot leave the level they were created on.
%%%%
Animate Dead ability
-Reanimate all corpses and skeletons in your vicinity as followers.
+Reanimate all corpses and skeletons in your vicinity as followers. Note that zombies and skeletons cannot leave the level they were created on.
%%%%
Drain Life
diff --git a/crawl-ref/source/dat/descript/spells.txt b/crawl-ref/source/dat/descript/spells.txt
index 5a6d04af3e..0a20ccdabf 100644
--- a/crawl-ref/source/dat/descript/spells.txt
+++ b/crawl-ref/source/dat/descript/spells.txt
@@ -25,11 +25,11 @@ This spell causes aberrations to form in the caster's body, leaving the caster i
%%%%
Animate Dead
-This spell causes the dead to rise up and serve the caster; every corpse within a certain distance of the caster is affected. By means of this spell, powerful casters could press into service an army of the mindless undead.
+This spell causes the dead to rise up and serve the caster; every corpse within a certain distance of the caster is affected. By means of this spell, powerful casters could press into service an army of the mindless undead. Note that zombies are incapable of leaving the level they were created on.
%%%%
Animate Skeleton
-This spell raises an inert skeleton to a state of unlife.
+This spell raises an inert skeleton to a state of unlife. Skeletons cannot leave the level they were created on.
%%%%
Apportation
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc
index 3d7e0720fd..3764151469 100644
--- a/crawl-ref/source/describe.cc
+++ b/crawl-ref/source/describe.cc
@@ -2579,6 +2579,13 @@ void describe_monsters(const monsters& mons)
break;
}
+ if (!mons.can_use_stairs())
+ {
+ body << mons_pronoun(static_cast<monster_type>(mons.type),
+ PRONOUN_CAP, true)
+ << " is incapable of using stairs.$";
+ }
+
std::string symbol_suffix = "__";
symbol_suffix += symbol;
symbol_suffix += "_suffix";
diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc
index d7772d368a..58c43224b6 100644
--- a/crawl-ref/source/monplace.cc
+++ b/crawl-ref/source/monplace.cc
@@ -589,8 +589,33 @@ static monster_type _resolve_monster_type(monster_type mon_type,
return (mon_type);
}
}
- // Now pick a monster of the given branch and level.
- mon_type = pick_random_monster(place, *lev_mons, *lev_mons);
+
+ int tries = 0;
+ while (tries++ < 300)
+ {
+ // Now pick a monster of the given branch and level.
+ mon_type = pick_random_monster(place, *lev_mons, *lev_mons);
+
+ // Don't allow zombified monsters to be placed at stairs.
+ if (proximity != PROX_NEAR_STAIRS
+ || !mons_class_is_zombified(mon_type))
+ {
+ break;
+ }
+ }
+
+ if (proximity == PROX_NEAR_STAIRS && tries >= 300)
+ {
+ proximity = PROX_AWAY_FROM_PLAYER;
+
+ // Reset target level.
+ if (*stair_type == DCHAR_STAIRS_DOWN)
+ --*lev_mons;
+ else if (*stair_type == DCHAR_STAIRS_UP)
+ ++*lev_mons;
+
+ mon_type = pick_random_monster(place, *lev_mons, *lev_mons);
+ }
}
}
return (mon_type);
@@ -851,10 +876,10 @@ int place_monster(mgen_data mg, bool force_pos)
if (shoved)
{
msg += " shoves you out of the ";
- if (stair_type != DCHAR_ARCH)
- msg += "stairwell!";
- else
+ if (stair_type == DCHAR_ARCH)
msg += "gateway!";
+ else
+ msg += "stairwell!";
mpr(msg.c_str());
}
else if (!msg.empty())
@@ -863,9 +888,13 @@ int place_monster(mgen_data mg, bool force_pos)
msg += " comes up the stairs.";
else if (stair_type == DCHAR_STAIRS_UP)
msg += " comes down the stairs.";
- else
+ else if (stair_type == DCHAR_ARCH)
msg += " comes through the gate.";
- mpr(msg.c_str());
+ else
+ msg = "";
+
+ if (!msg.empty())
+ mpr(msg.c_str());
}
// Special case: must update the view for monsters created
diff --git a/crawl-ref/source/randart.cc b/crawl-ref/source/randart.cc
index 148cbafea4..482d732e12 100644
--- a/crawl-ref/source/randart.cc
+++ b/crawl-ref/source/randart.cc
@@ -1118,8 +1118,6 @@ void static _get_randart_properties(const item_def &item,
proprt[RAP_CURSED] = 1 + random2(5);
else
proprt[RAP_CURSED] = -1;
-
- mprf("Set RAP_CURSED to %d", proprt[RAP_CURSED]);
}
}