fix(Scripts/TempleOfAhnQiraj): Added missing doors. (#12734)
Fixes #12712
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
--
|
||||||
|
DELETE FROM `gameobject` WHERE `id` IN (180634,180635,180636);
|
||||||
|
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||||
|
(6680,180634,531,0,0,1,1,-8929.61,1344.38,-104.211,-2.43473,0,0,-0.938191,0.346119,604800,100,0,'',0),
|
||||||
|
(6683,180635,531,0,0,1,1,-9016.36,1330.68,-104.211,2.80125,0,0,0.985556,0.169351,604800,100,1,'',0),
|
||||||
|
(6686,180636,531,0,0,1,1,-8429.59,2048.81,153.309,-2.76634,0,0,-0.98245,0.186527,604800,100,1,'',0);
|
||||||
@@ -112,6 +112,8 @@ 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();
|
||||||
|
|||||||
@@ -91,6 +91,8 @@ struct boss_twinemperorsAI : public BossAI
|
|||||||
me->ClearUnitState(UNIT_STATE_STUNNED);
|
me->ClearUnitState(UNIT_STATE_STUNNED);
|
||||||
DontYellWhenDead = false;
|
DontYellWhenDead = false;
|
||||||
EnrageTimer = 15 * 60000;
|
EnrageTimer = 15 * 60000;
|
||||||
|
|
||||||
|
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Creature* GetOtherBoss()
|
Creature* GetOtherBoss()
|
||||||
@@ -127,6 +129,9 @@ struct boss_twinemperorsAI : public BossAI
|
|||||||
}
|
}
|
||||||
if (!DontYellWhenDead) // I hope AI is not threaded
|
if (!DontYellWhenDead) // I hope AI is not threaded
|
||||||
DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_DEATH : SOUND_VN_DEATH);
|
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
|
void KilledUnit(Unit* /*victim*/) override
|
||||||
@@ -150,6 +155,8 @@ struct boss_twinemperorsAI : public BossAI
|
|||||||
otherAI->DoZoneInCombat();
|
otherAI->DoZoneInCombat();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpellHit(Unit* caster, SpellInfo const* entry) override
|
void SpellHit(Unit* caster, SpellInfo const* entry) override
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ public:
|
|||||||
instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
LoadObjectData(creatureData, nullptr);
|
LoadObjectData(creatureData, nullptr);
|
||||||
|
doorGUIDs.fill(ObjectGuid::Empty);
|
||||||
SetBossNumber(MAX_BOSS_NUMBER);
|
SetBossNumber(MAX_BOSS_NUMBER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,6 +56,8 @@ public:
|
|||||||
ObjectGuid VeklorGUID;
|
ObjectGuid VeklorGUID;
|
||||||
ObjectGuid VeknilashGUID;
|
ObjectGuid VeknilashGUID;
|
||||||
ObjectGuid ViscidusGUID;
|
ObjectGuid ViscidusGUID;
|
||||||
|
std::array<ObjectGuid, 3> doorGUIDs;
|
||||||
|
|
||||||
uint32 BugTrioDeathCount;
|
uint32 BugTrioDeathCount;
|
||||||
uint32 CthunPhase;
|
uint32 CthunPhase;
|
||||||
|
|
||||||
@@ -73,6 +76,10 @@ 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();
|
||||||
@@ -85,6 +92,10 @@ public:
|
|||||||
break;
|
break;
|
||||||
case NPC_VEKLOR:
|
case NPC_VEKLOR:
|
||||||
VeklorGUID = creature->GetGUID();
|
VeklorGUID = creature->GetGUID();
|
||||||
|
if (!creature->IsAlive())
|
||||||
|
{
|
||||||
|
HandleGameObject(doorGUIDs[1], true);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NPC_VEKNILASH:
|
case NPC_VEKNILASH:
|
||||||
VeknilashGUID = creature->GetGUID();
|
VeknilashGUID = creature->GetGUID();
|
||||||
@@ -101,6 +112,40 @@ public:
|
|||||||
InstanceScript::OnCreatureCreate(creature);
|
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
|
uint32 GetData(uint32 type) const override
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@@ -142,6 +187,12 @@ public:
|
|||||||
return VeknilashGUID;
|
return VeknilashGUID;
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,13 @@ enum Creatures
|
|||||||
NPC_SARTURA = 15516
|
NPC_SARTURA = 15516
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ObjectsAQ40
|
||||||
|
{
|
||||||
|
AQ40_DOOR_1 = 180634,
|
||||||
|
AQ40_DOOR_2 = 180635,
|
||||||
|
AQ40_DOOR_3 = 180636
|
||||||
|
};
|
||||||
|
|
||||||
template <class AI, class T>
|
template <class AI, class T>
|
||||||
inline AI* GetTempleOfAhnQirajAI(T* obj)
|
inline AI* GetTempleOfAhnQirajAI(T* obj)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user