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:
Sarah Alexander
2018-09-21 08:54:29 -03:00
committed by Keader
parent da19663514
commit c8f830ff2b
7 changed files with 42 additions and 60 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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