aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp34
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp14
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp9
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp9
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp6
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp7
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp13
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp1
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp13
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h47
10 files changed, 76 insertions, 77 deletions
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
index 1f6bf5d03f0..3e3a249fe19 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
@@ -53,12 +53,11 @@ public:
return GetAQ40AI<boss_kriAI>(creature);
}
- 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()
@@ -71,8 +70,6 @@ public:
Death = false;
}
- InstanceScript* instance;
-
uint32 Cleave_Timer;
uint32 ToxicVolley_Timer;
uint32 Check_Timer;
@@ -83,11 +80,9 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
}
- void JustEngagedWith(Unit* /*who*/) override
- {
- }
void JustDied(Unit* /*killer*/) override
{
@@ -152,12 +147,11 @@ public:
return GetAQ40AI<boss_vemAI>(creature);
}
- 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()
@@ -169,8 +163,6 @@ public:
Enraged = false;
}
- InstanceScript* instance;
-
uint32 Charge_Timer;
uint32 KnockBack_Timer;
uint32 Enrage_Timer;
@@ -180,6 +172,7 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
}
void JustDied(Unit* /*killer*/) override
@@ -190,10 +183,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
@@ -245,12 +234,11 @@ public:
return GetAQ40AI<boss_yaujAI>(creature);
}
- 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()
@@ -262,8 +250,6 @@ public:
VemDead = false;
}
- InstanceScript* instance;
-
uint32 Heal_Timer;
uint32 Fear_Timer;
uint32 Check_Timer;
@@ -291,10 +277,6 @@ public:
}
}
- void JustEngagedWith(Unit* /*who*/) override
- {
- }
-
void UpdateAI(uint32 diff) override
{
//Return since we have no target
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
index 11415bff291..9f7f47791c5 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
@@ -459,14 +459,12 @@ public:
return GetAQ40AI<cthunAI>(creature);
}
- 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()
@@ -491,8 +489,6 @@ public:
StomachEnterTarget.Clear(); //Target to be teleported to stomach
}
- InstanceScript* instance;
-
//Out of combat whisper timer
uint32 WisperTimer;
@@ -520,6 +516,7 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
//Clear players in stomach and outside
Stomach_Map.clear();
@@ -532,11 +529,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);
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
index 9d6abb66649..20b9aebe304 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
@@ -52,9 +52,9 @@ public:
return GetAQ40AI<boss_fankrissAI>(creature);
}
- 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();
}
@@ -73,6 +73,7 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
}
void SummonSpawn(Unit* victim)
@@ -102,10 +103,6 @@ public:
Spawn->AI()->AttackStart(victim);
}
- void JustEngagedWith(Unit* /*who*/) override
- {
- }
-
void UpdateAI(uint32 diff) override
{
//Return since we have no target
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
index ea6b7533993..5503c4f80f2 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
@@ -49,9 +49,9 @@ public:
return GetAQ40AI<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();
}
@@ -82,10 +82,7 @@ public:
void Reset() override
{
Initialize();
- }
-
- void JustEngagedWith(Unit* /*who*/) override
- {
+ _Reset();
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
index 5f63b7c3578..650e564a2bc 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
@@ -45,9 +45,9 @@ public:
return GetAQ40AI<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
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
index 8c4becc0050..98248c95ce8 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
@@ -53,9 +53,9 @@ public:
return GetAQ40AI<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();
}
@@ -90,16 +90,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
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
index 2a09bbad92e..3963d9c8664 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
@@ -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)
{
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
index 5d78d9f4bc9..4b1afc100c4 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
@@ -204,6 +204,7 @@ class boss_viscidus : public CreatureScript
{
DoCast(me, SPELL_VISCIDUS_SUICIDE);
summons.DespawnAll();
+ _JustDied();
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
index 9128b08cc7a..8e33bbe0573 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
@@ -38,6 +38,16 @@ ObjectData const creatureData[] =
{ 0, 0 } // END
};
+
+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:
@@ -54,7 +64,8 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
{
SetHeaders(DataHeader);
LoadObjectData(creatureData, nullptr);
-
+ SetBossNumber(EncounterCount);
+ LoadDoorData(doorData);
IsBossDied[0] = false;
IsBossDied[1] = false;
IsBossDied[2] = false;
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
index d73946fcd0f..b8c4793ec78 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
@@ -23,23 +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_SARTURA = 22
+ 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
@@ -66,6 +76,13 @@ enum AQTCreatures
NPC_SARTURA = 15516
};
+enum ObjectsAQ40
+{
+ AQ40_DOOR_1 = 180634,
+ AQ40_DOOR_2 = 180635,
+ AQ40_DOOR_3 = 180636
+};
+
template <class AI, class T>
inline AI* GetAQ40AI(T* obj)
{