diff --git a/zone/spells.cpp b/zone/spells.cpp index b4e001ad20..a6232a9e64 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -4916,11 +4916,13 @@ void Mob::Stun(int duration) if(stunned && stunned_timer.GetRemainingTime() > uint32(duration)) return; - if(IsValidSpell(casting_spell_id) && !spells[casting_spell_id].uninterruptable) { + auto spell_id = bardsong ? bardsong : casting_spell_id; + + if(IsValidSpell(spell_id) && !spells[spell_id].uninterruptable) { int persistent_casting = spellbonuses.PersistantCasting + itembonuses.PersistantCasting + aabonuses.PersistantCasting; if(zone->random.Int(0,99) > persistent_casting) - InterruptSpell(); + InterruptSpell(spell_id); } if(duration > 0) @@ -4976,9 +4978,11 @@ void Mob::Mesmerize() { mezzed = true; - if (casting_spell_id) - InterruptSpell(); + auto spell_id = bardsong ? bardsong : casting_spell_id; + if (spell_id) + InterruptSpell(spell_id); + StopNavigation(); }