mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 10:56:38 +01:00
Scripts/TempleOfAhnQiraj: Implement Battleguard Sartura's skip-preven… (#22475)
* Scripts/TempleOfAhnQiraj: Implement Battleguard Sartura's skip-prevention area trigger * Sartura engages players if they try to skip her by walking past down the tunnel * Clean up the instance script a bit
This commit is contained in:
@@ -316,11 +316,11 @@ public:
|
||||
switch (urand(0, 2))
|
||||
{
|
||||
case 0:
|
||||
if (Creature* kri = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KRI)))
|
||||
if (Creature* kri = instance->GetCreature(DATA_KRI))
|
||||
DoCast(kri, SPELL_HEAL);
|
||||
break;
|
||||
case 1:
|
||||
if (Creature* vem = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VEM)))
|
||||
if (Creature* vem = instance->GetCreature(DATA_VEM))
|
||||
DoCast(vem, SPELL_HEAL);
|
||||
break;
|
||||
case 2:
|
||||
|
||||
@@ -311,8 +311,25 @@ public:
|
||||
|
||||
};
|
||||
|
||||
// 4052
|
||||
class at_aq_battleguard_sartura : public AreaTriggerScript
|
||||
{
|
||||
public:
|
||||
at_aq_battleguard_sartura() : AreaTriggerScript("at_aq_battleguard_sartura") { }
|
||||
|
||||
bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (Creature* sartura = instance->GetCreature(DATA_SARTURA))
|
||||
sartura->AI()->AttackStart(player);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_sartura()
|
||||
{
|
||||
new boss_sartura();
|
||||
new npc_sartura_royal_guard();
|
||||
new at_aq_battleguard_sartura();
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ struct boss_twinemperorsAI : public ScriptedAI
|
||||
|
||||
Creature* GetOtherBoss()
|
||||
{
|
||||
return ObjectAccessor::GetCreature(*me, instance->GetGuidData(IAmVeklor() ? DATA_VEKNILASH : DATA_VEKLOR));
|
||||
return instance->GetCreature(IAmVeklor() ? DATA_VEKNILASH : DATA_VEKLOR);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
|
||||
|
||||
@@ -274,9 +274,9 @@ class npc_glob_of_viscidus : public CreatureScript
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
InstanceScript* Instance = me->GetInstanceScript();
|
||||
InstanceScript* instance = me->GetInstanceScript();
|
||||
|
||||
if (Creature* Viscidus = ObjectAccessor::GetCreature(*me, Instance->GetGuidData(DATA_VISCIDUS)))
|
||||
if (Creature* Viscidus = instance->GetCreature(DATA_VISCIDUS))
|
||||
{
|
||||
if (BossAI* ViscidusAI = dynamic_cast<BossAI*>(Viscidus->GetAI()))
|
||||
ViscidusAI->SummonedCreatureDespawn(me);
|
||||
|
||||
@@ -29,6 +29,17 @@ EndScriptData */
|
||||
#include "Map.h"
|
||||
#include "temple_of_ahnqiraj.h"
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ NPC_VEM, DATA_VEM },
|
||||
{ NPC_KRI, DATA_KRI },
|
||||
{ NPC_VEKLOR, DATA_VEKLOR },
|
||||
{ NPC_VEKNILASH, DATA_VEKNILASH },
|
||||
{ NPC_VISCIDUS, DATA_VISCIDUS },
|
||||
{ NPC_SARTURA, DATA_SARTURA },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
class instance_temple_of_ahnqiraj : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
@@ -44,6 +55,8 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
|
||||
instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
LoadObjectData(creatureData, nullptr);
|
||||
|
||||
IsBossDied[0] = false;
|
||||
IsBossDied[1] = false;
|
||||
IsBossDied[2] = false;
|
||||
@@ -56,43 +69,10 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
|
||||
//If Vem is dead...
|
||||
bool IsBossDied[3];
|
||||
|
||||
//Storing Skeram, Vem and Kri.
|
||||
ObjectGuid SkeramGUID;
|
||||
ObjectGuid VemGUID;
|
||||
ObjectGuid KriGUID;
|
||||
ObjectGuid VeklorGUID;
|
||||
ObjectGuid VeknilashGUID;
|
||||
ObjectGuid ViscidusGUID;
|
||||
|
||||
uint32 BugTrioDeathCount;
|
||||
|
||||
uint32 CthunPhase;
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_SKERAM:
|
||||
SkeramGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VEM:
|
||||
VemGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_KRI:
|
||||
KriGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VEKLOR:
|
||||
VeklorGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VEKNILASH:
|
||||
VeknilashGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VISCIDUS:
|
||||
ViscidusGUID = creature->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const override
|
||||
{
|
||||
//not active in AQ40
|
||||
@@ -127,26 +107,6 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
|
||||
return 0;
|
||||
}
|
||||
|
||||
ObjectGuid GetGuidData(uint32 identifier) const override
|
||||
{
|
||||
switch (identifier)
|
||||
{
|
||||
case DATA_SKERAM:
|
||||
return SkeramGUID;
|
||||
case DATA_VEM:
|
||||
return VemGUID;
|
||||
case DATA_KRI:
|
||||
return KriGUID;
|
||||
case DATA_VEKLOR:
|
||||
return VeklorGUID;
|
||||
case DATA_VEKNILASH:
|
||||
return VeknilashGUID;
|
||||
case DATA_VISCIDUS:
|
||||
return ViscidusGUID;
|
||||
}
|
||||
return ObjectGuid::Empty;
|
||||
} // end GetGuidData
|
||||
|
||||
void SetData(uint32 type, uint32 data) override
|
||||
{
|
||||
switch (type)
|
||||
|
||||
@@ -39,7 +39,8 @@ enum AQTDataTypes
|
||||
DATA_VEKNILASH_DEATH = 11,
|
||||
DATA_BUG_TRIO_DEATH = 14,
|
||||
DATA_CTHUN_PHASE = 20,
|
||||
DATA_VISCIDUS = 21
|
||||
DATA_VISCIDUS = 21,
|
||||
DATA_SARTURA = 22
|
||||
};
|
||||
|
||||
enum AQTCreatures
|
||||
@@ -62,7 +63,8 @@ enum AQTCreatures
|
||||
NPC_VEM = 15544,
|
||||
NPC_KRI = 15511,
|
||||
NPC_VEKLOR = 15276,
|
||||
NPC_VEKNILASH = 15275
|
||||
NPC_VEKNILASH = 15275,
|
||||
NPC_SARTURA = 15516
|
||||
};
|
||||
|
||||
template <class AI, class T>
|
||||
|
||||
Reference in New Issue
Block a user