fix(Core/TempleOfAhnQiraj): Door handling (#13053)

This commit is contained in:
Angelo Venturini
2022-09-19 00:30:39 -03:00
committed by GitHub
parent f90ad0e09e
commit 11cfcc8479
3 changed files with 13 additions and 41 deletions
@@ -134,8 +134,6 @@ struct boss_skeram : public BossAI
{ {
_JustDied(); _JustDied();
Talk(SAY_DEATH); Talk(SAY_DEATH);
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_3), true);
} }
else else
me->RemoveCorpse(); me->RemoveCorpse();
@@ -31,6 +31,14 @@ ObjectData const creatureData[] =
{ NPC_VEKNILASH, DATA_VEKNILASH } { NPC_VEKNILASH, DATA_VEKNILASH }
}; };
DoorData const doorData[] =
{
{ AQ40_DOOR_SKERAM, DATA_SKERAM, DOOR_TYPE_PASSAGE },
{ AQ40_DOOR_TE_ENTRANCE, DATA_TWIN_EMPERORS, DOOR_TYPE_ROOM },
{ AQ40_DOOR_TE_EXIT, DATA_TWIN_EMPERORS, DOOR_TYPE_PASSAGE },
{ 0, 0, DOOR_TYPE_ROOM}
};
class instance_temple_of_ahnqiraj : public InstanceMapScript class instance_temple_of_ahnqiraj : public InstanceMapScript
{ {
public: public:
@@ -45,9 +53,9 @@ public:
{ {
instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map) instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
{ {
LoadObjectData(creatureData, nullptr);
doorGUIDs.fill(ObjectGuid::Empty);
SetBossNumber(MAX_BOSS_NUMBER); SetBossNumber(MAX_BOSS_NUMBER);
LoadObjectData(creatureData, nullptr);
LoadDoorData(doorData);
} }
ObjectGuid SkeramGUID; ObjectGuid SkeramGUID;
@@ -57,7 +65,6 @@ public:
ObjectGuid ViscidusGUID; ObjectGuid ViscidusGUID;
ObjectGuid CThunGUID; ObjectGuid CThunGUID;
GuidVector CThunGraspGUIDs; GuidVector CThunGraspGUIDs;
std::array<ObjectGuid, 3> doorGUIDs;
uint32 BugTrioDeathCount; uint32 BugTrioDeathCount;
uint32 CthunPhase; uint32 CthunPhase;
@@ -74,10 +81,6 @@ public:
{ {
case NPC_SKERAM: case NPC_SKERAM:
SkeramGUID = creature->GetGUID(); SkeramGUID = creature->GetGUID();
if (!creature->IsAlive())
{
HandleGameObject(doorGUIDs[2], true);
}
break; break;
case NPC_VEM: case NPC_VEM:
VemGUID = creature->GetGUID(); VemGUID = creature->GetGUID();
@@ -123,29 +126,6 @@ public:
{ {
switch (go->GetEntry()) switch (go->GetEntry())
{ {
case AQ40_DOOR_1:
doorGUIDs[0] = go->GetGUID();
break;
case AQ40_DOOR_2:
doorGUIDs[1] = go->GetGUID();
if (Creature* veklor = GetCreature(DATA_VEKLOR))
{
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;
case GO_CTHUN_GRASP: case GO_CTHUN_GRASP:
CThunGraspGUIDs.push_back(go->GetGUID()); CThunGraspGUIDs.push_back(go->GetGUID());
if (Creature* CThun = instance->GetCreature(CThunGUID)) if (Creature* CThun = instance->GetCreature(CThunGUID))
@@ -190,12 +170,6 @@ public:
return YaujGUID; return YaujGUID;
case DATA_VISCIDUS: case DATA_VISCIDUS:
return ViscidusGUID; 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; return ObjectGuid::Empty;
} }
@@ -80,9 +80,9 @@ enum Creatures
enum ObjectsAQ40 enum ObjectsAQ40
{ {
AQ40_DOOR_1 = 180634, AQ40_DOOR_TE_ENTRANCE = 180634,
AQ40_DOOR_2 = 180635, AQ40_DOOR_TE_EXIT = 180635,
AQ40_DOOR_3 = 180636, AQ40_DOOR_SKERAM = 180636,
GO_CTHUN_GRASP = 180745 GO_CTHUN_GRASP = 180745
}; };