diff options
author | megamage <none@none> | 2009-05-09 14:09:11 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-05-09 14:09:11 -0500 |
commit | 4a0bdedc58db98755a64d9cfb289efe06780c987 (patch) | |
tree | f3f04bdcac610467317c1591a90c6b3bcb82e839 /src | |
parent | 36a3696f350a244e84ccad642b3c98335dc088c2 (diff) |
*Update naxx scripts.
--HG--
branch : trunk
Diffstat (limited to 'src')
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) |