Scripts/Temple of Ahn Qiraj: Scripted doors of AQ40

Doors added in 1ba09572b5

# Conflicts:
#	src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
#	src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
#	src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
#	src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
#	src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
This commit is contained in:
Keader
2019-01-28 17:13:59 -03:00
committed by Ovahlord
parent c25254b619
commit b4ecbe3154
10 changed files with 77 additions and 76 deletions

View File

@@ -48,12 +48,11 @@ class boss_kri : public CreatureScript
public:
boss_kri() : CreatureScript("boss_kri") { }
struct boss_kriAI : public ScriptedAI
struct boss_kriAI : public BossAI
{
boss_kriAI(Creature* creature) : ScriptedAI(creature)
boss_kriAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
@@ -66,8 +65,6 @@ public:
Death = false;
}
InstanceScript* instance;
uint32 Cleave_Timer;
uint32 ToxicVolley_Timer;
uint32 Check_Timer;
@@ -78,11 +75,9 @@ public:
void Reset() override
{
Initialize();
_Reset();
}
void JustEngagedWith(Unit* /*who*/) override
{
}
void JustDied(Unit* /*killer*/) override
{
@@ -146,12 +141,11 @@ class boss_vem : public CreatureScript
public:
boss_vem() : CreatureScript("boss_vem") { }
struct boss_vemAI : public ScriptedAI
struct boss_vemAI : public BossAI
{
boss_vemAI(Creature* creature) : ScriptedAI(creature)
boss_vemAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
@@ -163,8 +157,6 @@ public:
Enraged = false;
}
InstanceScript* instance;
uint32 Charge_Timer;
uint32 KnockBack_Timer;
uint32 Enrage_Timer;
@@ -174,6 +166,7 @@ public:
void Reset() override
{
Initialize();
_Reset();
}
void JustDied(Unit* /*killer*/) override
@@ -184,10 +177,6 @@ public:
instance->SetData(DATA_BUG_TRIO_DEATH, 1);
}
void JustEngagedWith(Unit* /*who*/) override
{
}
void UpdateAI(uint32 diff) override
{
//Return since we have no target
@@ -238,12 +227,11 @@ class boss_yauj : public CreatureScript
public:
boss_yauj() : CreatureScript("boss_yauj") { }
struct boss_yaujAI : public ScriptedAI
struct boss_yaujAI : public BossAI
{
boss_yaujAI(Creature* creature) : ScriptedAI(creature)
boss_yaujAI(Creature* creature) : BossAI(creature, DATA_BUG_TRIO)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
@@ -255,8 +243,6 @@ public:
VemDead = false;
}
InstanceScript* instance;
uint32 Heal_Timer;
uint32 Fear_Timer;
uint32 Check_Timer;
@@ -284,10 +270,6 @@ public:
}
}
void JustEngagedWith(Unit* /*who*/) override
{
}
void UpdateAI(uint32 diff) override
{
//Return since we have no target

View File

@@ -453,14 +453,12 @@ class boss_cthun : public CreatureScript
public:
boss_cthun() : CreatureScript("boss_cthun") { }
struct cthunAI : public ScriptedAI
struct cthunAI : public BossAI
{
cthunAI(Creature* creature) : ScriptedAI(creature)
cthunAI(Creature* creature) : BossAI(creature, DATA_CTHUN)
{
Initialize();
SetCombatMovement(false);
instance = creature->GetInstanceScript();
}
void Initialize()
@@ -485,8 +483,6 @@ public:
StomachEnterTarget.Clear(); //Target to be teleported to stomach
}
InstanceScript* instance;
//Out of combat whisper timer
uint32 WisperTimer;
@@ -514,6 +510,7 @@ public:
void Reset() override
{
Initialize();
_Reset();
//Clear players in stomach and outside
Stomach_Map.clear();
@@ -526,11 +523,6 @@ public:
instance->SetData(DATA_CTHUN_PHASE, PHASE_NOT_STARTED);
}
void JustEngagedWith(Unit* /*who*/) override
{
DoZoneInCombat();
}
void SpawnEyeTentacle(float x, float y)
{
Creature* Spawned = DoSpawnCreature(NPC_EYE_TENTACLE, x, y, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 500);

View File

@@ -47,9 +47,9 @@ class boss_fankriss : public CreatureScript
public:
boss_fankriss() : CreatureScript("boss_fankriss") { }
struct boss_fankrissAI : public ScriptedAI
struct boss_fankrissAI : public BossAI
{
boss_fankrissAI(Creature* creature) : ScriptedAI(creature)
boss_fankrissAI(Creature* creature) : BossAI(creature, DATA_FRANKRIS)
{
Initialize();
}
@@ -68,6 +68,7 @@ public:
void Reset() override
{
Initialize();
_Reset();
}
void SummonSpawn(Unit* victim)
@@ -97,10 +98,6 @@ public:
Spawn->AI()->AttackStart(victim);
}
void JustEngagedWith(Unit* /*who*/) override
{
}
void UpdateAI(uint32 diff) override
{
//Return since we have no target

View File

@@ -48,9 +48,9 @@ public:
return new boss_huhuranAI(creature);
}
struct boss_huhuranAI : public ScriptedAI
struct boss_huhuranAI : public BossAI
{
boss_huhuranAI(Creature* creature) : ScriptedAI(creature)
boss_huhuranAI(Creature* creature) : BossAI(creature, DATA_HUHURAN)
{
Initialize();
}
@@ -81,10 +81,7 @@ public:
void Reset() override
{
Initialize();
}
void JustEngagedWith(Unit* /*who*/) override
{
_Reset();
}
void UpdateAI(uint32 diff) override

View File

@@ -45,9 +45,9 @@ public:
return new boss_ouroAI(creature);
}
struct boss_ouroAI : public ScriptedAI
struct boss_ouroAI : public BossAI
{
boss_ouroAI(Creature* creature) : ScriptedAI(creature)
boss_ouroAI(Creature* creature) : BossAI(creature, DATA_OURO)
{
Initialize();
}
@@ -78,11 +78,13 @@ public:
void Reset() override
{
Initialize();
_Reset();
}
void JustEngagedWith(Unit* /*who*/) override
{
DoCastVictim(SPELL_BIRTH);
_JustEngagedWith();
}
void UpdateAI(uint32 diff) override

View File

@@ -50,9 +50,9 @@ public:
return new boss_sarturaAI(creature);
}
struct boss_sarturaAI : public ScriptedAI
struct boss_sarturaAI : public BossAI
{
boss_sarturaAI(Creature* creature) : ScriptedAI(creature)
boss_sarturaAI(Creature* creature) : BossAI(creature, DATA_SARTURA)
{
Initialize();
}
@@ -87,16 +87,19 @@ public:
void Reset() override
{
Initialize();
_Reset();
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
_JustEngagedWith();
}
void JustDied(Unit* /*killer*/) override
{
Talk(SAY_DEATH);
_JustDied();
}
void KilledUnit(Unit* /*victim*/) override

View File

@@ -63,14 +63,11 @@ enum Misc
TELEPORTTIME = 30000
};
struct boss_twinemperorsAI : public ScriptedAI
struct boss_twinemperorsAI : public BossAI
{
boss_twinemperorsAI(Creature* creature): ScriptedAI(creature)
boss_twinemperorsAI(Creature* creature): BossAI(creature, DATA_TWIN_EMPERORS)
{
Initialize();
instance = creature->GetInstanceScript();
}
void Initialize()
@@ -87,8 +84,6 @@ struct boss_twinemperorsAI : public ScriptedAI
EnrageTimer = 15 * 60000;
}
InstanceScript* instance;
uint32 Heal_Timer;
uint32 Teleport_Timer;
bool AfterTeleport;
@@ -106,6 +101,7 @@ struct boss_twinemperorsAI : public ScriptedAI
{
Initialize();
me->ClearUnitState(UNIT_STATE_STUNNED);
_Reset();
}
Creature* GetOtherBoss()
@@ -142,6 +138,7 @@ struct boss_twinemperorsAI : public ScriptedAI
}
if (!DontYellWhenDead) // I hope AI is not threaded
DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_DEATH : SOUND_VN_DEATH);
_JustDied();
}
void KilledUnit(Unit* /*victim*/) override
@@ -151,7 +148,7 @@ struct boss_twinemperorsAI : public ScriptedAI
void JustEngagedWith(Unit* who) override
{
DoZoneInCombat();
_JustEngagedWith();
Creature* pOtherBoss = GetOtherBoss();
if (pOtherBoss)
{

View File

@@ -204,6 +204,7 @@ class boss_viscidus : public CreatureScript
{
DoCast(me, SPELL_VISCIDUS_SUICIDE);
summons.DespawnAll();
_JustDied();
}
void UpdateAI(uint32 diff) override

View File

@@ -27,6 +27,16 @@ EndScriptData */
#include "InstanceScript.h"
#include "temple_of_ahnqiraj.h"
DoorData const doorData[] =
{
{ AQ40_DOOR_1, DATA_SARTURA, DOOR_TYPE_PASSAGE },
{ AQ40_DOOR_1, DATA_HUHURAN, DOOR_TYPE_PASSAGE },
{ AQ40_DOOR_2, DATA_TWIN_EMPERORS, DOOR_TYPE_PASSAGE },
{ AQ40_DOOR_3, DATA_SKERAM, DOOR_TYPE_PASSAGE },
{ 0, 0, DOOR_TYPE_ROOM } // END
};
class instance_temple_of_ahnqiraj : public InstanceMapScript
{
public:
@@ -34,9 +44,11 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
struct instance_temple_of_ahnqiraj_InstanceMapScript : public InstanceScript
{
instance_temple_of_ahnqiraj_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
LoadObjectData(creatureData, nullptr);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
IsBossDied[0] = false;
IsBossDied[1] = false;
IsBossDied[2] = false;

View File

@@ -23,22 +23,33 @@
#define AQ40ScriptName "instance_temple_of_ahnqiraj"
#define DataHeader "AQT"
uint32 const EncounterCount = 9;
enum AQTDataTypes
{
DATA_SKERAM = 1,
DATA_KRI = 2,
DATA_VEM = 3,
DATA_VEMISDEAD = 4,
DATA_VEM_DEATH = 5,
DATA_VEKLOR = 6,
DATA_VEKLORISDEAD = 7,
DATA_VEKLOR_DEATH = 8,
DATA_VEKNILASH = 9,
DATA_VEKNILASHISDEAD = 10,
DATA_VEKNILASH_DEATH = 11,
DATA_BUG_TRIO_DEATH = 14,
DATA_CTHUN_PHASE = 20,
DATA_VISCIDUS = 21
DATA_SKERAM = 0,
DATA_SARTURA = 1,
DATA_FRANKRIS = 2,
DATA_HUHURAN = 3,
DATA_TWIN_EMPERORS = 4,
DATA_CTHUN = 5,
DATA_BUG_TRIO = 6,
DATA_VISCIDUS = 7,
DATA_OURO = 8,
// Others
DATA_KRI = 9,
DATA_VEM = 10,
DATA_VEMISDEAD = 11,
DATA_VEM_DEATH = 12,
DATA_VEKLOR = 13,
DATA_VEKLORISDEAD = 14,
DATA_VEKLOR_DEATH = 15,
DATA_VEKNILASH = 16,
DATA_VEKNILASHISDEAD = 17,
DATA_VEKNILASH_DEATH = 18,
DATA_BUG_TRIO_DEATH = 19,
DATA_CTHUN_PHASE = 20
};
enum AQTCreatures
@@ -64,6 +75,13 @@ enum AQTCreatures
NPC_VEKNILASH = 15275
};
enum ObjectsAQ40
{
AQ40_DOOR_1 = 180634,
AQ40_DOOR_2 = 180635,
AQ40_DOOR_3 = 180636
};
template <class AI, class T>
inline AI* GetAQ40AI(T* obj)
{