aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 08209bc72fc..d5793d450f0 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp
@@ -54,12 +54,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()
@@ -72,8 +71,6 @@ public:
Death = false;
}
- InstanceScript* instance;
-
uint32 Cleave_Timer;
uint32 ToxicVolley_Timer;
uint32 Check_Timer;
@@ -84,11 +81,9 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
}
- void JustEngagedWith(Unit* /*who*/) override
- {
- }
void JustDied(Unit* /*killer*/) override
{
@@ -153,12 +148,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()
@@ -170,8 +164,6 @@ public:
Enraged = false;
}
- InstanceScript* instance;
-
uint32 Charge_Timer;
uint32 KnockBack_Timer;
uint32 Enrage_Timer;
@@ -181,6 +173,7 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
}
void JustDied(Unit* /*killer*/) override
@@ -191,10 +184,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
@@ -246,12 +235,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()
@@ -263,8 +251,6 @@ public:
VemDead = false;
}
- InstanceScript* instance;
-
uint32 Heal_Timer;
uint32 Fear_Timer;
uint32 Check_Timer;
@@ -292,10 +278,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 cf9a3883c1f..05d31d88a3e 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
@@ -460,14 +460,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()
@@ -492,8 +490,6 @@ public:
StomachEnterTarget.Clear(); //Target to be teleported to stomach
}
- InstanceScript* instance;
-
//Out of combat whisper timer
uint32 WisperTimer;
@@ -521,6 +517,7 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
//Clear players in stomach and outside
Stomach_Map.clear();
@@ -533,11 +530,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 3a70e8e3b2f..f8b1c9f86e8 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp
@@ -53,9 +53,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();
}
@@ -74,6 +74,7 @@ public:
void Reset() override
{
Initialize();
+ _Reset();
}
void SummonSpawn(Unit* victim)
@@ -103,10 +104,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 bea3e6d9318..583876e47ae 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp
@@ -50,9 +50,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();
}
@@ -83,10 +83,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 a69e6f21ae5..6ba5e94feef 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp
@@ -46,9 +46,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();
}
@@ -79,11 +79,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 6eef5b79c1a..3a543b679c4 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
@@ -54,9 +54,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();
}
@@ -91,16 +91,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 3ecb5968d93..d12349572e9 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
@@ -67,14 +67,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()
@@ -91,8 +88,6 @@ struct boss_twinemperorsAI : public ScriptedAI
EnrageTimer = 15 * 60000;
}
- InstanceScript* instance;
-
uint32 Heal_Timer;
uint32 Teleport_Timer;
bool AfterTeleport;
@@ -110,6 +105,7 @@ struct boss_twinemperorsAI : public ScriptedAI
{
Initialize();
me->ClearUnitState(UNIT_STATE_STUNNED);
+ _Reset();
}
Creature* GetOtherBoss()
@@ -146,6 +142,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
@@ -155,7 +152,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 02c31d4e95d..e71d9bb6c40 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 d35f88a23e7..c6f3e9fd535 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
@@ -40,6 +40,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:
@@ -56,7 +66,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 e980dcbb064..ab318434bdb 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
@@ -24,23 +24,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
@@ -67,6 +77,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)
{