Scripts/Ulduar/Flame Leviathan: Properly cast spell Battering Ram. TODO: Fix spell immunity on target vehicles.
This commit is contained in:
@@ -235,6 +235,7 @@ class boss_flame_leviathan : public CreatureScript
|
|||||||
ASSERT(vehicle);
|
ASSERT(vehicle);
|
||||||
if (!me->isDead())
|
if (!me->isDead())
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
ActiveTowersCount = 4;
|
ActiveTowersCount = 4;
|
||||||
Shutdown = 0;
|
Shutdown = 0;
|
||||||
ActiveTowers = false;
|
ActiveTowers = false;
|
||||||
@@ -245,6 +246,8 @@ class boss_flame_leviathan : public CreatureScript
|
|||||||
Shutout = true;
|
Shutout = true;
|
||||||
Unbroken = true;
|
Unbroken = true;
|
||||||
|
|
||||||
|
_pursueTarget = NULL;
|
||||||
|
|
||||||
DoCast(SPELL_INVIS_AND_STEALTH_DETECT);
|
DoCast(SPELL_INVIS_AND_STEALTH_DETECT);
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
|
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
|
||||||
@@ -460,10 +463,14 @@ class boss_flame_leviathan : public CreatureScript
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//TODO: Fix this spell, gets applied on players who are on leviathan should be excluded?
|
|
||||||
/*if (me->IsWithinMeleeRange(me->getVictim())) //bugged spell casts on units that are boarded on leviathan
|
DoBatteringRamIfReady();
|
||||||
DoSpellAttackIfReady(SPELL_BATTERING_RAM);*/
|
}
|
||||||
//DoMeleeAttackIfReady();
|
|
||||||
|
void SpellHitTarget(Unit* target , SpellInfo const* spell)
|
||||||
|
{
|
||||||
|
if (spell->Id == SPELL_PURSUED)
|
||||||
|
_pursueTarget = target;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoAction(int32 const action)
|
void DoAction(int32 const action)
|
||||||
@@ -529,7 +536,25 @@ class boss_flame_leviathan : public CreatureScript
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Unit* SelectTarget()
|
private:
|
||||||
|
//! Copypasta from DoSpellAttackIfReady, only difference is the target - it cannot be selected trough getVictim this way -
|
||||||
|
//! I also removed the spellInfo check
|
||||||
|
void DoBatteringRamIfReady()
|
||||||
|
{
|
||||||
|
if (me->HasUnitState(UNIT_STAT_CASTING))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (me->isAttackReady())
|
||||||
|
{
|
||||||
|
if (me->IsWithinCombatRange(_pursueTarget, 30.0f))
|
||||||
|
{
|
||||||
|
DoCast(_pursueTarget, SPELL_BATTERING_RAM);
|
||||||
|
me->resetAttackTimer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Unit* _pursueTarget;
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI(Creature* creature) const
|
CreatureAI* GetAI(Creature* creature) const
|
||||||
|
|||||||
Reference in New Issue
Block a user