aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-09 14:09:11 -0500
committermegamage <none@none>2009-05-09 14:09:11 -0500
commit4a0bdedc58db98755a64d9cfb289efe06780c987 (patch)
treef3f04bdcac610467317c1591a90c6b3bcb82e839 /src
parent36a3696f350a244e84ccad642b3c98335dc088c2 (diff)
*Update naxx scripts.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp29
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp22
3 files changed, 42 insertions, 11 deletions
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp
index 087bc8dc12c..a0ab51a9a2b 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp
@@ -45,8 +45,16 @@ EndScriptData */
#define TELE_Z 274.040
#define TELE_O 6.277
-// IMPORTANT: BALCONY TELEPORT NOT ADDED YET! WILL BE ADDED SOON!
-// Dev note 26.12.2008: When is soon? :)
+#define MAX_SUMMON_POS 5
+
+const float SummonPos[MAX_SUMMON_POS][4] =
+{
+ {2728.12, -3544.43, 261.91, 6.04},
+ {2729.05, -3544.47, 261.91, 5.58},
+ {2728.24, -3465.08, 264.20, 3.56},
+ {2704.11, -3456.81, 265.53, 4.51},
+ {2663.56, -3464.43, 262.66, 5.20},
+};
enum Events
{
@@ -71,6 +79,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
{
events.Reset();
summons.DespawnAll();
+ me->setActive(false);
instance->SetBossState(BOSS_NOTH, NOT_STARTED);
}
@@ -78,6 +87,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
{
DoScriptText(SAY_AGGRO, me);
DoZoneInCombat();
+ me->setActive(true);
events.ScheduleEvent(EVENT_CURSE, 20000+rand()%10000);
events.ScheduleEvent(EVENT_WARRIOR, 30000);
@@ -95,6 +105,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
void JustSummoned(Creature *summon)
{
summons.Summon(summon);
+ summon->setActive(true);
DoZoneInCombat(summon);
}
@@ -102,10 +113,21 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
void JustDied(Unit* Killer)
{
+ summons.DespawnAll();
DoScriptText(SAY_DEATH, me);
instance->SetBossState(BOSS_NOTH, DONE);
}
+ void SummonUndead(uint32 entry, uint32 num)
+ {
+ for(uint32 i = 0; i < num; ++i)
+ {
+ uint32 pos = rand()%MAX_SUMMON_POS;
+ me->SummonCreature(entry, SummonPos[pos][0], SummonPos[pos][1], SummonPos[pos][2],
+ SummonPos[pos][3], TEMPSUMMON_CORPSE_DESPAWN, 60000);
+ }
+ }
+
void UpdateAI(const uint32 diff)
{
if(!UpdateVictim())
@@ -123,8 +145,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public ScriptedAI
return;
case EVENT_WARRIOR:
DoScriptText(SAY_SUMMON, me);
- for(uint8 i = 0; i < 6; i++)
- m_creature->SummonCreature(MOB_WARRIOR,2684.804,-3502.517,261.313,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,80000);
+ SummonUndead(MOB_WARRIOR, HEROIC(2,3));
events.ScheduleEvent(EVENT_WARRIOR, 30000);
return;
case EVENT_BLINK:
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp
index 97165d4a389..9ba4bd1f7ee 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp
@@ -141,7 +141,7 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public ScriptedAI
if(param == DATA_SAPPHIRON_BIRTH)
{
phase = PHASE_BIRTH;
- events.ScheduleEvent(EVENT_BIRTH, 25000);
+ events.ScheduleEvent(EVENT_BIRTH, 23000);
}
}
diff --git a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
index 4743a44f2d3..034141e2580 100644
--- a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
+++ b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp
@@ -24,6 +24,18 @@ EndScriptData */
#include "precompiled.h"
#include "def_naxxramas.h"
+const DoorData doorData[] =
+{
+ {181200, BOSS_NOTH, DOOR_TYPE_ROOM},
+ {181201, BOSS_NOTH, DOOR_TYPE_PASSAGE},
+ {181202, BOSS_NOTH, DOOR_TYPE_PASSAGE},
+ {181202, BOSS_HEIGAN, DOOR_TYPE_ROOM},
+ {181203, BOSS_HEIGAN, DOOR_TYPE_PASSAGE},
+ {181241, BOSS_HEIGAN, DOOR_TYPE_PASSAGE},
+ {181241, BOSS_LOATHEB, DOOR_TYPE_ROOM},
+ {0, 0, DOOR_TYPE_ROOM}, // EOF
+};
+
#define SPELL_ERUPTION 29371
const float HeiganPos[2] = {2796, -3707};
@@ -61,6 +73,7 @@ struct TRINITY_DLL_DECL instance_naxxramas : public ScriptedInstance
, Sapphiron(NULL)
{
SetBossNumber(15);
+ LoadDoorData(doorData);
}
std::set<GameObject*> HeiganEruption[4];
@@ -88,13 +101,10 @@ struct TRINITY_DLL_DECL instance_naxxramas : public ScriptedInstance
switch(go->GetEntry())
{
- case 181200: SetBossRoomDoor(BOSS_NOTH, go, add); break;
- case 181201: SetBossPassageDoor(BOSS_NOTH, go, add); break;
- case 181202: SetBossRoomDoor(BOSS_HEIGAN, go, add); break;
- case 181203: SetBossPassageDoor(BOSS_HEIGAN, go, add); break;
- case 181241: SetBossRoomDoor(BOSS_LOATHEB, go, add); break;
- case GO_BIRTH: if(!add && Sapphiron) Sapphiron->AI()->DoAction(DATA_SAPPHIRON_BIRTH); break;
+ case GO_BIRTH: if(!add && Sapphiron) Sapphiron->AI()->DoAction(DATA_SAPPHIRON_BIRTH); return;
}
+
+ AddDoor(go, add);
}
void SetData(uint32 id, uint32 value)