Scripts/VP: make sure that Air Current is getting respawned properly to prevent the issue that the Upwinds of Altairus are having multiple auras

This commit is contained in:
Ovahlord
2019-02-18 03:46:31 +01:00
parent 8b8568a76a
commit 8d189addfc
3 changed files with 25 additions and 14 deletions

View File

@@ -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);
}
}
}
}

View File

@@ -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

View File

@@ -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