summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/art-func.h37
1 files changed, 19 insertions, 18 deletions
diff --git a/crawl-ref/source/art-func.h b/crawl-ref/source/art-func.h
index a58c4e0bb7..f21d6ea3d3 100644
--- a/crawl-ref/source/art-func.h
+++ b/crawl-ref/source/art-func.h
@@ -683,46 +683,47 @@ static void _WYRMBANE_equip(item_def *item, bool *show_msgs, bool unmeld)
static void _WYRMBANE_melee_effects(item_def* weapon, actor* attacker,
actor* defender, bool mondied, int dam)
{
- if (is_dragonkind(defender) && !mondied)
+ if (!is_dragonkind(defender))
+ return;
+
+ // Since the target will become a DEAD MONSTER if it dies due to the extra
+ // damage to dragons, we need to grab this information now.
+ int hd = min(defender->as_monster()->hit_dice, 18);
+ string name = defender->name(DESC_THE);
+
+ if (!mondied)
{
mprf("<grey>%s %s!</grey>",
defender->name(DESC_THE).c_str(),
defender->conj_verb("convulse").c_str());
defender->hurt(attacker, 1 + random2(3*dam/2));
- }
- if (!mondied || !defender || !is_dragonkind(defender)
- || defender->is_summoned()
- || defender->is_monster()
- && testbits(defender->as_monster()->flags, MF_NO_REWARD))
- {
- return;
+ mondied = !defender->alive();
}
- if (defender->is_player())
+
+ if (!mondied || !defender || defender->is_summoned()
+ || (defender->is_monster()
+ && testbits(defender->as_monster()->flags, MF_NO_REWARD)))
{
- // can't currently happen even on a death blow
- mpr("<green>You see the lance glow as it kills you.</green>");
return;
}
+
// The cap can be reached by:
// * iron dragon, golden dragon, pearl dragon (18)
// * Xtahua (19)
// * bone dragon, Serpent of Hell (20)
// * Tiamat (22)
// * pghosts (up to 27)
- int hd = min(defender->as_monster()->hit_dice, 18);
dprf("Killed a drac with hd %d.", hd);
- bool boosted = false;
+
if (weapon->plus < hd)
{
weapon->plus++;
- boosted = true;
- }
- if (boosted)
- {
+
mprf("<green>The lance glows as it skewers %s.</green>",
- defender->name(DESC_THE).c_str());
+ name.c_str());
+
you.wield_change = true;
}
}