summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monplace.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/monplace.cc')
-rw-r--r--crawl-ref/source/monplace.cc17
1 files changed, 14 insertions, 3 deletions
diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc
index 42e0f9f9f2..c6866b3a7b 100644
--- a/crawl-ref/source/monplace.cc
+++ b/crawl-ref/source/monplace.cc
@@ -1115,12 +1115,23 @@ static int _place_monster_aux(const mgen_data &mg,
const bool summoned = mg.abjuration_duration >= 1
&& mg.abjuration_duration <= 6;
- if (mg.cls == MONS_DANCING_WEAPON && mg.number != 1) // ie not from spell
+ if (mg.cls == MONS_DANCING_WEAPON)
{
give_item(id, mg.power, summoned);
- if (menv[id].inv[MSLOT_WEAPON] != NON_ITEM)
- menv[id].colour = mitm[menv[id].inv[MSLOT_WEAPON]].colour;
+ // Dancing swords *always* have a weapon. Fail to
+ // create them otherwise.
+ const item_def* wpn = menv[id].weapon();
+ if (!wpn)
+ {
+ menv[id].destroy_inventory();
+ menv[id].reset();
+ return (-1);
+ }
+ else
+ {
+ menv[id].colour = wpn->colour;
+ }
}
else if (mons_class_itemuse(mg.cls) >= MONUSE_STARTING_EQUIPMENT)
{