fix(Scripts/TempleOfAhnQiraj): Added missing doors. (#12734)

Fixes #12712
This commit is contained in:
UltraNix
2022-08-27 14:46:32 +02:00
committed by GitHub
parent e01ec7533e
commit 022a90cff4
5 changed files with 73 additions and 0 deletions

View File

@@ -112,6 +112,8 @@ struct boss_skeram : public BossAI
{
_JustDied();
Talk(SAY_DEATH);
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_3), true);
}
else
me->RemoveCorpse();

View File

@@ -91,6 +91,8 @@ struct boss_twinemperorsAI : public BossAI
me->ClearUnitState(UNIT_STATE_STUNNED);
DontYellWhenDead = false;
EnrageTimer = 15 * 60000;
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), true);
}
Creature* GetOtherBoss()
@@ -127,6 +129,9 @@ struct boss_twinemperorsAI : public BossAI
}
if (!DontYellWhenDead) // I hope AI is not threaded
DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_DEATH : SOUND_VN_DEATH);
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), true);
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_2), true);
}
void KilledUnit(Unit* /*victim*/) override
@@ -150,6 +155,8 @@ struct boss_twinemperorsAI : public BossAI
otherAI->DoZoneInCombat();
}
}
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), false);
}
void SpellHit(Unit* caster, SpellInfo const* entry) override

View File

@@ -42,6 +42,7 @@ public:
instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
{
LoadObjectData(creatureData, nullptr);
doorGUIDs.fill(ObjectGuid::Empty);
SetBossNumber(MAX_BOSS_NUMBER);
}
@@ -55,6 +56,8 @@ public:
ObjectGuid VeklorGUID;
ObjectGuid VeknilashGUID;
ObjectGuid ViscidusGUID;
std::array<ObjectGuid, 3> doorGUIDs;
uint32 BugTrioDeathCount;
uint32 CthunPhase;
@@ -73,6 +76,10 @@ public:
{
case NPC_SKERAM:
SkeramGUID = creature->GetGUID();
if (!creature->IsAlive())
{
HandleGameObject(doorGUIDs[2], true);
}
break;
case NPC_VEM:
VemGUID = creature->GetGUID();
@@ -85,6 +92,10 @@ public:
break;
case NPC_VEKLOR:
VeklorGUID = creature->GetGUID();
if (!creature->IsAlive())
{
HandleGameObject(doorGUIDs[1], true);
}
break;
case NPC_VEKNILASH:
VeknilashGUID = creature->GetGUID();
@@ -101,6 +112,40 @@ public:
InstanceScript::OnCreatureCreate(creature);
}
void OnGameObjectCreate(GameObject* go) override
{
switch (go->GetEntry())
{
case AQ40_DOOR_1:
doorGUIDs[0] = go->GetGUID();
break;
case AQ40_DOOR_2:
doorGUIDs[1] = go->GetGUID();
if (Creature* veklor = instance->GetCreature(VeklorGUID))
{
if (!veklor->IsAlive())
{
HandleGameObject(go->GetGUID(), true);
}
}
break;
case AQ40_DOOR_3:
doorGUIDs[2] = go->GetGUID();
if (Creature* skeram = instance->GetCreature(SkeramGUID))
{
if (!skeram->IsAlive())
{
HandleGameObject(go->GetGUID(), true);
}
}
break;
default:
break;
}
InstanceScript::OnGameObjectCreate(go);
}
uint32 GetData(uint32 type) const override
{
switch (type)
@@ -142,6 +187,12 @@ public:
return VeknilashGUID;
case DATA_VISCIDUS:
return ViscidusGUID;
case AQ40_DOOR_1:
return doorGUIDs[0];
case AQ40_DOOR_2:
return doorGUIDs[1];
case AQ40_DOOR_3:
return doorGUIDs[2];
}
return ObjectGuid::Empty;
}

View File

@@ -79,6 +79,13 @@ enum Creatures
NPC_SARTURA = 15516
};
enum ObjectsAQ40
{
AQ40_DOOR_1 = 180634,
AQ40_DOOR_2 = 180635,
AQ40_DOOR_3 = 180636
};
template <class AI, class T>
inline AI* GetTempleOfAhnQirajAI(T* obj)
{