diff options
Diffstat (limited to 'crawl-ref/source/fight.cc')
-rw-r--r-- | crawl-ref/source/fight.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 7e702fd1a6..a47588edb9 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -4199,8 +4199,9 @@ void melee_attack::mons_apply_attack_flavour(const mon_attack_def &attk) void melee_attack::mons_perform_attack_rounds() { - const int nrounds = atk->has_hydra_multi_attack() ? atk->number : 4; - const coord_def pos = defender->pos(); + const int nrounds = atk->has_hydra_multi_attack() ? atk->number : 4; + const coord_def pos = defender->pos(); + const bool was_delayed = you_are_delayed(); // Melee combat, tell attacker to wield its melee weapon. atk->wield_melee_weapon(); @@ -4379,6 +4380,13 @@ void melee_attack::mons_perform_attack_rounds() if (def_copy) delete def_copy; + + // Inivislbe monster might have interrupted butchering. + if (was_delayed && defender->atype() == ACT_PLAYER && perceived_attack + && !attacker_visible) + { + handle_interrupted_swap(false, true); + } } bool melee_attack::mons_perform_attack() |