From 8d189addfcef4dd2065967b18e4223e5c2ecb385 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 18 Feb 2019 03:46:31 +0100 Subject: [PATCH] Scripts/VP: make sure that Air Current is getting respawned properly to prevent the issue that the Upwinds of Altairus are having multiple auras --- .../Kalimdor/VortexPinnacle/boss_altairus.cpp | 13 +++++-------- .../VortexPinnacle/instance_vortex_pinnacle.cpp | 17 ++++++++++++++--- .../Kalimdor/VortexPinnacle/vortex_pinnacle.h | 9 ++++++--- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/server/scripts/Kalimdor/VortexPinnacle/boss_altairus.cpp b/src/server/scripts/Kalimdor/VortexPinnacle/boss_altairus.cpp index 8d6a5c74bb8..01d3ee49062 100644 --- a/src/server/scripts/Kalimdor/VortexPinnacle/boss_altairus.cpp +++ b/src/server/scripts/Kalimdor/VortexPinnacle/boss_altairus.cpp @@ -42,14 +42,7 @@ enum Spells SPELL_DOWNWIND_OF_ALTAIRUS = 88286, // Twister - SPELL_TWISTER_AURA = 88313, -}; - -enum NPCs -{ - NPC_INVISIBLE_STALKER = 42844, - NPC_AIR_CURRENT = 47305, - NPC_TWISTER = 47342, + SPELL_TWISTER_AURA = 88313 }; enum Texts @@ -138,12 +131,16 @@ class boss_altairus : public CreatureScript me->SummonCreature(NPC_INVISIBLE_STALKER, InvisibleStalkerPos); if (IsHeroic()) + { for (int8 i = 0; i < POINT_TWISTER_MAX; i++) + { if (Creature* twister = me->SummonCreature(NPC_TWISTER, TwisterSpawnPoints[i])) { twister->SetHover(true); twister->GetMotionMaster()->MoveRandom(10.0f); } + } + } } diff --git a/src/server/scripts/Kalimdor/VortexPinnacle/instance_vortex_pinnacle.cpp b/src/server/scripts/Kalimdor/VortexPinnacle/instance_vortex_pinnacle.cpp index a5ce4001721..c80dc87c0b4 100644 --- a/src/server/scripts/Kalimdor/VortexPinnacle/instance_vortex_pinnacle.cpp +++ b/src/server/scripts/Kalimdor/VortexPinnacle/instance_vortex_pinnacle.cpp @@ -85,9 +85,9 @@ Position const SecondPrismGroundingFieldPoints[PrismGroundingFieldPoints] = ObjectData const creatureData[] = { - { NPC_ALTAIRUS, DATA_ALTAIRUS }, - { NPC_ASAAD, DATA_ASAAD }, - { 0, 0 } + { NPC_ALTAIRUS, DATA_ALTAIRUS }, + { NPC_ASAAD, DATA_ASAAD }, + { 0, 0 } // END }; class instance_vortex_pinnacle : public InstanceMapScript @@ -117,6 +117,9 @@ class instance_vortex_pinnacle : public InstanceMapScript case NPC_HOWLING_GALE: creature->SetReactState(REACT_PASSIVE); break; + case NPC_AIR_CURRENT: + airCurrentGUIDs.push_back(creature->GetGUID()); + break; default: break; } @@ -133,6 +136,13 @@ class instance_vortex_pinnacle : public InstanceMapScript if (state == DONE) SummonSlipstreams(type); + if (type == DATA_ALTAIRUS && (state == DONE || state == FAIL)) + { + for (ObjectGuid guid : airCurrentGUIDs) + if (Creature* air = instance->GetCreature(guid)) + air->DespawnOrUnsummon(0, 30s); + } + return true; } @@ -219,6 +229,7 @@ class instance_vortex_pinnacle : public InstanceMapScript } EventMap events; + GuidVector airCurrentGUIDs; }; InstanceScript* GetInstanceScript(InstanceMap* map) const override diff --git a/src/server/scripts/Kalimdor/VortexPinnacle/vortex_pinnacle.h b/src/server/scripts/Kalimdor/VortexPinnacle/vortex_pinnacle.h index aff8414d6bf..7203d4eba53 100644 --- a/src/server/scripts/Kalimdor/VortexPinnacle/vortex_pinnacle.h +++ b/src/server/scripts/Kalimdor/VortexPinnacle/vortex_pinnacle.h @@ -28,8 +28,8 @@ uint32 const PrismGroundingFieldPoints = 3; enum DataTypes { - // Encounter States/Boss GUIDs - DATA_GRAND_VIZIER_ERTAN, + // Encounter Data + DATA_GRAND_VIZIER_ERTAN = 0, DATA_ALTAIRUS, DATA_ASAAD, @@ -50,13 +50,16 @@ enum DataTypes enum Misc { + // Bosses NPC_GRAND_VIZIER_ERTAN = 43878, NPC_ALTAIRUS = 43873, NPC_ASAAD = 43875, + NPC_INVISIBLE_STALKER = 42844, + NPC_AIR_CURRENT = 47305, + NPC_TWISTER = 47342, NPC_SLIPSTREAM = 45455, NPC_SLIPSTREAM_LANDING_ZONE = 45504, - NPC_HOWLING_GALE = 45572, // Grounding Field