diff options
author | Nyeriah <sarah.trysan@live.com> | 2014-12-29 04:16:53 -0200 |
---|---|---|
committer | Nyeriah <sarah.trysan@live.com> | 2014-12-29 04:16:53 -0200 |
commit | 1d83ce39ddfa88974de63c2a3a9b52ed1fad1b77 (patch) | |
tree | e5a4866f05c31b20293e9952d200c3a2b3e88f49 | |
parent | c5a79fe37bceb967254f6b1124ef677ee4c0596c (diff) |
Scripts/Ulduar: Fixes Flame Leviathan entering evade mode if Pursue returns no target
* Pursue is never cast on players at retail, however, being there without a vehicle doesn't prevent the boss from attacking you, nor does it enter evade mode.
Closes #11199
(cherry picked from commit 9671d513273867e62d520ec3d71b4c038802f5ab)
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index b6ac62257d0..4eeb1fac53c 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -548,6 +548,11 @@ class boss_flame_leviathan : public CreatureScript if (me->isAttackReady()) { Unit* target = ObjectAccessor::GetUnit(*me, _pursueTarget); + + // Pursue was unable to acquire a valid target, so get the current victim as target. + if (!target && me->GetVictim()) + target = me->GetVictim(); + if (me->IsWithinCombatRange(target, 30.0f)) { DoCast(target, SPELL_BATTERING_RAM); @@ -1648,7 +1653,7 @@ class FlameLeviathanPursuedTargetSelector bool operator()(WorldObject* target) const { - //! No players, only vehicles (@todo check if blizzlike) + //! No players, only vehicles. Pursue is never cast on players. Creature* creatureTarget = target->ToCreature(); if (!creatureTarget) return true; @@ -1698,12 +1703,7 @@ class spell_pursue : public SpellScriptLoader void FilterTargets(std::list<WorldObject*>& targets) { targets.remove_if(FlameLeviathanPursuedTargetSelector(GetCaster())); - if (targets.empty()) - { - if (Creature* caster = GetCaster()->ToCreature()) - caster->AI()->EnterEvadeMode(); - } - else + if (!targets.empty()) { //! In the end, only one target should be selected _target = Trinity::Containers::SelectRandomContainerElement(targets); |