aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2011-10-07 13:47:03 +0200
committerMachiavelli <machiavelli.trinity@gmail.com>2011-10-07 13:47:03 +0200
commit1eb5bf1a652bb44dae349457ae8ba5e46bea0624 (patch)
tree4cf070a8340a4d328f6d56951b374c56c520ed33 /src
parent51edc0620008975dd19e2666dc5f77bb5cbee877 (diff)
Scripts/Ulduar/Flame Leviathan: Make both dummy effects apply on the same target, and boost range of spell Pursue to 50000yds to prevent boss reseting during the encounter.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp25
2 files changed, 23 insertions, 6 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index a2d266dcf9f..cfa28080b2b 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -2990,7 +2990,6 @@ void SpellMgr::LoadDbcDataCorrections()
case 25425: // Shoot
case 45761: // Shoot
case 42611: // Shoot
- case 62374: // Pursued
case 61588: // Blazing Harpoon
case 52479: // Gift of the Harvester
spellInfo->MaxAffectedTargets = 1;
@@ -3177,6 +3176,9 @@ void SpellMgr::LoadDbcDataCorrections()
break;
// ULDUAR SPELLS
//
+ case 62374: // Pursued (Flame Leviathan)
+ spellInfo->EffectRadiusIndex[0] = 28; // 50000yd
+ break;
case 63342: // Focused Eyebeam Summon Trigger (Kologarn)
spellInfo->MaxAffectedTargets = 1;
break;
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 9272aa03c41..50f866ea920 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp
@@ -541,9 +541,6 @@ class boss_flame_leviathan : public CreatureScript
//! I also removed the spellInfo check
void DoBatteringRamIfReady()
{
- if (me->HasUnitState(UNIT_STAT_CASTING))
- return;
-
if (me->isAttackReady())
{
Unit* target = ObjectAccessor::GetUnit(*me, _pursueTarget);
@@ -1229,7 +1226,7 @@ public:
//bool OnGossipSelect(Player* player, Creature* creature, uint32 uiSender, uint32 uiAction)
//{
// player->PlayerTalkClass->ClearMenus();
- // switch (uiAction)
+ // switch(uiAction)
// {
// case GOSSIP_ACTION_INFO_DEF+1:
// if (player)
@@ -1660,10 +1657,25 @@ class spell_pursue : public SpellScriptLoader
void FilterTargets(std::list<Unit*>& targets)
{
- targets.remove_if (FlameLeviathanPursuedTargetSelector(GetCaster()));
+ targets.remove_if(FlameLeviathanPursuedTargetSelector(GetCaster()));
if (targets.empty())
+ {
if (Creature* caster = GetCaster()->ToCreature())
caster->AI()->EnterEvadeMode();
+ }
+ else
+ {
+ //! In the end, only one target should be selected
+ _target = SelectRandomContainerElement(targets);
+ FilterTargetsSubsequently(targets);
+ }
+ }
+
+ void FilterTargetsSubsequently(std::list<Unit*>& targets)
+ {
+ ASSERT(_target);
+ targets.clear();
+ targets.push_back(_target);
}
void HandleScript(SpellEffIndex /*eff*/)
@@ -1687,8 +1699,11 @@ class spell_pursue : public SpellScriptLoader
void Register()
{
OnUnitTargetSelect += SpellUnitTargetFn(spell_pursue_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
+ OnUnitTargetSelect += SpellUnitTargetFn(spell_pursue_SpellScript::FilterTargetsSubsequently, EFFECT_1, TARGET_UNIT_SRC_AREA_ENEMY);
OnEffectHitTarget += SpellEffectFn(spell_pursue_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
}
+
+ Unit* _target;
};
SpellScript* GetSpellScript() const