aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaelima <jeppo_meyer@msn.com>2011-06-13 13:21:02 +0200
committerkaelima <jeppo_meyer@msn.com>2011-06-13 13:21:02 +0200
commit5720a4d9a599b83b7b9ca399edb95f2fe8c545b0 (patch)
tree3d5d8020d05ac297a637b30844c96db59bdd8b7b
parent66092b271707ee11628ff00208c23f674736fa5b (diff)
Ruins of Ahn'Qiraj:
- Rewritten instance script - Kurinnaxx has been rewritten. - Moam has been rewritten. Rest of the bosses is TODO. Also fix yet another typo in my latest commit, lol.
-rw-r--r--sql/updates/world/2011_06_13_00_world_gameobject_template.sql2
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp151
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp40
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp186
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp216
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp40
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp124
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp273
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h43
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp6
10 files changed, 489 insertions, 592 deletions
diff --git a/sql/updates/world/2011_06_13_00_world_gameobject_template.sql b/sql/updates/world/2011_06_13_00_world_gameobject_template.sql
new file mode 100644
index 00000000000..59a7ae402b6
--- /dev/null
+++ b/sql/updates/world/2011_06_13_00_world_gameobject_template.sql
@@ -0,0 +1,2 @@
+-- Fix faction of Sand Trap
+UPDATE `gameobject_template` SET `faction`=14 WHERE `entry`=180647;
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp
index 3bc09e57de0..a3fbece10f0 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -15,113 +14,87 @@
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-/* ScriptData
-SDName: Boss_Ayamiss
-SD%Complete: 50
-SDComment: VERIFY SCRIPT
-SDCategory: Ruins of Ahn'Qiraj
-EndScriptData */
-
-#include "ScriptPCH.h"
+
+#include "ObjectMgr.h"
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
#include "ruins_of_ahnqiraj.h"
-/*
-To do:
-make him fly from 70-100%
-*/
-
-enum Spells
+enum eAyamiss
{
- SPELL_STINGERSPRAY = 25749,
- SPELL_POISONSTINGER = 25748, //only used in phase1
- SPELL_SUMMONSWARMER = 25844, //might be 25708
- SPELL_PARALYZE = 23414 //doesnt work correct (core)
+ SPELL_STINGERSPRAY = 25749,
+ SPELL_POISONSTINGER = 25748, //only used in phase1
+ SPELL_PARALYZE = 25725,
+ SPELL_TRASH = 3391,
+ SPELL_FRENZY = 8269,
+ SPELL_LASH = 25852,
+
+ EMOTE_FRENZY = -1000002,
+
+ SPELL_FEED = 25721,
};
class boss_ayamiss : public CreatureScript
{
-public:
- boss_ayamiss() : CreatureScript("boss_ayamiss") { }
-
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new boss_ayamissAI (pCreature);
- }
-
- struct boss_ayamissAI : public ScriptedAI
- {
- boss_ayamissAI(Creature *c) : ScriptedAI(c)
- {
- pInstance = c->GetInstanceScript();
- }
-
- uint32 STINGERSPRAY_Timer;
- uint32 POISONSTINGER_Timer;
- uint32 SUMMONSWARMER_Timer;
- uint32 phase;
-
- InstanceScript *pInstance;
-
- void Reset()
- {
- STINGERSPRAY_Timer = 30000;
- POISONSTINGER_Timer = 30000;
- SUMMONSWARMER_Timer = 60000;
- phase=1;
-
- if (pInstance)
- pInstance->SetData(DATA_AYAMISS_EVENT, NOT_STARTED);
- }
-
- void EnterCombat(Unit* /*who*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_AYAMISS_EVENT, IN_PROGRESS);
- }
-
- void JustDied(Unit* /*killer*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_AYAMISS_EVENT, DONE);
- }
+ public:
+ boss_ayamiss() : CreatureScript("boss_ayamiss") { }
- void UpdateAI(const uint32 diff)
+ struct boss_ayamissAI : public ScriptedAI
{
- if (!UpdateVictim())
- return;
-
- //If he is 70% start phase 2
- if (phase == 1 && !HealthAbovePct(70) && !me->IsNonMeleeSpellCasted(false))
+ boss_ayamissAI(Creature* creature) : ScriptedAI(creature)
{
- phase=2;
+ instance = creature->GetInstanceScript();
}
- //STINGERSPRAY_Timer (only in phase2)
- if (phase == 2 && STINGERSPRAY_Timer <= diff)
- {
- DoCast(me->getVictim(), SPELL_STINGERSPRAY);
- STINGERSPRAY_Timer = 30000;
- } else STINGERSPRAY_Timer -= diff;
+ uint32 STINGERSPRAY_Timer;
+ uint32 POISONSTINGER_Timer;
+ uint32 SUMMONSWARMER_Timer;
+ uint32 phase;
+
+ InstanceScript* instance;
- //POISONSTINGER_Timer (only in phase1)
- if (phase == 1 && POISONSTINGER_Timer <= diff)
+ void Reset()
{
- DoCast(me->getVictim(), SPELL_POISONSTINGER);
+ STINGERSPRAY_Timer = 30000;
POISONSTINGER_Timer = 30000;
- } else POISONSTINGER_Timer -= diff;
+ SUMMONSWARMER_Timer = 60000;
+ phase = 1;
+
+ }
- //SUMMONSWARMER_Timer (only in phase1)
- if (SUMMONSWARMER_Timer <= diff)
+ void UpdateAI(uint32 const diff)
{
- DoCast(me->getVictim(), SPELL_SUMMONSWARMER);
- SUMMONSWARMER_Timer = 60000;
- } else SUMMONSWARMER_Timer -= diff;
+ if (!UpdateVictim())
+ return;
+
+ //If he is 70% start phase 2
+ if (phase == 1 && !HealthAbovePct(70) && !me->IsNonMeleeSpellCasted(false))
+ {
+ phase=2;
+ }
+
+ //STINGERSPRAY_Timer (only in phase2)
+ if (phase == 2 && STINGERSPRAY_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_STINGERSPRAY);
+ STINGERSPRAY_Timer = 30000;
+ } else STINGERSPRAY_Timer -= diff;
+
+ //POISONSTINGER_Timer (only in phase1)
+ if (phase == 1 && POISONSTINGER_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_POISONSTINGER);
+ POISONSTINGER_Timer = 30000;
+ } else POISONSTINGER_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ };
- DoMeleeAttackIfReady();
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_ayamissAI (creature);
}
- };
-
};
void AddSC_boss_ayamiss()
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp
index 8854dde89df..e49099238ae 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp
@@ -33,42 +33,20 @@ enum Yells
class boss_buru : public CreatureScript
{
-public:
- boss_buru() : CreatureScript("boss_buru") { }
+ public:
+ boss_buru() : CreatureScript("boss_buru") { }
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new boss_buruAI (pCreature);
- }
-
- struct boss_buruAI : public ScriptedAI
- {
- boss_buruAI(Creature *c) : ScriptedAI(c)
- {
- pInstance = c->GetInstanceScript();
- }
-
- InstanceScript *pInstance;
-
- void Reset()
+ struct boss_buruAI : public ScriptedAI
{
- if (pInstance)
- pInstance->SetData(DATA_BURU_EVENT, NOT_STARTED);
- }
+ boss_buruAI(Creature* creature) : ScriptedAI(creature)
+ {
+ }
+ };
- void EnterCombat(Unit* /*who*/)
+ CreatureAI* GetAI(Creature* creature) const
{
- if (pInstance)
- pInstance->SetData(DATA_BURU_EVENT, IN_PROGRESS);
+ return new boss_buruAI(creature);
}
-
- void JustDied(Unit* /*killer*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_BURU_EVENT, DONE);
- }
- };
-
};
void AddSC_boss_buru()
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp
index ae55a3821eb..974930c944b 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,130 +15,107 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_Kurinnaxx
-SD%Complete: 100
-SDComment: VERIFY SCRIPT AND SQL
-SDCategory: Ruins of Ahn'Qiraj
-EndScriptData */
-
-#include "ScriptPCH.h"
+#include "ObjectMgr.h"
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
#include "ruins_of_ahnqiraj.h"
enum Spells
{
- SPELL_MORTALWOUND = 25646,
- SPELL_SANDTRAP = 25656,
- SPELL_ENRAGE = 28798,
- SPELL_SUMMON_PLAYER = 26446,
- SPELL_TRASH = 3391,
- SPELL_WIDE_SLASH = 25814
+ SPELL_MORTALWOUND = 25646,
+ SPELL_SANDTRAP = 25648,
+ SPELL_ENRAGE = 26527,
+ SPELL_SUMMON_PLAYER = 26446,
+ SPELL_TRASH = 3391, // Should perhaps be triggered by an aura? Couldn't find any though
+ SPELL_WIDE_SLASH = 25814
};
-class boss_kurinnaxx : public CreatureScript
+enum Events
{
-public:
- boss_kurinnaxx() : CreatureScript("boss_kurinnaxx") { }
-
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new boss_kurinnaxxAI (pCreature);
- }
-
- struct boss_kurinnaxxAI : public ScriptedAI
- {
- boss_kurinnaxxAI(Creature *c) : ScriptedAI(c)
- {
- pInstance = c->GetInstanceScript();
- }
-
- uint32 uiMortalWoundTimer;
- uint32 uiSandtrapTimer;
- uint32 uiWideSlashTimer;
- uint32 uiSummonPlayerTimer;
- uint32 uiTrashTimer;
- bool bIsEnraged;
-
- InstanceScript* pInstance;
-
- void Reset()
- {
- bIsEnraged = false;
- uiMortalWoundTimer = urand(2000, 7000);
- uiSandtrapTimer = urand(20000, 30000);
- uiWideSlashTimer = urand(10000, 15000);
- uiTrashTimer = urand(20000, 25000);
- uiSummonPlayerTimer = urand(30000, 40000);
-
- if (pInstance)
- pInstance->SetData(DATA_KURINNAXX_EVENT, NOT_STARTED);
- }
-
- void EnterCombat(Unit* /*who*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_KURINNAXX_EVENT, IN_PROGRESS);
- }
+ EVENT_MORTAL_WOUND = 1,
+ EVENT_SANDTRAP = 2,
+ EVENT_TRASH = 3,
+ EVENT_WIDE_SLASH = 4
+};
- void JustDied(Unit* /*killer*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_KURINNAXX_EVENT, DONE);
- }
+class boss_kurinnaxx : public CreatureScript
+{
+ public:
+ boss_kurinnaxx() : CreatureScript("boss_kurinnaxx") { }
- void UpdateAI(const uint32 diff)
+ struct boss_kurinnaxxAI : public BossAI
{
- if (!UpdateVictim())
- return;
-
- //If we are <30% cast enrage
- if (!bIsEnraged && !HealthAbovePct(30) && !me->IsNonMeleeSpellCasted(false))
+ boss_kurinnaxxAI(Creature* creature) : BossAI(creature, BOSS_KURINNAXX)
{
- bIsEnraged = true;
- DoCast(me, SPELL_ENRAGE);
}
- //Mortal Wound spell
- if (uiMortalWoundTimer <= diff)
- {
- DoCast(me->getVictim(), SPELL_MORTALWOUND);
- uiMortalWoundTimer = urand(2000, 7000);
- } else uiMortalWoundTimer -= diff;
-
- //Santrap spell
- if (uiSandtrapTimer <= diff)
+ void Reset()
{
- if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
- DoCast(pTarget, SPELL_SANDTRAP);
- uiSandtrapTimer = 30000;
- } else uiSandtrapTimer -= diff;
-
- //Wide Slash spell
- if (uiWideSlashTimer <= diff)
- {
- DoCast(me->getVictim(), SPELL_WIDE_SLASH);
- uiWideSlashTimer = urand(10000, 15000);
- } else uiWideSlashTimer -= diff;
+ _Reset();
+ _enraged = false;
+ events.ScheduleEvent(EVENT_MORTAL_WOUND, 8000);
+ events.ScheduleEvent(EVENT_SANDTRAP, urand(5000,15000));
+ events.ScheduleEvent(EVENT_TRASH, 1000);
+ events.ScheduleEvent(EVENT_WIDE_SLASH, 11000);
+ }
- //Trash spell
- if (uiTrashTimer <= diff)
+ void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/)
{
- DoCast(me, SPELL_TRASH);
- uiTrashTimer = urand(20000, 25000);
- } else uiTrashTimer -= diff;
+ if (!_enraged && HealthBelowPct(30))
+ {
+ DoCast(me, SPELL_ENRAGE);
+ _enraged = true;
+ }
+ }
- //Summon Player spell
- if (uiSummonPlayerTimer <= diff)
+ void UpdateAI(const uint32 diff)
{
- if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
- DoCast(pTarget, SPELL_SUMMON_PLAYER);
- uiSummonPlayerTimer = urand(30000, 40000);
- } else uiSummonPlayerTimer -= diff;
+ if (!UpdateVictim())
+ return;
+
+ events.Update(diff);
+
+ if (me->HasUnitState(UNIT_STAT_CASTING))
+ return;
+
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_MORTAL_WOUND:
+ DoCastVictim(SPELL_MORTALWOUND);
+ events.ScheduleEvent(EVENT_MORTAL_WOUND, 8000);
+ break;
+ case EVENT_SANDTRAP:
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
+ target->CastSpell(target, SPELL_SANDTRAP, true);
+ else
+ me->getVictim()->CastSpell(me->getVictim(), SPELL_SANDTRAP, true);
+ events.ScheduleEvent(EVENT_SANDTRAP, urand(5000,15000));
+ break;
+ case EVENT_WIDE_SLASH:
+ DoCast(me, SPELL_WIDE_SLASH);
+ events.ScheduleEvent(EVENT_WIDE_SLASH, 11000);
+ break;
+ case EVENT_TRASH:
+ DoCast(me, SPELL_TRASH);
+ events.ScheduleEvent(EVENT_WIDE_SLASH, 16000);
+ break;
+ default:
+ break;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ private:
+ bool _enraged;
+ };
- DoMeleeAttackIfReady();
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_kurinnaxxAI (creature);
}
- };
-
};
void AddSC_boss_kurinnaxx()
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp
index 80e29f361c1..dac777bf260 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,17 +15,10 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_Moam
-SD%Complete: 90
-SDComment: TODO: Adjust timer, correct Stone phase buff
-SDCategory: Ruins of Ahn'Qiraj
-EndScriptData */
-
#include "ScriptPCH.h"
#include "ruins_of_ahnqiraj.h"
-enum Emotes
+enum Texts
{
EMOTE_AGGRO = -1509000,
EMOTE_MANA_FULL = -1509001
@@ -34,130 +26,158 @@ enum Emotes
enum Spells
{
- SPELL_TRAMPLE = 15550,
- SPELL_DRAINMANA = 27256, //Doesn't exist ?
- SPELL_ARCANEERUPTION = 25672,
- SPELL_SUMMONMANA = 25681, //Summon Mana fiend. It only summons one so exec it three times
- SPELL_GRDRSLEEP = 24360 //Greater Dreamless Sleep
+ SPELL_TRAMPLE = 15550,
+ SPELL_DRAIN_MANA = 25671,
+ SPELL_ARCANE_ERUPTION = 25672,
+ SPELL_SUMMON_MANA_FIEND_1 = 25681, // TARGET_DEST_CASTER_FRONT
+ SPELL_SUMMON_MANA_FIEND_2 = 25682, // TARGET_DEST_CASTER_LEFT
+ SPELL_SUMMON_MANA_FIEND_3 = 25683, // TARGET_DEST_CASTER_RIGHT
+ SPELL_ENERGIZE = 25685
};
-enum Creatures
+enum Events
{
- CREATURE_MANA_FIEND = 15527
+ EVENT_TRAMPLE = 1,
+ EVENT_DRAIN_MANA = 2,
+ EVENT_STONE_PHASE = 3,
+ EVENT_STONE_PHASE_END = 4,
+ EVENT_WIDE_SLASH = 5,
};
-enum CombatPhase
+enum Actions
{
- NORMAL,
- STONE
+ ACTION_STONE_PHASE_START = 1,
+ ACTION_STONE_PHASE_END = 2,
};
class boss_moam : public CreatureScript
{
-public:
- boss_moam() : CreatureScript("boss_moam") { }
-
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new boss_moamAI (pCreature);
- }
-
- struct boss_moamAI : public ScriptedAI
- {
- boss_moamAI(Creature *c) : ScriptedAI(c)
- {
- pInstance = c->GetInstanceScript();
- }
-
- uint32 uiTrampleTimer;
- uint32 uiDrainManaTimer;
- uint32 uiPhaseTimer;
- CombatPhase Phase;
-
- InstanceScript *pInstance;
-
- void Reset()
- {
- uiTrampleTimer = urand(3000, 7000);
- uiDrainManaTimer = urand(3000, 7000);
- uiPhaseTimer = 90000;
- Phase = NORMAL;
- me->SetPower(POWER_MANA, 0);
-
- if (pInstance)
- pInstance->SetData(DATA_MOAM_EVENT, NOT_STARTED);
- }
+ public:
+ boss_moam() : CreatureScript("boss_moam") { }
- void EnterCombat(Unit* /*who*/)
+ struct boss_moamAI : public BossAI
{
- DoScriptText(EMOTE_AGGRO, me);
+ boss_moamAI(Creature* creature) : BossAI(creature, BOSS_MOAM)
+ {
+ }
- if (pInstance)
- pInstance->SetData(DATA_MOAM_EVENT, IN_PROGRESS);
- }
+ void Reset()
+ {
+ _Reset();
+ me->SetPower(POWER_MANA, 0);
+ _isStonePhase = false;
+ events.ScheduleEvent(EVENT_STONE_PHASE, 90000);
+ //events.ScheduleEvent(EVENT_WIDE_SLASH, 11000);
+ }
- void JustDied(Unit* /*killer*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_MOAM_EVENT, DONE);
- }
+ void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/)
+ {
+ if (!_isStonePhase && HealthBelowPct(45))
+ {
+ _isStonePhase = true;
+ DoAction(ACTION_STONE_PHASE_START);
+ }
+ }
- void DrainMana()
- {
- for (uint8 i=0;i<6;++i)
+ void DoAction(int32 const action)
{
- if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
+ switch (action)
{
- pTarget->ModifyPower(POWER_MANA, -500);
- me->ModifyPower(POWER_MANA, 1000);
+ case ACTION_STONE_PHASE_END:
+ {
+ me->RemoveAurasDueToSpell(SPELL_ENERGIZE);
+ events.ScheduleEvent(EVENT_STONE_PHASE, 90000);
+ _isStonePhase = false;
+ break;
+ }
+ case ACTION_STONE_PHASE_START:
+ {
+ DoCast(me, SPELL_SUMMON_MANA_FIEND_1);
+ DoCast(me, SPELL_SUMMON_MANA_FIEND_2);
+ DoCast(me, SPELL_SUMMON_MANA_FIEND_3);
+ DoCast(me, SPELL_ENERGIZE);
+ events.ScheduleEvent(EVENT_STONE_PHASE_END, 90000);
+ break;
+ }
+ default:
+ break;
}
}
- }
- void UpdateAI(const uint32 diff)
- {
- if (Phase == NORMAL)
+ void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
return;
- //If we are 100%MANA cast Arcane Erruption
+ events.Update(diff);
+
if (me->GetPower(POWER_MANA) == me->GetMaxPower(POWER_MANA))
{
- DoCast(me->getVictim(), SPELL_ARCANEERUPTION);
- DoScriptText(EMOTE_MANA_FULL, me);
+ if (_isStonePhase)
+ DoAction(ACTION_STONE_PHASE_END);
+ DoCastAOE(SPELL_ARCANE_ERUPTION);
me->SetPower(POWER_MANA, 0);
}
- //Trample Spell
- if (uiTrampleTimer <= diff)
- {
- DoCast(me->getVictim(), SPELL_TRAMPLE);
- uiTrampleTimer = urand(3000, 7000);
- } else uiTrampleTimer -= diff;
-
- //Drain Mana
- if (uiDrainManaTimer <= diff)
+ if (_isStonePhase)
{
- DrainMana();
- uiDrainManaTimer = urand(3000, 7000);
- } else uiDrainManaTimer -= diff;
+ if (events.ExecuteEvent() == EVENT_STONE_PHASE_END)
+ DoAction(ACTION_STONE_PHASE_END);
+ return;
+ }
- DoMeleeAttackIfReady();
+ // Messing up mana-drain channel
+ //if (me->HasUnitState(UNIT_STAT_CASTING))
+ // return;
- //After 90secs change phase
- if (uiPhaseTimer <= diff)
+ while (uint32 eventId = events.ExecuteEvent())
{
- Phase = STONE;
- DoCast(me, SPELL_SUMMONMANA);
- DoCast(me, SPELL_SUMMONMANA);
- DoCast(me, SPELL_SUMMONMANA);
- DoCast(me, SPELL_GRDRSLEEP);
- } else uiPhaseTimer -= diff;
+ switch (eventId)
+ {
+ case EVENT_STONE_PHASE:
+ DoAction(ACTION_STONE_PHASE_START);
+ break;
+ case EVENT_DRAIN_MANA:
+ {
+ std::list<Unit*> targetList;
+ {
+ const std::list<HostileReference*>& threatlist = me->getThreatManager().getThreatList();
+ for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
+ if ((*itr)->getTarget()->GetTypeId() == TYPEID_PLAYER && (*itr)->getTarget()->getPowerType() == POWER_MANA)
+ targetList.push_back((*itr)->getTarget());
+ }
+
+ Trinity::RandomResizeList(targetList, 5);
+
+ for (std::list<Unit*>::iterator itr = targetList.begin(); itr != targetList.end(); ++itr)
+ DoCast(*itr, SPELL_DRAIN_MANA);
+
+ events.ScheduleEvent(EVENT_DRAIN_MANA, urand(5000,15000));
+ break;
+ }/*
+ case EVENT_WIDE_SLASH:
+ DoCast(me, SPELL_WIDE_SLASH);
+ events.ScheduleEvent(EVENT_WIDE_SLASH, 11000);
+ break;
+ case EVENT_TRASH:
+ DoCast(me, SPELL_TRASH);
+ events.ScheduleEvent(EVENT_WIDE_SLASH, 16000);
+ break;*/
+ default:
+ break;
+ }
+ }
+
+ DoMeleeAttackIfReady();
}
- }
- };
+ private:
+ bool _isStonePhase;
+ };
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_moamAI(creature);
+ }
};
void AddSC_boss_moam()
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
index 699735933ea..9e6d0d58392 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
@@ -41,42 +41,20 @@ enum Yells
class boss_ossirian : public CreatureScript
{
-public:
- boss_ossirian() : CreatureScript("boss_ossirian") { }
+ public:
+ boss_ossirian() : CreatureScript("boss_ossirian") { }
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new boss_ossirianAI (pCreature);
- }
-
- struct boss_ossirianAI : public ScriptedAI
- {
- boss_ossirianAI(Creature *c) : ScriptedAI(c)
- {
- pInstance = c->GetInstanceScript();
- }
-
- InstanceScript *pInstance;
-
- void Reset()
+ struct boss_ossirianAI : public ScriptedAI
{
- if (pInstance)
- pInstance->SetData(DATA_OSSIRIAN_EVENT, NOT_STARTED);
- }
+ boss_ossirianAI(Creature* creature) : ScriptedAI(creature)
+ {
+ }
+ };
- void EnterCombat(Unit* /*who*/)
+ CreatureAI* GetAI(Creature* creature) const
{
- if (pInstance)
- pInstance->SetData(DATA_OSSIRIAN_EVENT, IN_PROGRESS);
+ return new boss_ossirianAI (creature);
}
-
- void JustDied(Unit* /*killer*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_OSSIRIAN_EVENT, DONE);
- }
- };
-
};
void AddSC_boss_ossirian()
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
index 80966ae7dbf..bad5553cb1e 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,20 +15,17 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Boss_Rajaxx
-SD%Complete: 0
-SDComment: Place Holder
-SDCategory: Ruins of Ahn'Qiraj
-EndScriptData */
-
-#include "ScriptPCH.h"
+#include "ObjectMgr.h"
+#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
#include "ruins_of_ahnqiraj.h"
enum Yells
{
- SAY_ANDOROV_INTRO = -1509003,
- SAY_ANDOROV_ATTACK = -1509004,
+ // The time of our retribution is at hand! Let darkness reign in the hearts of our enemies! Sound: 8645 Emote: 35
+ SAY_ANDOROV_INTRO = -1509003, // Before for the first wave
+ SAY_ANDOROV_ATTACK = -1509004, // Beginning the event
+ SAY_ANDOROV_WAVE_1 = -1509001, // When the first wave comes text: Kill first, ask questions later... Incoming! emote: 45 sound: 8653
SAY_WAVE3 = -1509005,
SAY_WAVE4 = -1509006,
SAY_WAVE5 = -1509007,
@@ -39,50 +35,94 @@ enum Yells
SAY_UNK1 = -1509011,
SAY_UNK2 = -1509012,
SAY_UNK3 = -1509013,
- SAY_UNK4 = -1509014,
- SAY_DEAGGRO = -1509015,
+ SAY_DEATH = -1509014,
+ SAY_CHANGEAGGRO = -1509015,
SAY_KILLS_ANDOROV = -1509016,
- SAY_COMPLETE_QUEST = -1509017 //Yell when realm complete quest 8743 for world event
+ SAY_COMPLETE_QUEST = -1509017 // Yell when realm complete quest 8743 for world event
+ // Warriors, Captains, continue the fight! Sound: 8640
};
-class boss_rajaxx : public CreatureScript
+enum Spells
{
-public:
- boss_rajaxx() : CreatureScript("boss_rajaxx") { }
+ SPELL_DISARM = 6713,
+ SPELL_FRENZY = 8269,
+ SPELL_THUNDERCRASH = 25599
+};
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new boss_rajaxxAI (pCreature);
- }
+enum Events
+{
+ EVENT_DISARM = 1, // 03:58:27, 03:58:49
+ EVENT_THUNDERCRASH = 2, // 03:58:29, 03:58:50
+ EVENT_CHANGE_AGGRO = 3,
+};
- struct boss_rajaxxAI : public ScriptedAI
- {
- boss_rajaxxAI(Creature *c) : ScriptedAI(c)
+class boss_rajaxx : public CreatureScript
+{
+ public:
+ boss_rajaxx() : CreatureScript("boss_rajaxx") { }
+
+ struct boss_rajaxxAI : public BossAI
{
- pInstance = c->GetInstanceScript();
- }
+ boss_rajaxxAI(Creature* creature) : BossAI(creature, BOSS_RAJAXX)
+ {
+ }
- InstanceScript *pInstance;
+ void Reset()
+ {
+ _Reset();
+ enraged = false;
+ events.ScheduleEvent(EVENT_DISARM, 10000);
+ events.ScheduleEvent(EVENT_THUNDERCRASH, 12000);
+ }
- void Reset()
- {
- if (pInstance)
- pInstance->SetData(DATA_RAJAXX_EVENT, NOT_STARTED);
- }
+ void JustDied(Unit* killer)
+ {
+ //SAY_DEATH
+ _JustDied();
+ }
- void EnterCombat(Unit* /*who*/)
- {
- if (pInstance)
- pInstance->SetData(DATA_RAJAXX_EVENT, IN_PROGRESS);
- }
+ void EnterCombat(Unit* victim)
+ {
+ _EnterCombat();
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
- void JustDied(Unit* /*killer*/)
+ events.Update(diff);
+
+ if (me->HasUnitState(UNIT_STAT_CASTING))
+ return;
+
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_DISARM:
+ DoCastVictim(SPELL_DISARM);
+ events.ScheduleEvent(EVENT_DISARM, 22000);
+ break;
+ case EVENT_THUNDERCRASH:
+ DoCast(me, SPELL_THUNDERCRASH);
+ events.ScheduleEvent(EVENT_THUNDERCRASH, 21000);
+ break;
+ default:
+ break;
+ }
+ }
+
+ DoMeleeAttackIfReady();
+ }
+ private:
+ bool enraged;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
{
- if (pInstance)
- pInstance->SetData(DATA_RAJAXX_EVENT, DONE);
+ return new boss_rajaxxAI (creature);
}
- };
-
};
void AddSC_boss_rajaxx()
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp
index 883fad5dbeb..f2e6f3657b0 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,200 +15,138 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Instance_Ruins_of_Ahnqiraj
-SD%Complete: 0
-SDComment: Place holder
-SDCategory: Ruins of Ahn'Qiraj
-EndScriptData */
-
#include "ScriptPCH.h"
#include "ruins_of_ahnqiraj.h"
-#define MAX_ENCOUNTER 6
-
-/* Ruins of Ahn'Qiraj encounters:
-0 - Kurinnaxx
-1 - General Rajaxx
-2 - Moam
-3 - Buru the Gorger
-4 - Ayamiss the Hunter
-5 - Ossirian the Unscarred */
-
class instance_ruins_of_ahnqiraj : public InstanceMapScript
{
-public:
- instance_ruins_of_ahnqiraj() : InstanceMapScript("instance_ruins_of_ahnqiraj", 509) { }
-
- InstanceScript* GetInstanceScript(InstanceMap* pMap) const
- {
- return new instance_ruins_of_ahn_qiraj_InstanceMapScript(pMap);
- }
-
- struct instance_ruins_of_ahn_qiraj_InstanceMapScript : public InstanceScript
- {
- instance_ruins_of_ahn_qiraj_InstanceMapScript(Map* pMap) : InstanceScript(pMap) {}
-
- uint64 uiKurinaxx;
- uint64 uiRajaxx;
- uint64 uiMoam;
- uint64 uiBuru;
- uint64 uiAyamiss;
- uint64 uiOssirian;
-
- uint16 m_auiEncounter[MAX_ENCOUNTER];
- std::string str_data;
-
- void Initialize()
- {
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
-
- uiKurinaxx = 0;
- uiRajaxx = 0;
- uiMoam = 0;
- uiBuru = 0;
- uiAyamiss = 0;
- uiOssirian = 0;
- }
-
- bool IsEncounterInProgress() const
- {
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- if (m_auiEncounter[i] == IN_PROGRESS) return true;
-
- return false;
- }
+ public:
+ instance_ruins_of_ahnqiraj() : InstanceMapScript("instance_ruins_of_ahnqiraj", 509) {}
- void OnCreatureCreate(Creature* creature)
+ struct instance_ruins_of_ahnqiraj_InstanceMapScript : public InstanceScript
{
- switch (creature->GetEntry())
+ instance_ruins_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
{
- case CREATURE_KURINAXX:
- uiKurinaxx = creature->GetGUID();
- break;
- case CREATURE_RAJAXX:
- uiRajaxx = creature->GetGUID();
- break;
- case CREATURE_MOAM:
- uiMoam = creature->GetGUID();
- break;
- case CREATURE_BURU:
- uiBuru = creature->GetGUID();
- break;
- case CREATURE_AYAMISS:
- uiAyamiss = creature->GetGUID();
- break;
- case CREATURE_OSSIRIAN:
- uiOssirian = creature->GetGUID();
- break;
+ SetBossNumber(MAX_ENCOUNTER);
+
+ _kurinaxxGUID = 0;
+ _rajaxxGUID = 0;
+ _moamGUID = 0;
+ _buruGUID = 0;
+ _ayamissGUID = 0;
+ _ossirianGUID = 0;
}
- }
- uint32 GetData(uint32 identifier)
- {
- switch(identifier)
+ void OnCreatureCreate(Creature* creature)
{
- case DATA_KURINNAXX_EVENT: return m_auiEncounter[0];
- case DATA_RAJAXX_EVENT: return m_auiEncounter[1];
- case DATA_MOAM_EVENT: return m_auiEncounter[2];
- case DATA_BURU_EVENT: return m_auiEncounter[3];
- case DATA_AYAMISS_EVENT: return m_auiEncounter[4];
- case DATA_OSSIRIAN_EVENT: return m_auiEncounter[5];
+ switch (creature->GetEntry())
+ {
+ case NPC_KURINAXX:
+ _kurinaxxGUID = creature->GetGUID();
+ break;
+ case NPC_RAJAXX:
+ _rajaxxGUID = creature->GetGUID();
+ break;
+ case NPC_MOAM:
+ _moamGUID = creature->GetGUID();
+ break;
+ case NPC_BURU:
+ _buruGUID = creature->GetGUID();
+ break;
+ case NPC_AYAMISS:
+ _ayamissGUID = creature->GetGUID();
+ break;
+ case NPC_OSSIRIAN:
+ _ossirianGUID = creature->GetGUID();
+ break;
+ }
}
- return 0;
- }
-
- void SetData(uint32 identifier, uint32 data)
- {
- switch(identifier)
+ bool SetBossState(uint32 bossId, EncounterState state)
{
- case DATA_KURINNAXX_EVENT:
- m_auiEncounter[0] = data;
- break;
- case DATA_RAJAXX_EVENT:
- m_auiEncounter[1] = data;
- break;
- case DATA_MOAM_EVENT:
- m_auiEncounter[2] = data;
- break;
- case DATA_BURU_EVENT:
- m_auiEncounter[3] = data;
- break;
- case DATA_AYAMISS_EVENT:
- m_auiEncounter[4] = data;
- break;
- case DATA_OSSIRIAN_EVENT:
- m_auiEncounter[5] = data;
- break;
+ if (!InstanceScript::SetBossState(bossId, state))
+ return false;
+
+ return true;
}
- if (data == DONE)
- SaveToDB();
- }
-
- uint64 GetData64(uint32 uiIdentifier)
- {
- switch(uiIdentifier)
+ uint64 GetData64(uint32 type)
{
- case DATA_KURINNAXX: return uiKurinaxx;
- case DATA_RAJAXX: return uiRajaxx;
- case DATA_MOAM: return uiMoam;
- case DATA_BURU: return uiBuru;
- case DATA_AYAMISS: return uiAyamiss;
- case DATA_OSSIRIAN: return uiOssirian;
+ switch (type)
+ {
+ case BOSS_KURINNAXX:
+ return _kurinaxxGUID;
+ case BOSS_RAJAXX:
+ return _rajaxxGUID;
+ case BOSS_MOAM:
+ return _moamGUID;
+ case BOSS_BURU:
+ return _buruGUID;
+ case BOSS_AYAMISS:
+ return _ayamissGUID;
+ case BOSS_OSSIRIAN:
+ return _ossirianGUID;
+ }
+
+ return 0;
}
- return 0;
- }
-
- std::string GetSaveData()
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "R A " << m_auiEncounter[0] << " " << m_auiEncounter[1] << " "
- << m_auiEncounter[2] << " " << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5];
+ std::string GetSaveData()
+ {
+ OUT_SAVE_INST_DATA;
- str_data = saveStream.str();
+ std::ostringstream saveStream;
+ saveStream << "R A" << GetBossSaveData();
- OUT_SAVE_INST_DATA_COMPLETE;
- return str_data;
- }
+ OUT_SAVE_INST_DATA_COMPLETE;
+ return saveStream.str();
+ }
- void Load(const char* in)
- {
- if (!in)
+ void Load(char const* data)
{
- OUT_LOAD_INST_DATA_FAIL;
- return;
+ if (!data)
+ {
+ OUT_LOAD_INST_DATA_FAIL;
+ return;
+ }
+
+ OUT_LOAD_INST_DATA(data);
+
+ char dataHead1, dataHead2;
+
+ std::istringstream loadStream(data);
+ loadStream >> dataHead1 >> dataHead2;
+
+ if (dataHead1 == 'R' && dataHead2 == 'A')
+ {
+ for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
+ {
+ uint32 tmpState;
+ loadStream >> tmpState;
+ if (tmpState == IN_PROGRESS || tmpState > TO_BE_DECIDED)
+ tmpState = NOT_STARTED;
+ SetBossState(i, EncounterState(tmpState));
+ }
+ }
+ else
+ OUT_LOAD_INST_DATA_FAIL;
+
+ OUT_LOAD_INST_DATA_COMPLETE;
}
- OUT_LOAD_INST_DATA(in);
-
- char dataHead1, dataHead2;
- uint16 data0, data1, data2, data3, data4, data5;
+ private:
+ uint64 _kurinaxxGUID;
+ uint64 _rajaxxGUID;
+ uint64 _moamGUID;
+ uint64 _buruGUID;
+ uint64 _ayamissGUID;
+ uint64 _ossirianGUID;
+ };
- std::istringstream loadStream(in);
- loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4 >> data5;
-
- if (dataHead1 == 'R' && dataHead2 == 'A')
- {
- m_auiEncounter[0] = data0;
- m_auiEncounter[1] = data1;
- m_auiEncounter[2] = data2;
- m_auiEncounter[3] = data3;
- m_auiEncounter[4] = data4;
- m_auiEncounter[5] = data5;
-
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- if (m_auiEncounter[i] == IN_PROGRESS)
- m_auiEncounter[i] = NOT_STARTED;
-
- } else OUT_LOAD_INST_DATA_FAIL;
+ InstanceScript* GetInstanceScript(InstanceMap* map) const
+ {
+ return new instance_ruins_of_ahnqiraj_InstanceMapScript(map);
}
- };
-
};
void AddSC_instance_ruins_of_ahnqiraj()
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h
index 4330c916de7..8386a91a075 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -19,34 +18,28 @@
#ifndef DEF_RUINS_OF_AHNQIRAJ_H
#define DEF_RUINS_OF_AHNQIRAJ_H
-enum Data
+enum Encounters
{
- DATA_KURINNAXX_EVENT,
- DATA_RAJAXX_EVENT,
- DATA_MOAM_EVENT,
- DATA_BURU_EVENT,
- DATA_AYAMISS_EVENT,
- DATA_OSSIRIAN_EVENT
+ BOSS_KURINNAXX = 0,
+ BOSS_RAJAXX = 1,
+ BOSS_MOAM = 2,
+ BOSS_BURU = 3,
+ BOSS_AYAMISS = 4,
+ BOSS_OSSIRIAN = 5,
+ MAX_ENCOUNTER,
};
-enum Data64
+enum Creatures
{
- DATA_KURINNAXX,
- DATA_RAJAXX,
- DATA_MOAM,
- DATA_BURU,
- DATA_AYAMISS,
- DATA_OSSIRIAN
-};
-
-enum Bosses
-{
- CREATURE_KURINAXX = 15348,
- CREATURE_RAJAXX = 15341,
- CREATURE_MOAM = 15340,
- CREATURE_BURU = 15370,
- CREATURE_AYAMISS = 15369,
- CREATURE_OSSIRIAN = 15339
+ NPC_KURINAXX = 15348,
+ NPC_RAJAXX = 15341,
+ NPC_MOAM = 15340,
+ NPC_BURU = 15370,
+ NPC_AYAMISS = 15369,
+ NPC_OSSIRIAN = 15339,
+ NPC_HIVEZARA_HORNET = 15934,
+ NPC_HIVEZARA_SWARMER = 15546,
+ NPC_HIVEZARA_LARVA = 15555,
};
#endif
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
index e1bb5645cfd..e0f87c32387 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp
@@ -263,9 +263,9 @@ public:
//Attack random Gamers
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true))
{
- me->AddThreat(pTarget, 1.0f);
- me->TauntApply(pTarget);
- AttackStart(pTarget);
+ me->AddThreat(target, 1.0f);
+ me->TauntApply(target);
+ AttackStart(target);
}
AggroReset = true;