diff --git a/sql/updates/WIP/alakir.sql b/sql/updates/WIP/alakir.sql index 93420273ad..84dec88739 100644 --- a/sql/updates/WIP/alakir.sql +++ b/sql/updates/WIP/alakir.sql @@ -5,13 +5,21 @@ UPDATE `creature_template` SET `ScriptName`= 'boss_alakir', `InhabitType`= 12 WH UPDATE `creature_template` SET `InhabitType`= 4, `ScriptName`= 'npc_totfw_slipstream' WHERE `entry`= 47066; -- Lightning Strike Trigger UPDATE `creature_template` SET `InhabitType`= 4 WHERE `entry`= 48977; +-- Lightning Strike Trigger (Heroic Chain-Caster) +UPDATE `creature_template` SET `unit_flags`= 33554432, `unit_flags2`= 2048, `InhabitType`= 4, `flags_extra`= 128 WHERE `entry`= 50254; +-- Relentless Storm Initial Vehicle +UPDATE `creature_template` SET `InhabitType`= 4 WHERE `entry`= 48977; +-- Ice Storm +UPDATE `creature_template` SET `unit_flags`= 33554432, `flags_extra`= 128, `ScriptName`= 'npc_alakir_ice_storm' WHERE `entry`= 46734; +-- Ice Storm (Ice Patch Field) +UPDATE `creature_template` SET `unit_flags`= 33554432, `flags_extra`= 128 WHERE `entry`= 46973; -- Texts DELETE FROM `creature_text` WHERE `CreatureID`= 46753; INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES -(46753, 0, 0, 'The Conclave of Wind has dissipated. Your honorable conduct and determination have earned you the right to face me in battle, mortals. I await your assault on my platform! Come!', 14, 0, 100, 0, 0, 0, 50553, 7, 'Al''Akir - Conclave of Wind defeated'), -(46753, 1, 0, 'Your challenge is accepted, mortals! Know that you face Al''Akir, Elemental Lord of Air! You have no hope of defeating me!', 14, 0, 100, 0, 0, 0, 50565, 7, 'Al''Akir - Aggro'), -(46753, 2, 0, '|TINTERFACE\\ICONS\\Spell_Frost_WindWalkOn.blp:20|t%s begins to cast |cFFFF0000|Hspell:87770|h[Wind Burst]|h|r!', 41, 0, 100, 0, 0, 0, 49014, 7, 'Al''Akir - Announce Wind Burst'); +(46753, 0, 0, 'The Conclave of Wind has dissipated. Your honorable conduct and determination have earned you the right to face me in battle, mortals. I await your assault on my platform! Come!', 14, 0, 100, 0, 0, 0, 50553, 3, 'Al''Akir - Conclave of Wind defeated'), +(46753, 1, 0, 'Your challenge is accepted, mortals! Know that you face Al''Akir, Elemental Lord of Air! You have no hope of defeating me!', 14, 0, 100, 0, 0, 0, 50565, 3, 'Al''Akir - Aggro'), +(46753, 2, 0, '|TINTERFACE\\ICONS\\Spell_Frost_WindWalkOn.blp:20|t%s begins to cast |cFFFF0000|Hspell:87770|h[Wind Burst]|h|r!', 41, 0, 100, 0, 0, 0, 49014, 3, 'Al''Akir - Announce Wind Burst'); /* (46753, @GROUP_ID+3, @ID+, 'Winds! Obey my command!', 14, 0, 100, 0, 0, 0, UNKNOWN, 'Al''Akir'), @@ -21,10 +29,27 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan (46753, @GROUP_ID+7, @ID+, 'After every storm, comes the calm...', 14, 0, 100, 0, 0, 0, UNKNOWN, 'Al''Akir to Player'); */ +-- Spells +DELETE FROM `spell_script_names` WHERE `ScriptName` IN +('spell_alakir_lightning_strike_script', +'spell_alakir_lightning_strike_periodic', +'spell_alakir_lightning_strike_damage'); + +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(91326, 'spell_alakir_lightning_strike_script'), +(88238, 'spell_alakir_lightning_strike_periodic'), +(93854, 'spell_alakir_lightning_strike_periodic'), +(93855, 'spell_alakir_lightning_strike_periodic'), +(93856, 'spell_alakir_lightning_strike_periodic'), +(88214, 'spell_alakir_lightning_strike_damage'), +(93255, 'spell_alakir_lightning_strike_damage'); + -- Template Addons -DELETE FROM `creature_template_addon` WHERE `entry` IN (47066); +DELETE FROM `creature_template_addon` WHERE `entry` IN (47066, 50254, 46734); INSERT INTO `creature_template_addon` (`entry`, `auras`) VALUES -(47066, '87713'); +(47066, '87713'), +(50254, '93247'), +(46734, '87053'); -- Summon Groups DELETE FROM `creature_summon_groups` WHERE `summonerId`= 46753 AND `summonerType`= 0; @@ -38,3 +63,28 @@ INSERT INTO `creature_summon_groups` (`summonerId`, `summonerType`, `groupId`, ` DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`= 47066; INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES (47066, 87742, 1, 0); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceEntry` IN (91326, 87406) AND `SourceTypeOrReferenceId`= 13; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ScriptName`, `Comment`) VALUES +(13, 1, 91326, 0, 0, 31, 0, 3, 48977, 0, 0, 0, '', 'Lightning Strike - Target Lightning Strike Trigger'), +(13, 1, 87406, 0, 0, 31, 0, 3, 46766, 0, 0, 0, '', 'Ice Storm - Target Ice Storm Trigger'); + +-- Spawns +DELETE FROM `creature` WHERE `guid` IN (340413, 340414, 340415); +DELETE FROM `creature_addon` WHERE `guid` IN (340413, 340414, 340415); +SET @CGUID := 254727; +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+11; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES +(@CGUID+0, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -50.7691, 864.094, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+1, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -95.9913, 814.078, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+2, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -26.2274, 860.302, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+3, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -24.9896, 772.418, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+4, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -52.5764, 766.026, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+5, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -92.0469, 791.96, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+6, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -73.5833, 855.875, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+7, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -88.4149, 839.203, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+8, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -77.276, 775.408, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+9, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -6.08681, 790.281, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+10, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, -6.0625, 842.55, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654), -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) +(@CGUID+11, 46766, 754, 5638, 5638, 15, 169, 0, 0, 0, 0.385417, 816.236, 191.2083, 0, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 26654); -- Ice Storm Trigger (Area: Throne of the Four Winds - Difficulty: 6) (Auras: ) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 0d8de7d575..cba4f297bb 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -4838,6 +4838,7 @@ void SpellMgr::LoadSpellInfoCorrections() }); // Al'Akir + // Wind Burst ApplySpellFix({ 87770, @@ -4849,6 +4850,41 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AttributesEx2 |= SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS; }); + // Lightning Strike (Force Cast) + ApplySpellFix({ 91327 }, [](SpellInfo* spellInfo) + { + spellInfo->MaxAffectedTargets = 1; + }); + + // Lightning Strike (Visual) + ApplySpellFix({ 88230 }, [](SpellInfo* spellInfo) + { + spellInfo->AttributesEx2 |= SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS; + }); + + // Lightning Strike (Damage) + ApplySpellFix({ + 88214, + 93255, + 93256, + 93257, + }, [](SpellInfo* spellInfo) + { + spellInfo->ConeAngle = 60.0f; + }); + + // Lightning Strike (Periodic Aura) + ApplySpellFix({ 93247 }, [](SpellInfo* spellInfo) + { + spellInfo->DurationEntry = sSpellDurationStore.LookupEntry(387); // 16 seconds + }); + + // Lightning Strike (Heroic Chain-Caster Summon) + ApplySpellFix({ 93247 }, [](SpellInfo* spellInfo) + { + spellInfo->DurationEntry = sSpellDurationStore.LookupEntry(467); // 22 seconds + }); + // ENDOF THRONE OF THE FOUR WINDS SPELLS // Disenchant diff --git a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/boss_alakir.cpp b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/boss_alakir.cpp index 118fd942f0..f8f6a8a880 100644 --- a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/boss_alakir.cpp +++ b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/boss_alakir.cpp @@ -28,8 +28,26 @@ enum Spells { // Al'Akir - SPELL_WIND_BURST = 87770, - SPELL_LIGHTNING_STRIKE_TARGETING = 91327, + SPELL_WIND_BURST = 87770, + SPELL_LIGHTNING_STRIKE_TARGETING = 91327, + SPELL_ICE_STORM = 88239, + SPELL_ELECTROCUTE = 88427, + + // Lightning Strike Trigger + SPELL_LIGHTNING_STRIKE_SUMMON = 93250, + SPELL_LIGHTNING_STRIKE_PERIODIC = 88238, + + // Lightning Strike Trigger (Heroic Chain-Caster) + SPELL_LIGHTNING_STRIKE_DAMAGE = 88214, + SPELL_LIGHTNING_STRIKE_VISUAL = 88230, + + // Ice Storm + SPELL_ICE_STORM_PING = 87406, + SPELL_ICE_STORM_CHARGE = 87103, + + // Ice Storm (Damage) + SPELL_ICE_STORM_PRE_VISUAL = 87472, + SPELL_ICE_STORM_AURA = 87469, }; enum Events @@ -37,7 +55,11 @@ enum Events // Al'Akir EVENT_WIND_BURST = 1, EVENT_LIGHTNING_STRIKE, + EVENT_ICE_STORM, + // Ice Storm + EVENT_PING_ICE_STORM_TRIGGERS, + EVENT_ICE_STORM_CHARGE, }; enum Phases @@ -58,11 +80,30 @@ enum Texts SAY_ANNOUNCE_WIND_BURST = 2, }; +enum Data +{ + DATA_PRIMARY_LIGHTNING_STRIKE_TARGET = 0 +}; + enum SummonGroups { SUMMON_GROUP_SLIPSTREAM = 0 }; +class IceStormAuraEvent : public BasicEvent +{ + public: + IceStormAuraEvent(Creature* owner) : _owner(owner) { } + + bool Execute(uint64 /*time*/, uint32 /*diff*/) override + { + _owner->CastSpell(_owner, SPELL_ICE_STORM_AURA); + return true; + } + private: + Creature* _owner; +}; + struct boss_alakir : public BossAI { boss_alakir(Creature* creature) : BossAI(creature, DATA_ALAKIR) @@ -84,6 +125,8 @@ struct boss_alakir : public BossAI events.SetPhase(PHASE_ONE); events.ScheduleEvent(EVENT_WIND_BURST, 23s, 0, PHASE_ONE); + events.ScheduleEvent(EVENT_LIGHTNING_STRIKE, 9s, 0, PHASE_ONE); + events.ScheduleEvent(EVENT_ICE_STORM, 5s, 0, PHASE_ONE); } void Reset() @@ -132,6 +175,13 @@ struct boss_alakir : public BossAI void SpellHitTarget(Unit* target, SpellInfo const* spell) override { + switch (spell->Id) + { + case 0: + break; + default: + break; + } } void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override @@ -147,11 +197,29 @@ struct boss_alakir : public BossAI case NPC_SLIPSTREAM: summon->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); break; + case NPC_ICE_STORM: + summon->CastSpell(summon, SPELL_ICE_STORM_PRE_VISUAL); + summon->m_Events.AddEvent(new IceStormAuraEvent(summon), summon->m_Events.CalculateTime(3500)); + break; default: break; } } + ObjectGuid GetGUID(int32 type) const override + { + if (type == DATA_PRIMARY_LIGHTNING_STRIKE_TARGET) + return _primaryLightningStrikeTarget; + + return ObjectGuid::Empty; + } + + void SetGUID(ObjectGuid const& guid, int32 type) override + { + if (type == DATA_PRIMARY_LIGHTNING_STRIKE_TARGET) + _primaryLightningStrikeTarget = guid; + } + uint32 GetData(uint32 type) const override { return 0; @@ -173,17 +241,195 @@ struct boss_alakir : public BossAI { case EVENT_WIND_BURST: Talk(SAY_ANNOUNCE_WIND_BURST); - DoCastAOE(SPELL_WIND_BURST); - events.Repeat(26s, 29s); + //DoCastAOE(SPELL_WIND_BURST); + events.Repeat(26s); + break; + case EVENT_LIGHTNING_STRIKE: + DoCastAOE(SPELL_LIGHTNING_STRIKE_TARGETING); + events.Repeat(8s); + break; + case EVENT_ICE_STORM: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 70.0f, true, 0)) + DoCast(target, SPELL_ICE_STORM); + events.Repeat(16s); + break; default: break; } } DoMeleeAttackIfReady(); } + +private: + ObjectGuid _primaryLightningStrikeTarget; +}; + +struct npc_alakir_ice_storm : public ScriptedAI +{ + npc_alakir_ice_storm(Creature* creature) : ScriptedAI(creature), _instance(me->GetInstanceScript()) { } + + void IsSummonedBy(Unit* /*summoner*/) override + { + _events.ScheduleEvent(EVENT_PING_ICE_STORM_TRIGGERS, 1s); + } + + void SpellHitTarget(Unit* target, SpellInfo const* spell) override + { + if (spell->Id == SPELL_ICE_STORM_PING) + _iceStormPositions.push_back(target->GetPosition()); + } + + void MovementInform(uint32 /*type*/, uint32 pointId) override + { + if (pointId == EVENT_CHARGE) + _events.ScheduleEvent(EVENT_ICE_STORM_CHARGE, 1s); + } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_PING_ICE_STORM_TRIGGERS: + DoCastAOE(SPELL_ICE_STORM_PING); + _events.ScheduleEvent(EVENT_ICE_STORM_CHARGE, 500ms); + break; + case EVENT_ICE_STORM_CHARGE: + { + Creature* alakir = _instance->GetCreature(DATA_ALAKIR); + if (!alakir) + break; + + Position* pos = &alakir->GetPosition(); + pos->SetOrientation(alakir->GetAngle(me)); + pos->RelocateOffset({ 0.0f, 0.0f, 0.0f, float(M_PI / 2)}); + + std::vector possibleDestinations; + for (Position destination : _iceStormPositions) + { + if (pos->HasInArc(float(M_PI / 2), &destination, 0.0f)) + possibleDestinations.push_back(destination); + } + + if (!possibleDestinations.empty()) + { + Position dest = Trinity::Containers::SelectRandomContainerElement(possibleDestinations); + me->CastSpell(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ(), SPELL_ICE_STORM_CHARGE, true); + } + break; + } + default: + break; + } + } + } +private: + EventMap _events; + InstanceScript* _instance; + std::vector _iceStormPositions; +}; + +class spell_alakir_lightning_strike_script : public SpellScript +{ + PrepareSpellScript(spell_alakir_lightning_strike_script); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_LIGHTNING_STRIKE_SUMMON, + SPELL_LIGHTNING_STRIKE_PERIODIC + }); + } + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + Unit* caster = GetCaster(); + target->SetFacingToObject(caster); + target->SetOrientation(target->GetAngle(caster)); // Update orientation immediately for the following cast + + if (InstanceScript* instance = caster->GetInstanceScript()) + if (Creature* alakir = instance->GetCreature(DATA_ALAKIR)) + alakir->AI()->SetGUID(caster->GetGUID(), DATA_PRIMARY_LIGHTNING_STRIKE_TARGET); + + if (target->GetMap()->IsHeroic()) + target->CastSpell(target, SPELL_LIGHTNING_STRIKE_SUMMON, true); + else + target->CastSpell(target, SPELL_LIGHTNING_STRIKE_PERIODIC, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_alakir_lightning_strike_script::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +class spell_alakir_lightning_strike_periodic : public SpellScript +{ + PrepareSpellScript(spell_alakir_lightning_strike_periodic); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_LIGHTNING_STRIKE_DAMAGE, + SPELL_LIGHTNING_STRIKE_VISUAL + }); + } + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_LIGHTNING_STRIKE_DAMAGE, true); + + float orientation = caster->GetOrientation(); + float coneAngle = float(M_PI / 3); + float coneSegment = coneAngle / 10; + for (uint8 i = 0; i < 10; i++) + { + float angle = orientation - (coneAngle / 2) + (coneSegment * i); + float x = caster->GetPositionX() + cos(angle) * 60.0f; + float y = caster->GetPositionY() + sin(angle) * 60.0f; + float z = caster->GetPositionZ(); + caster->CastSpell(x, y, z, SPELL_LIGHTNING_STRIKE_VISUAL, true); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_alakir_lightning_strike_periodic::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +class spell_alakir_lightning_strike_damage : public SpellScript +{ + PrepareSpellScript(spell_alakir_lightning_strike_damage); + + void HandleDamageReuction(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + if (InstanceScript* instance = caster->GetInstanceScript()) + if (Creature* alakir = instance->GetCreature(DATA_ALAKIR)) + if (GetHitUnit()->GetGUID() != alakir->AI()->GetGUID(DATA_PRIMARY_LIGHTNING_STRIKE_TARGET)) + SetHitDamage(GetHitDamage() * 0.5f); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_alakir_lightning_strike_damage::HandleDamageReuction, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } }; void AddSC_boss_alakir() { RegisterThroneOfTheFourWindsCreatureAI(boss_alakir); + RegisterThroneOfTheFourWindsCreatureAI(npc_alakir_ice_storm); + + RegisterSpellScript(spell_alakir_lightning_strike_script); + RegisterSpellScript(spell_alakir_lightning_strike_periodic); + RegisterSpellScript(spell_alakir_lightning_strike_damage); } diff --git a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp index 4e77d83baf..6313f8fc1c 100644 --- a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp +++ b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp @@ -99,6 +99,11 @@ class instance_throne_of_the_four_winds : public InstanceMapScript case NPC_HURRICANE: _hurricaneGUIDs.push_back(creature->GetGUID()); break; + case NPC_LIGHTNING_STRIKE_TRIGGER_HEROIC_CHAIN_CASTER: + case NPC_ICE_STORM: + if (Creature* alakir = GetCreature(DATA_ALAKIR)) + alakir->AI()->JustSummoned(creature); + break; default: break; } diff --git a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h index 72f7be430b..2cafa20ef5 100644 --- a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h +++ b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h @@ -45,23 +45,25 @@ enum TFWDataTypes enum TFWCreatureIds { // Bosses - BOSS_ANSHAL = 45870, - BOSS_NEZIR = 45871, - BOSS_ROHASH = 45872, - BOSS_ALAKIR = 46753, + BOSS_ANSHAL = 45870, + BOSS_NEZIR = 45871, + BOSS_ROHASH = 45872, + BOSS_ALAKIR = 46753, // Creatures - NPC_WORLD_TRIGGER = 21252, - NPC_FALL_CATCHER = 45710, + NPC_WORLD_TRIGGER = 21252, + NPC_FALL_CATCHER = 45710, // Conclave of Wind - NPC_RAVENOUS_CREEPER = 45812, - NPC_TORNADO = 46207, - NPC_WORLD_TRIGGER_IMMUNE_TO_PC = 19871, - NPC_HURRICANE = 46419, + NPC_RAVENOUS_CREEPER = 45812, + NPC_TORNADO = 46207, + NPC_WORLD_TRIGGER_IMMUNE_TO_PC = 19871, + NPC_HURRICANE = 46419, // Al'Akir - NPC_SLIPSTREAM = 47066, + NPC_SLIPSTREAM = 47066, + NPC_LIGHTNING_STRIKE_TRIGGER_HEROIC_CHAIN_CASTER = 50254, + NPC_ICE_STORM = 46973, }; enum TFWSpells