aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp38
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp29
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp29
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp32
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp20
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp150
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp26
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h16
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp28
9 files changed, 131 insertions, 237 deletions
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp
index 0a0fb17cce4..c675c8d7c27 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,14 +14,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Anubrekhan
-SD%Complete: 100
-SDComment:
-SDCategory: Naxxramas
-EndScriptData */
-
#include "precompiled.h"
+#include "def_naxxramas.h"
#define SAY_GREET RAND(-1533000,-1533004,-1533005,-1533006,-1533007)
#define SAY_AGGRO RAND(-1533001,-1533002,-1533003)
@@ -31,46 +25,29 @@ EndScriptData */
#define SPELL_LOCUSTSWARM HEROIC(28785,54021)
#define SPELL_SELF_SPAWN_5 29105 //This spawns 5 corpse scarabs ontop of us (most likely the player casts this on death)
-#define SPELL_SELF_SPAWN_10 28864 //This is used by the crypt guards when they die
#define EVENT_IMPALE 1
#define EVENT_LOCUST 2
#define MOB_CRYPT_GUARD 16573
-struct TRINITY_DLL_DECL boss_anubrekhanAI : public ScriptedAI
+struct TRINITY_DLL_DECL boss_anubrekhanAI : public BossAI
{
- boss_anubrekhanAI(Creature *c) : ScriptedAI(c), summons(me) {}
+ boss_anubrekhanAI(Creature *c) : BossAI(c, BOSS_ANUBREKHAN) {}
bool HasTaunted;
- EventMap events;
- SummonList summons;
void Prepare()
{
HasTaunted = false;
- DoSpawnCreature(MOB_CRYPT_GUARD, 0, 10, 0, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000);
+ DoSpawnCreature(MOB_CRYPT_GUARD, 0, 10, 0, me->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000);
if(HeroicMode)
- DoSpawnCreature(MOB_CRYPT_GUARD, 0, -10, 0, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000);
+ DoSpawnCreature(MOB_CRYPT_GUARD, 0, -10, 0, me->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000);
}
void InitializeAI() { Prepare(); }
void JustReachedHome() { Prepare(); }
- void Reset()
- {
- events.Reset();
- summons.DespawnAll();
- }
-
- void JustSummoned(Creature *summon)
- {
- summons.Summon(summon);
- DoZoneInCombat(summon);
- }
-
- void SummonedCreatureDespawn(Creature *summon) {summons.Despawn(summon);}
-
void KilledUnit(Unit* victim)
{
//Force the player to spawn corpse scarabs via spell
@@ -82,9 +59,8 @@ struct TRINITY_DLL_DECL boss_anubrekhanAI : public ScriptedAI
void EnterCombat(Unit *who)
{
+ _EnterCombat();
DoScriptText(SAY_AGGRO, me);
- DoZoneInCombat();
-
events.ScheduleEvent(EVENT_IMPALE, 15000, 1);
events.ScheduleEvent(EVENT_LOCUST, 80000 + rand()%40000, 1);
}
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp
index f18cd81064a..45f54611ae3 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_grobbulus.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,20 +14,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Grobbulus
-SD%Complete: 0
-SDComment: Place holder
-SDCategory: Naxxramas
-EndScriptData */
-
-/*Poison Cloud 26590
-Slime Spray 28157
-Fallout slime 28218
-Mutating Injection 28169
-Enrages 26527*/
-
#include "precompiled.h"
+#include "def_naxxramas.h"
#define SPELL_BOMBARD_SLIME 28280
@@ -43,20 +31,13 @@ Enrages 26527*/
#define MOB_FALLOUT_SLIME 16290
-struct TRINITY_DLL_DECL boss_grobbulusAI : public ScriptedAI
+struct TRINITY_DLL_DECL boss_grobbulusAI : public BossAI
{
- boss_grobbulusAI(Creature *c) : ScriptedAI(c) {}
-
- EventMap events;
-
- void Reset()
- {
- events.Reset();
- }
+ boss_grobbulusAI(Creature *c) : BossAI(c, BOSS_GROBBULUS) {}
void EnterCombat(Unit *who)
{
- DoZoneInCombat();
+ _EnterCombat();
events.ScheduleEvent(EVENT_CLOUD, 15000);
events.ScheduleEvent(EVENT_INJECT, 20000);
events.ScheduleEvent(EVENT_SPRAY, 15000+rand()%15000); //not sure
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp
index 9207b2c09a2..0302a93c488 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_heigan.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,13 +14,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Heigan
-SD%Complete: 0
-SDComment: Place Holder
-SDCategory: Naxxramas
-EndScriptData */
-
#include "precompiled.h"
#include "def_naxxramas.h"
@@ -50,25 +43,14 @@ enum Phases
//Spell by eye stalks
#define SPELL_MIND_FLAY 26143
-struct TRINITY_DLL_DECL boss_heiganAI : public ScriptedAI
+struct TRINITY_DLL_DECL boss_heiganAI : public BossAI
{
- boss_heiganAI(Creature *c) : ScriptedAI(c)
- {
- instance = ((ScriptedInstance*)c->GetInstanceData());
- }
+ boss_heiganAI(Creature *c) : BossAI(c, BOSS_HEIGAN) {}
- EventMap events;
- ScriptedInstance *instance;
uint32 eruptSection;
bool eruptDirection;
Phases phase;
- void Reset()
- {
- events.Reset();
- instance->SetBossState(BOSS_HEIGAN, NOT_STARTED);
- }
-
void KilledUnit(Unit* Victim)
{
if(!(rand()%5))
@@ -77,16 +59,15 @@ struct TRINITY_DLL_DECL boss_heiganAI : public ScriptedAI
void JustDied(Unit* Killer)
{
+ _JustDied();
DoScriptText(SAY_DEATH, me);
- instance->SetBossState(BOSS_HEIGAN, DONE);
}
void EnterCombat(Unit *who)
{
+ _EnterCombat();
DoScriptText(SAY_AGGRO, me);
- DoZoneInCombat();
EnterPhase(PHASE_FIGHT);
- instance->SetBossState(BOSS_HEIGAN, IN_PROGRESS);
}
void EnterPhase(Phases newPhase)
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp
index 22796094557..1f7b1a55daa 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,13 +14,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Noth
-SD%Complete: 40
-SDComment: Missing Balcony stage
-SDCategory: Naxxramas
-EndScriptData */
-
#include "precompiled.h"
#include "def_naxxramas.h"
@@ -68,33 +61,25 @@ enum Events
EVENT_GROUND,
};
-struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
+struct TRINITY_DLL_DECL boss_nothAI : public BossAI
{
- boss_nothAI(Creature *c) : ScriptedAI(c), summons(me)
- {
- instance = ((ScriptedInstance*)c->GetInstanceData());
- }
+ boss_nothAI(Creature *c) : BossAI(c, BOSS_NOTH) {}
- EventMap events;
- SummonList summons;
- ScriptedInstance *instance;
uint32 waveCount, balconyCount;
void Reset()
{
- events.Reset();
- summons.DespawnAll();
+ _Reset();
me->setActive(false);
- instance->SetBossState(BOSS_NOTH, NOT_STARTED);
}
void EnterCombat(Unit *who)
{
+ _EnterCombat();
DoScriptText(SAY_AGGRO, me);
me->setActive(true);
balconyCount = 0;
EnterPhaseGround();
- instance->SetBossState(BOSS_NOTH, IN_PROGRESS);
}
void EnterPhaseGround()
@@ -104,7 +89,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
EnterEvadeMode();
else
{
- events.ScheduleEvent(EVENT_BALCONY, 11000);
+ events.ScheduleEvent(EVENT_BALCONY, 110000);
events.ScheduleEvent(EVENT_CURSE, 20000+rand()%10000);
events.ScheduleEvent(EVENT_WARRIOR, 30000);
if(HeroicMode)
@@ -125,13 +110,10 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
summon->AI()->DoZoneInCombat();
}
- void SummonedCreatureDespawn(Creature *summon) { summons.Despawn(summon); }
-
void JustDied(Unit* Killer)
{
- summons.DespawnAll();
+ _JustDied();
DoScriptText(SAY_DEATH, me);
- instance->SetBossState(BOSS_NOTH, DONE);
}
void SummonUndead(uint32 entry, uint32 num)
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp
index 99f8741c897..a05685264d6 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,14 +14,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Patchwerk
-SD%Complete: 80
-SDComment: Some issues with hateful strike inturrupting the melee swing timer.
-SDCategory: Naxxramas
-EndScriptData */
-
#include "precompiled.h"
+#include "def_naxxramas.h"
#define SAY_AGGRO RAND(-1533017,-1533018)
#define SAY_SLAY -1533019
@@ -39,16 +33,15 @@ EndScriptData */
#define EVENT_HATEFUL 2
#define EVENT_SLIME 3
-struct TRINITY_DLL_DECL boss_patchwerkAI : public ScriptedAI
+struct TRINITY_DLL_DECL boss_patchwerkAI : public BossAI
{
- boss_patchwerkAI(Creature *c) : ScriptedAI(c) {}
+ boss_patchwerkAI(Creature *c) : BossAI(c, BOSS_PATCHWERK) {}
bool Enraged;
- EventMap events;
void Reset()
{
- events.Reset();
+ _Reset();
Enraged = false;
}
@@ -60,13 +53,14 @@ struct TRINITY_DLL_DECL boss_patchwerkAI : public ScriptedAI
void JustDied(Unit* Killer)
{
+ _JustDied();
DoScriptText(SAY_DEATH, me);
}
void EnterCombat(Unit *who)
{
+ _EnterCombat();
DoScriptText(SAY_AGGRO, me);
- DoZoneInCombat();
events.ScheduleEvent(EVENT_HATEFUL, 1200);
events.ScheduleEvent(EVENT_BERSERK, 360000);
}
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp
index 64147eaea8a..120220172cd 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp
@@ -1,4 +1,6 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/*
+ * Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
+ *
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,14 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Razuvious
-SD%Complete: 50
-SDComment: Missing adds and event is impossible without Mind Control
-SDCategory: Naxxramas
-EndScriptData */
-
#include "precompiled.h"
+#include "def_naxxramas.h"
//Razuvious - NO TEXT sound only
//8852 aggro01 - Hah hah, I'm just getting warmed up!
@@ -37,121 +33,86 @@ EndScriptData */
//8860 death - An honorable... death...
//8947 - Aggro Mixed? - ?
-#define SOUND_AGGRO1 8852
-#define SOUND_AGGRO2 8853
-#define SOUND_AGGRO3 8854
-#define SOUND_SLAY1 8861
-#define SOUND_SLAY2 8863
-#define SOUND_COMMND1 8855
-#define SOUND_COMMND2 8856
-#define SOUND_COMMND3 8858
-#define SOUND_COMMND4 8859
-#define SOUND_COMMND5 8861
+#define SOUND_AGGRO RAND(8852,8853,8854)
+#define SOUND_SLAY RAND(8861,8863)
+#define SOUND_COMMND RAND(8855,8856,8858,8859,8861)
#define SOUND_DEATH 8860
#define SOUND_AGGROMIX 8847
-#define SPELL_UNBALANCINGSTRIKE 26613
-#define SPELL_DISRUPTINGSHOUT 29107
+#define SPELL_UNBALANCING_STRIKE 26613
+#define SPELL_DISRUPTING_SHOUT HEROIC(29107,55543)
+#define SPELL_JAGGED_KNIFE 55550
+#define SPELL_HOPELESS 29105
-struct TRINITY_DLL_DECL boss_razuviousAI : public ScriptedAI
+enum Events
{
- boss_razuviousAI(Creature *c) : ScriptedAI(c) {}
-
- uint32 UnbalancingStrike_Timer;
- uint32 DisruptingShout_Timer;
- uint32 CommandSound_Timer;
+ EVENT_STRIKE,
+ EVENT_SHOUT,
+ EVENT_KNIFE,
+ EVENT_COMMAND,
+};
- void Reset()
- {
- UnbalancingStrike_Timer = 30000; //30 seconds
- DisruptingShout_Timer = 25000; //25 seconds
- CommandSound_Timer = 40000; //40 seconds
- }
+struct TRINITY_DLL_DECL boss_razuviousAI : public BossAI
+{
+ boss_razuviousAI(Creature *c) : BossAI(c, BOSS_RAZUVIOUS) {}
- void KilledUnit(Unit* Victim)
+ void KilledUnit(Unit* victim)
{
- if (rand()%3)
- return;
-
- switch (rand()%2)
- {
- case 0:
- DoPlaySoundToSet(m_creature, SOUND_SLAY1);
- break;
- case 1:
- DoPlaySoundToSet(m_creature, SOUND_SLAY2);
- break;
- }
+ if(!(rand()%3))
+ DoPlaySoundToSet(me, SOUND_SLAY);
}
- void JustDied(Unit* Killer)
+ void JustDied(Unit* killer)
{
- DoPlaySoundToSet(m_creature, SOUND_DEATH);
+ _JustDied();
+ DoPlaySoundToSet(me, SOUND_DEATH);
+ me->CastSpell(me, SPELL_HOPELESS, true);
}
void EnterCombat(Unit *who)
{
- switch (rand()%3)
- {
- case 0:
- DoPlaySoundToSet(m_creature, SOUND_AGGRO1);
- break;
- case 1:
- DoPlaySoundToSet(m_creature, SOUND_AGGRO2);
- break;
- case 2:
- DoPlaySoundToSet(m_creature, SOUND_AGGRO3);
- break;
- }
+ _EnterCombat();
+ DoPlaySoundToSet(m_creature, SOUND_AGGRO);
+ events.ScheduleEvent(EVENT_STRIKE, 30000);
+ events.ScheduleEvent(EVENT_SHOUT, 25000);
+ events.ScheduleEvent(EVENT_COMMAND, 40000);
}
void UpdateAI(const uint32 diff)
{
- if (!UpdateVictim())
+ if(!UpdateVictim())
return;
- //UnbalancingStrike_Timer
- if (UnbalancingStrike_Timer < diff)
- {
- DoCast(m_creature->getVictim(),SPELL_UNBALANCINGSTRIKE);
- UnbalancingStrike_Timer = 30000;
- }else UnbalancingStrike_Timer -= diff;
-
- //DisruptingShout_Timer
- if (DisruptingShout_Timer < diff)
- {
- DoCast(m_creature->getVictim(), SPELL_DISRUPTINGSHOUT);
- DisruptingShout_Timer = 25000;
- }else DisruptingShout_Timer -= diff;
+ events.Update(diff);
- //CommandSound_Timer
- if (CommandSound_Timer < diff)
+ while(uint32 eventId = events.ExecuteEvent())
{
- switch (rand()%5)
+ switch(eventId)
{
- case 0:
- DoPlaySoundToSet(m_creature, SOUND_COMMND1);
- break;
- case 1:
- DoPlaySoundToSet(m_creature, SOUND_COMMND2);
- break;
- case 2:
- DoPlaySoundToSet(m_creature, SOUND_COMMND3);
- break;
- case 3:
- DoPlaySoundToSet(m_creature, SOUND_COMMND4);
- break;
- case 4:
- DoPlaySoundToSet(m_creature, SOUND_COMMND5);
- break;
+ case EVENT_STRIKE:
+ DoCast(me->getVictim(), SPELL_UNBALANCING_STRIKE);
+ events.ScheduleEvent(EVENT_STRIKE, 30000);
+ return;
+ case EVENT_SHOUT:
+ DoCastAOE(SPELL_DISRUPTING_SHOUT);
+ events.ScheduleEvent(EVENT_SHOUT, 25000);
+ return;
+ case EVENT_KNIFE:
+ if(Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45))
+ DoCast(target, SPELL_JAGGED_KNIFE);
+ events.ScheduleEvent(EVENT_KNIFE, 25000);
+ return;
+ case EVENT_COMMAND:
+ DoPlaySoundToSet(me, SOUND_COMMND);
+ events.ScheduleEvent(EVENT_COMMAND, 40000);
+ return;
}
-
- CommandSound_Timer = 40000;
- }else CommandSound_Timer -= diff;
+ }
DoMeleeAttackIfReady();
}
};
+
CreatureAI* GetAI_boss_razuvious(Creature *_Creature)
{
return new boss_razuviousAI (_Creature);
@@ -165,4 +126,3 @@ void AddSC_boss_razuvious()
newscript->GetAI = &GetAI_boss_razuvious;
newscript->RegisterSelf();
}
-
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp
index 682f6cee3a9..71259df7824 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp
@@ -1,4 +1,6 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/*
+ * Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
+ *
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,13 +16,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Sapphiron
-SD%Complete: 0
-SDComment: Place Holder
-SDCategory: Naxxramas
-EndScriptData */
-
#include "precompiled.h"
#include "def_naxxramas.h"
@@ -71,14 +66,12 @@ enum Events
typedef std::map<uint64, uint64> IceBlockMap;
-struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
+struct TRINITY_DLL_DECL boss_sapphironAI : public BossAI
{
- boss_sapphironAI(Creature* c) : ScriptedAI(c)
+ boss_sapphironAI(Creature* c) : BossAI(c, BOSS_SAPPHIRON)
, phase(PHASE_NULL)
- {
- }
+ {}
- EventMap events;
Phases phase;
uint32 iceboltCount;
IceBlockMap iceblocks;
@@ -97,16 +90,18 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
void Reset()
{
+ _Reset();
+
if(phase = PHASE_FLIGHT)
ClearIceBlock();
- events.Reset();
phase = PHASE_NULL;
}
void EnterCombat(Unit *who)
{
- DoZoneInCombat();
+ _EnterCombat();
+
me->CastSpell(me, SPELL_FROST_AURA, true);
events.ScheduleEvent(EVENT_BERSERK, 15*60000);
@@ -128,6 +123,7 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
void JustDied(Unit*)
{
+ _JustDied();
me->CastSpell(me, SPELL_DIES, true);
}
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h b/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h
index 12c1dc6edfa..383200d4600 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h
+++ b/src/bindings/scripts/scripts/zone/naxxramas/def_naxxramas.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Trinity <http://www.trinitycore.org/>
+ * Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
*
* 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
@@ -21,14 +21,28 @@
enum Encounter
{
+ BOSS_ANUBREKHAN,
+ BOSS_FAERLINA,
+ BOSS_MAEXXNA,
BOSS_NOTH,
BOSS_HEIGAN,
BOSS_LOATHEB,
+ BOSS_PATCHWERK,
+ BOSS_GROBBULUS,
+ BOSS_GLUTH,
+ BOSS_THADDIUS,
+ BOSS_RAZUVIOUS,
+ BOSS_GOTHIK,
+ BOSS_HORSEMEN,
+ BOSS_SAPPHIRON,
+ BOSS_KELTHUZAD,
+ MAX_BOSS_NUMBER
};
enum Data
{
DATA_HEIGAN_ERUPT,
+ DATA_GOTHIK_GATE,
DATA_SAPPHIRON_BIRTH,
};
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
index 23ffb7b8c4d..4dc189723f3 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+/* Copyright (C) 2008 - 2009 Trinity <http://www.trinitycore.org/>
* 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 Free Software Foundation; either version 2 of the License, or
@@ -14,18 +14,16 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Instance_Naxxramas
-SD%Complete: 0
-SDComment: Place holder
-SDCategory: Naxxramas
-EndScriptData */
-
#include "precompiled.h"
#include "def_naxxramas.h"
const DoorData doorData[] =
{
+ {181126, BOSS_ANUBREKHAN,DOOR_TYPE_ROOM},
+ {181195, BOSS_ANUBREKHAN,DOOR_TYPE_PASSAGE},
+ {194022, BOSS_FAERLINA, DOOR_TYPE_PASSAGE},
+ {181209, BOSS_FAERLINA, DOOR_TYPE_PASSAGE},
+ {181209, BOSS_MAEXXNA, DOOR_TYPE_ROOM},
{181200, BOSS_NOTH, DOOR_TYPE_ROOM},
{181201, BOSS_NOTH, DOOR_TYPE_PASSAGE},
{181202, BOSS_NOTH, DOOR_TYPE_PASSAGE},
@@ -33,9 +31,21 @@ const DoorData doorData[] =
{181203, BOSS_HEIGAN, DOOR_TYPE_PASSAGE},
{181241, BOSS_HEIGAN, DOOR_TYPE_PASSAGE},
{181241, BOSS_LOATHEB, DOOR_TYPE_ROOM},
+ {181123, BOSS_PATCHWERK, DOOR_TYPE_PASSAGE},
+ {181123, BOSS_GROBBULUS, DOOR_TYPE_ROOM},
+ {181120, BOSS_GLUTH, DOOR_TYPE_PASSAGE},
+ {181121, BOSS_GLUTH, DOOR_TYPE_PASSAGE},
+ {181121, BOSS_THADDIUS, DOOR_TYPE_ROOM},
+ {181124, BOSS_RAZUVIOUS, DOOR_TYPE_PASSAGE},
+ {181124, BOSS_GOTHIK, DOOR_TYPE_ROOM},
+ {181125, BOSS_GOTHIK, DOOR_TYPE_PASSAGE},
+ {181119, BOSS_GOTHIK, DOOR_TYPE_PASSAGE},
+ {181119, BOSS_HORSEMEN, DOOR_TYPE_ROOM},
{0, 0, DOOR_TYPE_ROOM}, // EOF
};
+#define GO_GOTHIK_GATE 181170
+
#define SPELL_ERUPTION 29371
const float HeiganPos[2] = {2796, -3707};
@@ -72,7 +82,7 @@ struct TRINITY_DLL_DECL instance_naxxramas : public ScriptedInstance
instance_naxxramas(Map *map) : ScriptedInstance(map)
, Sapphiron(NULL)
{
- SetBossNumber(15);
+ SetBossNumber(MAX_BOSS_NUMBER);
LoadDoorData(doorData);
}