diff options
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); |