aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp481
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp23
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h262
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/ulduar_teleporter.cpp2
4 files changed, 390 insertions, 378 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp
index aebc11f33a6..bc9a6fdc6d3 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp
@@ -31,139 +31,143 @@
#include "ObjectMgr.h"
#include "ulduar.h"
-
enum Spells
{
- SPELL_PURSUED = 62374,
- SPELL_GATHERING_SPEED = 62375,
- SPELL_BATTERING_RAM = 62376,
- SPELL_FLAME_VENTS = 62396,
- SPELL_MISSILE_BARRAGE = 62400,
- SPELL_SYSTEMS_SHUTDOWN = 62475,
- SPELL_OVERLOAD_CIRCUIT = 62399,
- SPELL_START_THE_ENGINE = 62472,
- SPELL_SEARING_FLAME = 62402,
- SPELL_BLAZE = 62292,
- SPELL_TAR_PASSIVE = 62288,
- SPELL_SMOKE_TRAIL = 63575,
- SPELL_ELECTROSHOCK = 62522,
- SPELL_NAPALM = 63666,
+ SPELL_PURSUED = 62374,
+ SPELL_GATHERING_SPEED = 62375,
+ SPELL_BATTERING_RAM = 62376,
+ SPELL_FLAME_VENTS = 62396,
+ SPELL_MISSILE_BARRAGE = 62400,
+ SPELL_SYSTEMS_SHUTDOWN = 62475,
+ SPELL_OVERLOAD_CIRCUIT = 62399,
+ SPELL_START_THE_ENGINE = 62472,
+ SPELL_SEARING_FLAME = 62402,
+ SPELL_BLAZE = 62292,
+ SPELL_TAR_PASSIVE = 62288,
+ SPELL_SMOKE_TRAIL = 63575,
+ SPELL_ELECTROSHOCK = 62522,
+ SPELL_NAPALM = 63666,
//TOWER Additional SPELLS
- SPELL_THORIM_S_HAMMER = 62911, // Tower of Storms
- SPELL_MIMIRON_S_INFERNO = 62909, // Tower of Flames
- SPELL_HODIR_S_FURY = 62533, // Tower of Frost
- SPELL_FREYA_S_WARD = 62906, // Tower of Nature
- SPELL_FREYA_SUMMONS = 62947, // Tower of Nature
+ SPELL_THORIM_S_HAMMER = 62911, // Tower of Storms
+ SPELL_MIMIRON_S_INFERNO = 62909, // Tower of Flames
+ SPELL_HODIR_S_FURY = 62533, // Tower of Frost
+ SPELL_FREYA_S_WARD = 62906, // Tower of Nature
+ SPELL_FREYA_SUMMONS = 62947, // Tower of Nature
//TOWER ap & health spells
- SPELL_BUFF_TOWER_OF_STORMS = 65076,
- SPELL_BUFF_TOWER_OF_FLAMES = 65075,
- SPELL_BUFF_TOWER_OF_FR0ST = 65077,
- SPELL_BUFF_TOWER_OF_LIFE = 64482,
+ SPELL_BUFF_TOWER_OF_STORMS = 65076,
+ SPELL_BUFF_TOWER_OF_FLAMES = 65075,
+ SPELL_BUFF_TOWER_OF_FR0ST = 65077,
+ SPELL_BUFF_TOWER_OF_LIFE = 64482,
//Additional Spells
- SPELL_LASH = 65062,
- SPELL_FREYA_S_WARD_EFFECT_1 = 62947,
- SPELL_FREYA_S_WARD_EFFECT_2 = 62907,
- SPELL_AUTO_REPAIR = 62705,
- AURA_DUMMY_BLUE = 63294,
- AURA_DUMMY_GREEN = 63295,
- AURA_DUMMY_YELLOW = 63292,
- SPELL_LIQUID_PYRITE = 62494,
- SPELL_DUSTY_EXPLOSION = 63360,
- SPELL_DUST_CLOUD_IMPACT = 54740,
- AURA_STEALTH_DETECTION = 18950,
- SPELL_RIDE_VEHICLE = 46598,
+ SPELL_LASH = 65062,
+ SPELL_FREYA_S_WARD_EFFECT_1 = 62947,
+ SPELL_FREYA_S_WARD_EFFECT_2 = 62907,
+ SPELL_AUTO_REPAIR = 62705,
+ AURA_DUMMY_BLUE = 63294,
+ AURA_DUMMY_GREEN = 63295,
+ AURA_DUMMY_YELLOW = 63292,
+ SPELL_LIQUID_PYRITE = 62494,
+ SPELL_DUSTY_EXPLOSION = 63360,
+ SPELL_DUST_CLOUD_IMPACT = 54740,
+ AURA_STEALTH_DETECTION = 18950,
+ SPELL_RIDE_VEHICLE = 46598,
};
enum Creatures
{
- NPC_SEAT = 33114,
- NPC_MECHANOLIFT = 33214,
- NPC_LIQUID = 33189,
- NPC_CONTAINER = 33218,
- NPC_THORIM_BEACON = 33365,
- NPC_MIMIRON_BEACON = 33370,
- NPC_HODIR_BEACON = 33212,
- NPC_FREYA_BEACON = 33367,
- NPC_THORIM_TARGET_BEACON = 33364,
- NPC_MIMIRON_TARGET_BEACON = 33369,
- NPC_HODIR_TARGET_BEACON = 33108,
- NPC_FREYA_TARGET_BEACON = 33366,
- NPC_LOREKEEPER = 33686, //Hard mode starter
- NPC_BRANZ_BRONZBEARD = 33579,
- NPC_DELORAH = 33701,
- NPC_ULDUAR_GAUNTLET_GENERATOR = 33571, // Trigger tied to towers
+ NPC_SEAT = 33114,
+ NPC_MECHANOLIFT = 33214,
+ NPC_LIQUID = 33189,
+ NPC_CONTAINER = 33218,
+ NPC_THORIM_BEACON = 33365,
+ NPC_MIMIRON_BEACON = 33370,
+ NPC_HODIR_BEACON = 33212,
+ NPC_FREYA_BEACON = 33367,
+ NPC_THORIM_TARGET_BEACON = 33364,
+ NPC_MIMIRON_TARGET_BEACON = 33369,
+ NPC_HODIR_TARGET_BEACON = 33108,
+ NPC_FREYA_TARGET_BEACON = 33366,
+ NPC_LOREKEEPER = 33686, // Hard mode starter
+ NPC_BRANZ_BRONZBEARD = 33579,
+ NPC_DELORAH = 33701,
+ NPC_ULDUAR_GAUNTLET_GENERATOR = 33571, // Trigger tied to towers
};
enum Towers
{
- GO_TOWER_OF_STORMS = 194377,
- GO_TOWER_OF_FLAMES = 194371,
- GO_TOWER_OF_FROST = 194370,
- GO_TOWER_OF_LIFE = 194375,
+ GO_TOWER_OF_STORMS = 194377,
+ GO_TOWER_OF_FLAMES = 194371,
+ GO_TOWER_OF_FROST = 194370,
+ GO_TOWER_OF_LIFE = 194375,
};
enum Events
{
- EVENT_PURSUE = 1,
- EVENT_MISSILE = 2,
- EVENT_VENT = 3,
- EVENT_SPEED = 4,
- EVENT_SUMMON = 5,
- EVENT_SHUTDOWN = 6,
- EVENT_REPAIR = 7,
- EVENT_THORIM_S_HAMMER = 8, // Tower of Storms
- EVENT_MIMIRON_S_INFERNO = 9, // Tower of Flames
- EVENT_HODIR_S_FURY = 10, // Tower of Frost
- EVENT_FREYA_S_WARD = 11, // Tower of Nature
+ EVENT_PURSUE = 1,
+ EVENT_MISSILE = 2,
+ EVENT_VENT = 3,
+ EVENT_SPEED = 4,
+ EVENT_SUMMON = 5,
+ EVENT_SHUTDOWN = 6,
+ EVENT_REPAIR = 7,
+ EVENT_THORIM_S_HAMMER = 8, // Tower of Storms
+ EVENT_MIMIRON_S_INFERNO = 9, // Tower of Flames
+ EVENT_HODIR_S_FURY = 10, // Tower of Frost
+ EVENT_FREYA_S_WARD = 11, // Tower of Nature
};
enum Seats
{
- SEAT_PLAYER = 0,
- SEAT_TURRET = 1,
- SEAT_DEVICE = 2,
- SEAT_CANNON = 7,
+ SEAT_PLAYER = 0,
+ SEAT_TURRET = 1,
+ SEAT_DEVICE = 2,
+ SEAT_CANNON = 7,
};
enum Vehicles
{
- VEHICLE_SIEGE = 33060,
- VEHICLE_CHOPPER = 33062,
- VEHICLE_DEMOLISHER = 33109,
+ VEHICLE_SIEGE = 33060,
+ VEHICLE_CHOPPER = 33062,
+ VEHICLE_DEMOLISHER = 33109,
};
-#define EMOTE_PURSUE "Flame Leviathan pursues $N."
-#define EMOTE_OVERLOAD "Flame Leviathan's circuits overloaded."
-#define EMOTE_REPAIR "Automatic repair sequence initiated."
-#define DATA_SHUTOUT 29112912 // 2911, 2912 are achievement IDs
-#define DATA_UNBROKEN 29052906 // 2905, 2906 are achievement IDs
+#define EMOTE_PURSUE "Flame Leviathan pursues $N."
+#define EMOTE_OVERLOAD "Flame Leviathan's circuits overloaded."
+#define EMOTE_REPAIR "Automatic repair sequence initiated."
+#define DATA_SHUTOUT 29112912 // 2911, 2912 are achievement IDs
+#define DATA_UNBROKEN 29052906 // 2905, 2906 are achievement IDs
+#define DATA_ORBIT_ACHIEVEMENTS 1
+#define VEHICLE_SPAWNS 5
+#define FREYA_SPAWNS 4
enum Yells
{
- SAY_AGGRO = -1603060,
- SAY_SLAY = -1603061,
- SAY_DEATH = -1603062,
- SAY_TARGET_1 = -1603063,
- SAY_TARGET_2 = -1603064,
- SAY_TARGET_3 = -1603065,
- SAY_HARDMODE = -1603066,
- SAY_TOWER_NONE = -1603067,
- SAY_TOWER_FROST = -1603068,
- SAY_TOWER_FLAME = -1603069,
- SAY_TOWER_NATURE = -1603070,
- SAY_TOWER_STORM = -1603071,
- SAY_PLAYER_RIDING = -1603072,
- SAY_OVERLOAD_1 = -1603073,
- SAY_OVERLOAD_2 = -1603074,
- SAY_OVERLOAD_3 = -1603075,
+ SAY_AGGRO = -1603060,
+ SAY_SLAY = -1603061,
+ SAY_DEATH = -1603062,
+ SAY_TARGET_1 = -1603063,
+ SAY_TARGET_2 = -1603064,
+ SAY_TARGET_3 = -1603065,
+ SAY_HARDMODE = -1603066,
+ SAY_TOWER_NONE = -1603067,
+ SAY_TOWER_FROST = -1603068,
+ SAY_TOWER_FLAME = -1603069,
+ SAY_TOWER_NATURE = -1603070,
+ SAY_TOWER_STORM = -1603071,
+ SAY_PLAYER_RIDING = -1603072,
+ SAY_OVERLOAD_1 = -1603073,
+ SAY_OVERLOAD_2 = -1603074,
+ SAY_OVERLOAD_3 = -1603075,
};
-enum actions
+enum MiscellanousData
{
- ACTION_TOWER_OF_STORM_DESTROYED = 1,
- ACTION_TOWER_OF_FROST_DESTROYED = 2,
- ACTION_TOWER_OF_FLAMES_DESTROYED = 3,
- ACTION_TOWER_OF_LIFE_DESTROYED = 4,
+ // Other actions are in Ulduar.h
+ ACTION_START_HARD_MODE = 5,
+ ACTION_SPAWN_VEHICLES = 6,
+ // Amount of seats depending on Raid mode
+ TWO_SEATS = 2,
+ FOUR_SEATS = 4,
};
Position const Center[]=
@@ -171,7 +175,12 @@ Position const Center[]=
{354.8771f, -12.90240f, 409.803650f, 0.0f},
};
-Position const PosSiege[5] =
+Position const InfernoStart[]=
+{
+ {390.93f, -13.91f, 409.81f, 0.0f},
+};
+
+Position const PosSiege[VEHICLE_SPAWNS] =
{
{-814.59f, -64.54f, 429.92f, 5.969f},
{-784.37f, -33.31f, 429.92f, 5.096f},
@@ -180,7 +189,7 @@ Position const PosSiege[5] =
{-812.83f, -77.71f, 429.92f, 0.046f},
};
-Position const PosChopper[5] =
+Position const PosChopper[VEHICLE_SPAWNS] =
{
{-717.83f, -106.56f, 430.02f, 0.122f},
{-717.83f, -114.23f, 430.44f, 0.122f},
@@ -189,7 +198,7 @@ Position const PosChopper[5] =
{-718.45f, -123.58f, 430.41f, 0.085f},
};
-Position const PosDemolisher[5] =
+Position const PosDemolisher[VEHICLE_SPAWNS] =
{
{-724.12f, -176.64f, 430.03f, 2.543f},
{-766.70f, -225.03f, 430.50f, 1.710f},
@@ -198,7 +207,13 @@ Position const PosDemolisher[5] =
{-798.01f, -227.24f, 429.84f, 1.446f},
};
-#define DATA_ORBIT_ACHIEVEMENTS 1
+Position const FreyaBeacons[FREYA_SPAWNS] =
+{
+ {377.02f, -119.10f, 409.81f, 0.0f},
+ {185.62f, -119.10f, 409.81f, 0.0f},
+ {377.02f, 54.78f, 409.81f, 0.0f},
+ {185.62f, 54.78f, 409.81f, 0.0f},
+};
class boss_flame_leviathan : public CreatureScript
{
@@ -244,6 +259,7 @@ class boss_flame_leviathan : public CreatureScript
void Reset()
{
_Reset();
+ //resets shutdown counter to 0. 2 or 4 depending on raid mode
Shutdown = 0;
me->SetReactState(REACT_DEFENSIVE);
}
@@ -298,7 +314,8 @@ class boss_flame_leviathan : public CreatureScript
DoScriptText(SAY_AGGRO, me);
}
- // TODO: effect 0 and effect 1 may be on different target
+ //TODO: effect 0 and effect 1 may be on different target
+ //TODO: Move to spellscript
void SpellHitTarget(Unit* target, SpellEntry const* spell)
{
if (spell->Id == SPELL_PURSUED)
@@ -354,7 +371,7 @@ class boss_flame_leviathan : public CreatureScript
events.Update(diff);
- if (Shutdown == RAID_MODE(2, 4))
+ if (Shutdown == RAID_MODE(TWO_SEATS, FOUR_SEATS))
{
Shutdown = 0;
events.ScheduleEvent(EVENT_SHUTDOWN, 4000);
@@ -381,134 +398,111 @@ class boss_flame_leviathan : public CreatureScript
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
- uint32 eventId = events.GetEvent();
-
- switch(eventId)
+ while (uint32 eventId = events.ExecuteEvent())
{
- case 0:
- break; // this is a must
- case EVENT_PURSUE:
- DoScriptText(RAND(SAY_TARGET_1, SAY_TARGET_2, SAY_TARGET_3), me);
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 75, true))
- {
- me->AddAura(SPELL_PURSUED, target);
- me->MonsterTextEmote(EMOTE_PURSUE, target->GetGUID(), true);
- }
- events.RepeatEvent(30*IN_MILLISECONDS);
- break;
- case EVENT_MISSILE:
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
- DoCast(target, SPELL_MISSILE_BARRAGE);
- events.RepeatEvent(1500);
- break;
- case EVENT_VENT:
- DoCastAOE(SPELL_FLAME_VENTS);
- events.RepeatEvent(20*IN_MILLISECONDS);
- break;
- case EVENT_SPEED:
- DoCastAOE(SPELL_GATHERING_SPEED);
- events.RepeatEvent(15*IN_MILLISECONDS);
- break;
- case EVENT_SUMMON:
- if (summons.size() < 15)
- if (Creature* lift = DoSummonFlyer(NPC_MECHANOLIFT, me, 30.0f, 50.0f, 0))
- lift->GetMotionMaster()->MoveRandom(100);
- events.RepeatEvent(2*IN_MILLISECONDS);
- break;
- case EVENT_SHUTDOWN:
- DoScriptText(RAND(SAY_OVERLOAD_1, SAY_OVERLOAD_2, SAY_OVERLOAD_3), me);
- me->MonsterTextEmote(EMOTE_OVERLOAD, 0, true);
- me->AddAura(SPELL_SYSTEMS_SHUTDOWN, me);
- me->RemoveAurasDueToSpell(SPELL_GATHERING_SPEED);
- events.ScheduleEvent(EVENT_REPAIR, 4000);
- events.CancelEvent(EVENT_SHUTDOWN);
- break;
- case EVENT_REPAIR:
- me->MonsterTextEmote(EMOTE_REPAIR, 0, true);
- me->ClearUnitState(UNIT_STAT_STUNNED | UNIT_STAT_ROOT);
- events.ScheduleEvent(EVENT_SHUTDOWN, 150*IN_MILLISECONDS);
- events.CancelEvent(EVENT_REPAIR);
- break;
- case EVENT_THORIM_S_HAMMER: // Tower of Storms
- for (uint8 i = 0; i < 7; ++i)
- {
- if (Creature* thorim = DoSummon(NPC_THORIM_BEACON, me, float(urand(20, 60)), 20000, TEMPSUMMON_TIMED_DESPAWN))
- thorim->GetMotionMaster()->MoveRandom(100);
- }
- DoScriptText(SAY_TOWER_STORM, me);
- events.CancelEvent(EVENT_THORIM_S_HAMMER);
- break;
- case EVENT_MIMIRON_S_INFERNO: // Tower of Flames
- me->SummonCreature(NPC_MIMIRON_BEACON, 390.93f, -13.91f, 409.81f);
- DoScriptText(SAY_TOWER_FLAME, me);
- events.CancelEvent(EVENT_MIMIRON_S_INFERNO);
- break;
- case EVENT_HODIR_S_FURY: // Tower of Frost
- for (uint8 i = 0; i < 7; ++i)
- {
- if (Creature* hodir = DoSummon(NPC_HODIR_BEACON, me, 50, 0))
- hodir->GetMotionMaster()->MoveRandom(100);
- }
- DoScriptText(SAY_TOWER_FROST, me);
- events.CancelEvent(EVENT_HODIR_S_FURY);
- break;
- case EVENT_FREYA_S_WARD: // Tower of Nature
- DoScriptText(SAY_TOWER_NATURE, me);
- StartFreyaEvent();
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
- DoCast(target, SPELL_FREYA_S_WARD);
- events.CancelEvent(EVENT_FREYA_S_WARD);
- break;
- default:
- events.PopEvent();
- break;
+ switch (eventId)
+ {
+ case EVENT_PURSUE:
+ DoScriptText(RAND(SAY_TARGET_1, SAY_TARGET_2, SAY_TARGET_3), me);
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 75, true))
+ {
+ me->CastSpell(target, SPELL_PURSUED, true);
+ me->MonsterTextEmote(EMOTE_PURSUE, target->GetGUID(), true);
+ }
+ events.RepeatEvent(30*IN_MILLISECONDS);
+ break;
+ case EVENT_MISSILE:
+ DoCast(me, SPELL_MISSILE_BARRAGE, true);
+ events.RepeatEvent(2*IN_MILLISECONDS);
+ break;
+ case EVENT_VENT:
+ DoCastAOE(SPELL_FLAME_VENTS);
+ events.RepeatEvent(20*IN_MILLISECONDS);
+ break;
+ case EVENT_SPEED:
+ DoCastAOE(SPELL_GATHERING_SPEED);
+ events.RepeatEvent(15*IN_MILLISECONDS);
+ break;
+ case EVENT_SUMMON:
+ if (summons.size() < 15)
+ if (Creature* lift = DoSummonFlyer(NPC_MECHANOLIFT, me, 30.0f, 50.0f, 0))
+ lift->GetMotionMaster()->MoveRandom(100);
+ events.RepeatEvent(2*IN_MILLISECONDS);
+ break;
+ case EVENT_SHUTDOWN:
+ DoScriptText(RAND(SAY_OVERLOAD_1, SAY_OVERLOAD_2, SAY_OVERLOAD_3), me);
+ me->MonsterTextEmote(EMOTE_OVERLOAD, 0, true);
+ me->CastSpell(me, SPELL_SYSTEMS_SHUTDOWN, true);
+ me->RemoveAurasDueToSpell(SPELL_GATHERING_SPEED);
+ events.ScheduleEvent(EVENT_REPAIR, 4000);
+ events.CancelEvent(EVENT_SHUTDOWN);
+ break;
+ case EVENT_REPAIR:
+ me->MonsterTextEmote(EMOTE_REPAIR, 0, true);
+ me->ClearUnitState(UNIT_STAT_STUNNED | UNIT_STAT_ROOT);
+ events.ScheduleEvent(EVENT_SHUTDOWN, 150*IN_MILLISECONDS);
+ events.CancelEvent(EVENT_REPAIR);
+ break;
+ case EVENT_THORIM_S_HAMMER: // Tower of Storms
+ for (uint8 i = 0; i < 7; ++i)
+ {
+ if (Creature* thorim = DoSummon(NPC_THORIM_BEACON, me, float(urand(20, 60)), 20000, TEMPSUMMON_TIMED_DESPAWN))
+ thorim->GetMotionMaster()->MoveRandom(100);
+ }
+ DoScriptText(SAY_TOWER_STORM, me);
+ events.CancelEvent(EVENT_THORIM_S_HAMMER);
+ break;
+ case EVENT_MIMIRON_S_INFERNO: // Tower of Flames
+ me->SummonCreature(NPC_MIMIRON_BEACON, InfernoStart->GetPositionX(), InfernoStart->GetPositionY(), InfernoStart->GetPositionZ());
+ DoScriptText(SAY_TOWER_FLAME, me);
+ events.CancelEvent(EVENT_MIMIRON_S_INFERNO);
+ break;
+ case EVENT_HODIR_S_FURY: // Tower of Frost
+ for (uint8 i = 0; i < 7; ++i)
+ {
+ if (Creature* hodir = DoSummon(NPC_HODIR_BEACON, me, 50, 0))
+ hodir->GetMotionMaster()->MoveRandom(100);
+ }
+ DoScriptText(SAY_TOWER_FROST, me);
+ events.CancelEvent(EVENT_HODIR_S_FURY);
+ break;
+ case EVENT_FREYA_S_WARD: // Tower of Nature
+ DoScriptText(SAY_TOWER_NATURE, me);
+ for (int32 i = 0; i < 4; ++i)
+ me->SummonCreature(NPC_FREYA_BEACON, FreyaBeacons[i]);
+
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
+ DoCast(target, SPELL_FREYA_S_WARD);
+ events.CancelEvent(EVENT_FREYA_S_WARD);
+ break;
+ }
}
+ //TODO: Fix this spell, gets applied on players who are on leviathan should be excluded?
/*if (me->IsWithinMeleeRange(me->getVictim())) //bugged spell casts on units that are boarded on leviathan
DoSpellAttackIfReady(SPELL_BATTERING_RAM);*/
DoMeleeAttackIfReady();
}
- void StartFreyaEvent()//summon these 4 on each corner wich wil spawn additional hostile mobs
- {
- me->SummonCreature(NPC_FREYA_BEACON, 377.02f, -119.10f, 409.81f);
- me->SummonCreature(NPC_FREYA_BEACON, 377.02f, 54.78f, 409.81f);
- me->SummonCreature(NPC_FREYA_BEACON, 185.62f, 54.78f, 409.81f);
- me->SummonCreature(NPC_FREYA_BEACON, 185.62f, -119.10f, 409.81f);
- }
-
void DoAction(int32 const action)
{
- // Start encounter
- if (action == 10)
+ if (action && action <= 4) // Tower destruction, debuff leviathan loot and reduce active tower count
{
- if (!me->isDead())
- {
- me->SetHomePosition(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ(), 0);
- me->GetMotionMaster()->MoveCharge(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ()); //position center
- me->SetReactState(REACT_AGGRESSIVE);
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
- return;
- }
- }
-
- if (action && action <= 4) // Tower destruction, debuff leviathan loot and reduce active tower
- {
- if (me->HasLootMode(31) && ActiveTowersCount == 4)
+ if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1 | LOOT_MODE_HARD_MODE_2 | LOOT_MODE_HARD_MODE_3 | LOOT_MODE_HARD_MODE_4) && ActiveTowersCount == 4)
{
me->RemoveLootMode(LOOT_MODE_HARD_MODE_4);
--ActiveTowersCount;
}
- if (me->HasLootMode(15) && ActiveTowersCount == 3)
+ if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1 | LOOT_MODE_HARD_MODE_2 | LOOT_MODE_HARD_MODE_3) && ActiveTowersCount == 3)
{
me->RemoveLootMode(LOOT_MODE_HARD_MODE_3);
--ActiveTowersCount;
}
- if (me->HasLootMode(7) && ActiveTowersCount == 2)
+ if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1 | LOOT_MODE_HARD_MODE_2) && ActiveTowersCount == 2)
{
me->RemoveLootMode(LOOT_MODE_HARD_MODE_2);
--ActiveTowersCount;
}
- if (me->HasLootMode(3) && ActiveTowersCount == 1)
+ if (me->HasLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1) && ActiveTowersCount == 1)
{
me->RemoveLootMode(LOOT_MODE_HARD_MODE_1);
--ActiveTowersCount;
@@ -517,26 +511,36 @@ class boss_flame_leviathan : public CreatureScript
switch (action)
{
- case 0: // Activate hard-mode setting counter to 4 towers, enable all towers apply buffs on levithian
- ActiveTowers = true;
- towerOfStorms = true;
- towerOfLife = true;
- towerOfFlames = true;
- towerOfFrost = true;
- me->SetLootMode(31);
- break;
- case ACTION_TOWER_OF_STORM_DESTROYED: // Tower of Storms destroyed
+ case ACTION_TOWER_OF_STORM_DESTROYED:
towerOfStorms = false;
break;
- case ACTION_TOWER_OF_FROST_DESTROYED: // Tower of Frost destroyed
+ case ACTION_TOWER_OF_FROST_DESTROYED:
towerOfFrost = false;
break;
- case ACTION_TOWER_OF_FLAMES_DESTROYED: // Tower of Flames destroyed
+ case ACTION_TOWER_OF_FLAMES_DESTROYED:
towerOfFlames = false;
break;
- case ACTION_TOWER_OF_LIFE_DESTROYED: // Tower of Nature destroyed
+ case ACTION_TOWER_OF_LIFE_DESTROYED:
towerOfLife = false;
break;
+ case ACTION_START_HARD_MODE: // Activate hard-mode enable all towers, apply buffs on leviathan
+ ActiveTowers = true;
+ towerOfStorms = true;
+ towerOfLife = true;
+ towerOfFlames = true;
+ towerOfFrost = true;
+ me->SetLootMode(LOOT_MODE_DEFAULT | LOOT_MODE_HARD_MODE_1 | LOOT_MODE_HARD_MODE_2 | LOOT_MODE_HARD_MODE_3 | LOOT_MODE_HARD_MODE_4);
+ break;
+ case ACTION_MOVE_TO_CENTER_POSITION: // Triggered by 2 Collossus near door
+ if (!me->isDead())
+ {
+ me->SetHomePosition(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ(), 0);
+ me->GetMotionMaster()->MoveCharge(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ()); //position center
+ me->SetReactState(REACT_AGGRESSIVE);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
+ return;
+ }
+ break;
default:
break;
}
@@ -628,7 +632,7 @@ class boss_flame_leviathan_defense_cannon : public CreatureScript
void Reset ()
{
- NapalmTimer = 5000;
+ NapalmTimer = 5*IN_MILLISECONDS;
DoCast(me, AURA_STEALTH_DETECTION);
}
@@ -833,7 +837,7 @@ class npc_pool_of_tar : public CreatureScript
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_PASSIVE);
- me->AddAura(SPELL_TAR_PASSIVE, me);
+ me->CastSpell(me, SPELL_TAR_PASSIVE, true);
}
void DamageTaken(Unit* /*who*/, uint32& damage)
@@ -873,7 +877,7 @@ class npc_colossus : public CreatureScript
void JustDied(Unit* /*Who*/)
{
if (me->GetHomePosition().IsInDist(Center, 50.f))
- instance->SetData(TYPE_COLOSSUS, instance->GetData(TYPE_COLOSSUS)+1);
+ instance->SetData(DATA_COLOSSUS, instance->GetData(DATA_COLOSSUS)+1);
}
void UpdateAI(uint32 const /*diff*/)
@@ -901,7 +905,7 @@ class npc_thorims_hammer : public CreatureScript
npc_thorims_hammerAI(Creature* creature) : ScriptedAI(creature)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- me->AddAura(AURA_DUMMY_BLUE, me);
+ me->CastSpell(me, AURA_DUMMY_BLUE, true);
}
void MoveInLineOfSight(Unit* who)
@@ -916,7 +920,7 @@ class npc_thorims_hammer : public CreatureScript
void UpdateAI(uint32 const /*diff*/)
{
if (!me->HasAura(AURA_DUMMY_BLUE))
- me->AddAura(AURA_DUMMY_BLUE, me);
+ me->CastSpell(me, AURA_DUMMY_BLUE, true);
UpdateVictim();
}
@@ -943,7 +947,7 @@ public:
npc_mimirons_infernoAI(Creature* creature) : npc_escortAI(creature)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
- me->AddAura(AURA_DUMMY_YELLOW, me);
+ me->CastSpell(me, AURA_DUMMY_YELLOW, true);
me->SetReactState(REACT_PASSIVE);
}
@@ -978,7 +982,7 @@ public:
infernoTimer -= diff;
if (!me->HasAura(AURA_DUMMY_YELLOW))
- me->AddAura(AURA_DUMMY_YELLOW, me);
+ me->CastSpell(me, AURA_DUMMY_YELLOW, true);
}
}
};
@@ -995,7 +999,7 @@ class npc_hodirs_fury : public CreatureScript
npc_hodirs_furyAI(Creature* creature) : ScriptedAI(creature)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- me->AddAura(AURA_DUMMY_GREEN, me);
+ me->CastSpell(me, AURA_DUMMY_GREEN, true);
}
void MoveInLineOfSight(Unit* who)
@@ -1010,7 +1014,7 @@ class npc_hodirs_fury : public CreatureScript
void UpdateAI(uint32 const /*diff*/)
{
if (!me->HasAura(AURA_DUMMY_GREEN))
- me->AddAura(AURA_DUMMY_GREEN, me);
+ me->CastSpell(me, AURA_DUMMY_GREEN, true);
UpdateVictim();
}
@@ -1031,7 +1035,7 @@ class npc_freyas_ward : public CreatureScript
{
npc_freyas_wardAI(Creature* creature) : ScriptedAI(creature)
{
- me->AddAura(AURA_DUMMY_GREEN, me);
+ me->CastSpell(me, AURA_DUMMY_GREEN, true);
}
uint32 summonTimer;
@@ -1053,7 +1057,7 @@ class npc_freyas_ward : public CreatureScript
summonTimer -= diff;
if (!me->HasAura(AURA_DUMMY_GREEN))
- me->AddAura(AURA_DUMMY_GREEN, me);
+ me->CastSpell(me, AURA_DUMMY_GREEN, true);
UpdateVictim();
}
@@ -1110,6 +1114,7 @@ class npc_freya_ward_summon : public CreatureScript
//npc lore keeper
#define GOSSIP_ITEM_1 "Activate secondary defensive systems"
#define GOSSIP_ITEM_2 "Confirmed"
+
class npc_lorekeeper : public CreatureScript
{
public:
@@ -1124,7 +1129,7 @@ class npc_lorekeeper : public CreatureScript
void DoAction(int32 const action)
{
// Start encounter
- if (action == 0)
+ if (action == ACTION_SPAWN_VEHICLES)
{
for (int32 i = 0; i < RAID_MODE(2, 5); ++i)
DoSummon(VEHICLE_SIEGE, PosSiege[i], 3000, TEMPSUMMON_CORPSE_TIMED_DESPAWN);
@@ -1162,9 +1167,9 @@ class npc_lorekeeper : public CreatureScript
if (Creature* leviathan = instance->instance->GetCreature(instance->GetData64(BOSS_LEVIATHAN)))
{
- CAST_AI(boss_flame_leviathan::boss_flame_leviathanAI, (leviathan->AI()))->DoAction(0); //enable hard mode activating the 4 additional events spawning additional vehicles
+ leviathan->AI()->DoAction(ACTION_START_HARD_MODE);
creature->SetVisible(false);
- creature->AI()->DoAction(0); // spawn the vehicles
+ creature->AI()->DoAction(ACTION_SPAWN_VEHICLES); // spawn the vehicles
if (Creature* Delorah = creature->FindNearestCreature(NPC_DELORAH, 1000, true))
{
if (Creature* Branz = creature->FindNearestCreature(NPC_BRANZ_BRONZBEARD, 1000, true))
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp
index 8c2d2d815f6..5ec29a0f78d 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp
@@ -390,23 +390,20 @@ class instance_ulduar : public InstanceMapScript
switch (eventId)
{
case EVENT_TOWER_OF_STORM_DESTROYED:
- FlameLeviathan->AI()->DoAction(1);
+ FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_STORM_DESTROYED);
break;
case EVENT_TOWER_OF_FROST_DESTROYED:
- FlameLeviathan->AI()->DoAction(2);
+ FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_FROST_DESTROYED);
break;
case EVENT_TOWER_OF_FLAMES_DESTROYED:
- FlameLeviathan->AI()->DoAction(3);
+ FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_FLAMES_DESTROYED);
break;
case EVENT_TOWER_OF_LIFE_DESTROYED:
- FlameLeviathan->AI()->DoAction(4);
+ FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_LIFE_DESTROYED);
break;
}
}
- void ProcessEvent(Unit* /*unit*/, uint32 /*eventId*/)
- {
- }
bool SetBossState(uint32 type, EncounterState state)
{
@@ -475,12 +472,12 @@ class instance_ulduar : public InstanceMapScript
{
switch (type)
{
- case TYPE_COLOSSUS:
- Encounter[TYPE_COLOSSUS] = data;
+ case DATA_COLOSSUS:
+ Encounter[DATA_COLOSSUS] = data;
if (data == 2)
{
if (Creature* Leviathan = instance->GetCreature(LeviathanGUID))
- Leviathan->AI()->DoAction(10);
+ Leviathan->AI()->DoAction(ACTION_MOVE_TO_CENTER_POSITION);
if (GameObject* gameObject = instance->GetGameObject(LeviathanGateGUID))
gameObject->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
SaveToDB();
@@ -591,7 +588,7 @@ class instance_ulduar : public InstanceMapScript
{
switch (type)
{
- case TYPE_COLOSSUS:
+ case DATA_COLOSSUS:
return Encounter[type];
case DATA_HODIR_RARE_CACHE:
return HodirRareCacheData;
@@ -607,7 +604,7 @@ class instance_ulduar : public InstanceMapScript
OUT_SAVE_INST_DATA;
std::ostringstream saveStream;
- saveStream << "U U " << GetBossSaveData() << GetData(TYPE_COLOSSUS);
+ saveStream << "U U " << GetBossSaveData() << GetData(DATA_COLOSSUS);
OUT_SAVE_INST_DATA_COMPLETE;
return saveStream.str();
@@ -637,7 +634,7 @@ class instance_ulduar : public InstanceMapScript
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
tmpState = NOT_STARTED;
- if (i == TYPE_COLOSSUS)
+ if (i == DATA_COLOSSUS)
SetData(i, tmpState);
else
SetBossState(i, EncounterState(tmpState));
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h
index 703e1f6b37b..4175d17e540 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h
@@ -23,156 +23,166 @@
enum UlduarBosses
{
- MAX_ENCOUNTER = 20,
-
- BOSS_LEVIATHAN = 0,
- BOSS_IGNIS = 1,
- BOSS_RAZORSCALE = 2,
- BOSS_XT002 = 3,
- BOSS_ASSEMBLY_OF_IRON = 4,
- BOSS_STEELBREAKER = 5,
- BOSS_MOLGEIM = 6,
- BOSS_BRUNDIR = 7,
- BOSS_KOLOGARN = 8,
- BOSS_AURIAYA = 9,
- BOSS_MIMIRON = 10,
- BOSS_HODIR = 11,
- BOSS_THORIM = 12,
- BOSS_FREYA = 13,
- BOSS_BRIGHTLEAF = 14,
- BOSS_IRONBRANCH = 15,
- BOSS_STONEBARK = 16,
- BOSS_VEZAX = 17,
- BOSS_YOGGSARON = 18,
- BOSS_ALGALON = 19,
- TYPE_COLOSSUS = 20,
-
- // Razorscale
- DATA_EXPEDITION_COMMANDER,
- DATA_RAZORSCALE_CONTROL,
-
- // XT-002
- DATA_TOY_PILE_0,
- DATA_TOY_PILE_1,
- DATA_TOY_PILE_2,
- DATA_TOY_PILE_3,
-
- // Kologarn
- DATA_LEFT_ARM,
- DATA_RIGHT_ARM,
-
- // Hodir
- DATA_HODIR_RARE_CACHE,
+ MAX_ENCOUNTER = 20,
+
+ BOSS_LEVIATHAN = 0,
+ BOSS_IGNIS = 1,
+ BOSS_RAZORSCALE = 2,
+ BOSS_XT002 = 3,
+ BOSS_ASSEMBLY_OF_IRON = 4,
+ BOSS_STEELBREAKER = 5,
+ BOSS_MOLGEIM = 6,
+ BOSS_BRUNDIR = 7,
+ BOSS_KOLOGARN = 8,
+ BOSS_AURIAYA = 9,
+ BOSS_MIMIRON = 10,
+ BOSS_HODIR = 11,
+ BOSS_THORIM = 12,
+ BOSS_FREYA = 13,
+ BOSS_BRIGHTLEAF = 14,
+ BOSS_IRONBRANCH = 15,
+ BOSS_STONEBARK = 16,
+ BOSS_VEZAX = 17,
+ BOSS_YOGGSARON = 18,
+ BOSS_ALGALON = 19,
};
enum UlduarNPCs
{
// General
- NPC_LEVIATHAN = 33113,
- NPC_IGNIS = 33118,
- NPC_RAZORSCALE = 33186,
- NPC_RAZORSCALE_CONTROLLER = 33233,
- NPC_STEELFORGED_DEFFENDER = 33236,
- NPC_EXPEDITION_COMMANDER = 33210,
- NPC_XT002 = 33293,
- NPC_XT_TOY_PILE = 33337,
- NPC_STEELBREAKER = 32867,
- NPC_MOLGEIM = 32927,
- NPC_BRUNDIR = 32857,
- NPC_KOLOGARN = 32930,
- NPC_FOCUSED_EYEBEAM = 33632,
- NPC_FOCUSED_EYEBEAM_RIGHT = 33802,
- NPC_LEFT_ARM = 32933,
- NPC_RIGHT_ARM = 32934,
- NPC_RUBBLE = 33768,
- NPC_AURIAYA = 33515,
- NPC_MIMIRON = 33350,
- NPC_HODIR = 32845,
- NPC_THORIM = 32865,
- NPC_FREYA = 32906,
- NPC_VEZAX = 33271,
- NPC_YOGGSARON = 33288,
- NPC_ALGALON = 32871,
+ NPC_LEVIATHAN = 33113,
+ NPC_IGNIS = 33118,
+ NPC_RAZORSCALE = 33186,
+ NPC_RAZORSCALE_CONTROLLER = 33233,
+ NPC_STEELFORGED_DEFFENDER = 33236,
+ NPC_EXPEDITION_COMMANDER = 33210,
+ NPC_XT002 = 33293,
+ NPC_XT_TOY_PILE = 33337,
+ NPC_STEELBREAKER = 32867,
+ NPC_MOLGEIM = 32927,
+ NPC_BRUNDIR = 32857,
+ NPC_KOLOGARN = 32930,
+ NPC_FOCUSED_EYEBEAM = 33632,
+ NPC_FOCUSED_EYEBEAM_RIGHT = 33802,
+ NPC_LEFT_ARM = 32933,
+ NPC_RIGHT_ARM = 32934,
+ NPC_RUBBLE = 33768,
+ NPC_AURIAYA = 33515,
+ NPC_MIMIRON = 33350,
+ NPC_HODIR = 32845,
+ NPC_THORIM = 32865,
+ NPC_FREYA = 32906,
+ NPC_VEZAX = 33271,
+ NPC_YOGGSARON = 33288,
+ NPC_ALGALON = 32871,
// Mimiron
- NPC_LEVIATHAN_MKII = 33432,
- NPC_VX_001 = 33651,
- NPC_AERIAL_COMMAND_UNIT = 33670,
+ NPC_LEVIATHAN_MKII = 33432,
+ NPC_VX_001 = 33651,
+ NPC_AERIAL_COMMAND_UNIT = 33670,
// Freya's Keepers
- NPC_IRONBRANCH = 32913,
- NPC_BRIGHTLEAF = 32915,
- NPC_STONEBARK = 32914,
+ NPC_IRONBRANCH = 32913,
+ NPC_BRIGHTLEAF = 32915,
+ NPC_STONEBARK = 32914,
// Hodir's Helper NPCs
- NPC_TOR_GREYCLOUD = 32941,
- NPC_KAR_GREYCLOUD = 33333,
- NPC_EIVI_NIGHTFEATHER = 33325,
- NPC_ELLIE_NIGHTFEATHER = 32901,
- NPC_SPIRITWALKER_TARA = 33332,
- NPC_SPIRITWALKER_YONA = 32950,
- NPC_ELEMENTALIST_MAHFUUN = 33328,
- NPC_ELEMENTALIST_AVUUN = 32900,
- NPC_AMIRA_BLAZEWEAVER = 33331,
- NPC_VEESHA_BLAZEWEAVER = 32946,
- NPC_MISSY_FLAMECUFFS = 32893,
- NPC_SISSY_FLAMECUFFS = 33327,
- NPC_BATTLE_PRIEST_ELIZA = 32948,
- NPC_BATTLE_PRIEST_GINA = 33330,
- NPC_FIELD_MEDIC_PENNY = 32897,
- NPC_FIELD_MEDIC_JESSI = 33326,
+ NPC_TOR_GREYCLOUD = 32941,
+ NPC_KAR_GREYCLOUD = 33333,
+ NPC_EIVI_NIGHTFEATHER = 33325,
+ NPC_ELLIE_NIGHTFEATHER = 32901,
+ NPC_SPIRITWALKER_TARA = 33332,
+ NPC_SPIRITWALKER_YONA = 32950,
+ NPC_ELEMENTALIST_MAHFUUN = 33328,
+ NPC_ELEMENTALIST_AVUUN = 32900,
+ NPC_AMIRA_BLAZEWEAVER = 33331,
+ NPC_VEESHA_BLAZEWEAVER = 32946,
+ NPC_MISSY_FLAMECUFFS = 32893,
+ NPC_SISSY_FLAMECUFFS = 33327,
+ NPC_BATTLE_PRIEST_ELIZA = 32948,
+ NPC_BATTLE_PRIEST_GINA = 33330,
+ NPC_FIELD_MEDIC_PENNY = 32897,
+ NPC_FIELD_MEDIC_JESSI = 33326,
// Freya's trash NPCs
- NPC_CORRUPTED_SERVITOR = 33354,
- NPC_MISGUIDED_NYMPH = 33355,
- NPC_GUARDIAN_LASHER = 33430,
- NPC_FOREST_SWARMER = 33431,
- NPC_MANGROVE_ENT = 33525,
- NPC_IRONROOT_LASHER = 33526,
- NPC_NATURES_BLADE = 33527,
- NPC_GUARDIAN_OF_LIFE = 33528,
+ NPC_CORRUPTED_SERVITOR = 33354,
+ NPC_MISGUIDED_NYMPH = 33355,
+ NPC_GUARDIAN_LASHER = 33430,
+ NPC_FOREST_SWARMER = 33431,
+ NPC_MANGROVE_ENT = 33525,
+ NPC_IRONROOT_LASHER = 33526,
+ NPC_NATURES_BLADE = 33527,
+ NPC_GUARDIAN_OF_LIFE = 33528,
};
enum UlduarGameObjects
{
- GO_KOLOGARN_CHEST_HERO = 195047,
- GO_KOLOGARN_CHEST = 195046,
- GO_KOLOGARN_BRIDGE = 194232,
- GO_KOLOGARN_DOOR = 194553,
- GO_THORIM_CHEST_HERO = 194315,
- GO_THORIM_CHEST = 194314,
- GO_HODIR_RARE_CACHE_OF_WINTER = 194200,
- GO_HODIR_RARE_CACHE_OF_WINTER_HERO = 194201,
- GO_HODIR_CHEST_HERO = 194308,
- GO_HODIR_CHEST = 194307,
- GO_FREYA_CHEST_HERO = 194325,
- GO_FREYA_CHEST = 194324,
- GO_LEVIATHAN_DOOR = 194905,
- GO_LEVIATHAN_GATE = 194630,
- GO_VEZAX_DOOR = 194750,
- GO_MOLE_MACHINE = 194316,
- GO_RAZOR_HARPOON_1 = 194542,
- GO_RAZOR_HARPOON_2 = 194541,
- GO_RAZOR_HARPOON_3 = 194543,
- GO_RAZOR_HARPOON_4 = 194519,
- GO_RAZOR_BROKEN_HARPOON = 194565,
- GO_HODIR_DOOR = 194634,
- GO_HODIR_ICE_DOOR = 194441,
- GO_ARCHIVUM_DOOR = 194556,
+ GO_KOLOGARN_CHEST_HERO = 195047,
+ GO_KOLOGARN_CHEST = 195046,
+ GO_KOLOGARN_BRIDGE = 194232,
+ GO_KOLOGARN_DOOR = 194553,
+ GO_THORIM_CHEST_HERO = 194315,
+ GO_THORIM_CHEST = 194314,
+ GO_HODIR_RARE_CACHE_OF_WINTER = 194200,
+ GO_HODIR_RARE_CACHE_OF_WINTER_HERO = 194201,
+ GO_HODIR_CHEST_HERO = 194308,
+ GO_HODIR_CHEST = 194307,
+ GO_FREYA_CHEST_HERO = 194325,
+ GO_FREYA_CHEST = 194324,
+ GO_LEVIATHAN_DOOR = 194905,
+ GO_LEVIATHAN_GATE = 194630,
+ GO_VEZAX_DOOR = 194750,
+ GO_MOLE_MACHINE = 194316,
+ GO_RAZOR_HARPOON_1 = 194542,
+ GO_RAZOR_HARPOON_2 = 194541,
+ GO_RAZOR_HARPOON_3 = 194543,
+ GO_RAZOR_HARPOON_4 = 194519,
+ GO_RAZOR_BROKEN_HARPOON = 194565,
+ GO_HODIR_DOOR = 194634,
+ GO_HODIR_ICE_DOOR = 194441,
+ GO_ARCHIVUM_DOOR = 194556,
};
-enum UlduarTowerEvents
+enum LeviathanData
{
- EVENT_TOWER_OF_STORM_DESTROYED = 21031,
- EVENT_TOWER_OF_FROST_DESTROYED = 21032,
- EVENT_TOWER_OF_FLAMES_DESTROYED = 21033,
- EVENT_TOWER_OF_LIFE_DESTROYED = 21030,
+ EVENT_TOWER_OF_STORM_DESTROYED = 21031,
+ EVENT_TOWER_OF_FROST_DESTROYED = 21032,
+ EVENT_TOWER_OF_FLAMES_DESTROYED = 21033,
+ EVENT_TOWER_OF_LIFE_DESTROYED = 21030,
+ ACTION_TOWER_OF_STORM_DESTROYED = 1,
+ ACTION_TOWER_OF_FROST_DESTROYED = 2,
+ ACTION_TOWER_OF_FLAMES_DESTROYED = 3,
+ ACTION_TOWER_OF_LIFE_DESTROYED = 4,
+ ACTION_MOVE_TO_CENTER_POSITION = 10,
};
enum UlduarAchievementCriteriaIds
{
- CRITERIA_CON_SPEED_ATORY = 21597,
- CRITERIA_DISARMED = 21687,
+ CRITERIA_CON_SPEED_ATORY = 21597,
+ CRITERIA_DISARMED = 21687,
+};
+
+enum UlduarData
+{
+ // Collosus (Leviathan)
+ DATA_COLOSSUS = 20,
+
+ // Razorscale
+ DATA_EXPEDITION_COMMANDER,
+ DATA_RAZORSCALE_CONTROL,
+
+ // XT-002
+ DATA_TOY_PILE_0,
+ DATA_TOY_PILE_1,
+ DATA_TOY_PILE_2,
+ DATA_TOY_PILE_3,
+
+ // Kologarn
+ DATA_LEFT_ARM,
+ DATA_RIGHT_ARM,
+
+ // Hodir
+ DATA_HODIR_RARE_CACHE,
};
template<class AI>
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar_teleporter.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar_teleporter.cpp
index 06ffc252efd..05b1e395d1e 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar_teleporter.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar_teleporter.cpp
@@ -97,7 +97,7 @@ class ulduar_teleporter : public GameObjectScript
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Expedition Base Camp", GOSSIP_SENDER_MAIN, BASE_CAMP);
if (InstanceScript* instance = gameObject->GetInstanceScript())
{
- if (instance->GetData(TYPE_COLOSSUS) == 2) //count of 2 collossus death
+ if (instance->GetData(DATA_COLOSSUS) == 2) //count of 2 collossus death
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Formation Grounds", GOSSIP_SENDER_MAIN, GROUNDS);
if (instance->GetBossState(BOSS_LEVIATHAN) == DONE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Colossal Forge", GOSSIP_SENDER_MAIN, FORGE);