aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNyeriah <sarah.trysan@live.com>2014-12-29 04:16:53 -0200
committerNyeriah <sarah.trysan@live.com>2014-12-29 04:16:53 -0200
commit1d83ce39ddfa88974de63c2a3a9b52ed1fad1b77 (patch)
treee5a4866f05c31b20293e9952d200c3a2b3e88f49
parentc5a79fe37bceb967254f6b1124ef677ee4c0596c (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.cpp14
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);