diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2014-08-29 17:46:55 +0200 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2014-08-29 17:46:55 +0200 |
| commit | 01380c66bfe3608196a898324cebf142c3ef2ae3 (patch) | |
| tree | d8361be934288c137a8486aea72602120871852f /src/server/scripts/Northrend | |
| parent | 88809359e7fa84f808aabb528dca2a77a8eb9816 (diff) | |
Core/Misc: some random changes after recent pull requests
Diffstat (limited to 'src/server/scripts/Northrend')
3 files changed, 76 insertions, 83 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index f1d44e72684..3a137a8658e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -172,7 +172,7 @@ enum Spells SPELL_MAGNETIC_CORE = 64436, SPELL_MAGNETIC_CORE_VISUAL = 64438, SPELL_HALF_HEAL = 64188, - SPELL_CLEAR_ALL_DEBUFFS = 34098, // TODO: make use of this spell... + SPELL_CLEAR_ALL_DEBUFFS = 34098, /// @todo: make use of this spell... SPELL_FREEZE_ANIM_STUN = 63354, // used to prevent mkii from doing stuff?.. SPELL_FREEZE_ANIM = 16245 // Idle aura. Freezes animation. }; @@ -303,17 +303,10 @@ enum Actions enum Phases { - // Leviathan MK II - PHASE_LEVIATHAN_SOLO = 1, - PHASE_LEVIATHAN_ASSEMBLED, - - // VX-001 - PHASE_VX001_SOLO, - PHASE_VX001_ASSEMBLED, - - // Aerial Command Unit - PHASE_AERIAL_SOLO, - PHASE_AERIAL_ASSEMBLED + PHASE_LEVIATHAN_MK_II = 1, + PHASE_VX_001, + PHASE_AERIAL_COMMAND_UNIT, + PHASE_VOL7RON }; enum Waypoints @@ -434,7 +427,7 @@ class boss_mimiron : public CreatureScript events.ScheduleEvent(EVENT_SUMMON_FLAMES, 3000); events.ScheduleEvent(EVENT_INTRO_1, 1500); } - + void JustDied(Unit* /*who*/) override { instance->SetBossState(BOSS_MIMIRON, DONE); @@ -456,7 +449,9 @@ class boss_mimiron : public CreatureScript _Reset(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - instance->SetData(DATA_MIMIRON_ELEVATOR, GO_STATE_ACTIVE); + + if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_MIMIRON_ELEVATOR))) + elevator->SetGoState(GO_STATE_ACTIVE); if (_fireFighter) if (Creature* computer = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_COMPUTER))) @@ -526,15 +521,17 @@ class boss_mimiron : public CreatureScript events.ScheduleEvent(EVENT_VX001_ACTIVATION_4, 5000); break; case EVENT_VX001_ACTIVATION_4: - instance->SetData(DATA_MIMIRON_ELEVATOR, GO_STATE_READY); + if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_MIMIRON_ELEVATOR))) + elevator->SetGoState(GO_STATE_READY); if (Unit* worldtrigger = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_MIMIRON_WORLD_TRIGGER))) worldtrigger->CastSpell(worldtrigger, SPELL_ELEVATOR_KNOCKBACK); events.ScheduleEvent(EVENT_VX001_ACTIVATION_5, 6000); break; case EVENT_VX001_ACTIVATION_5: + if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_MIMIRON_ELEVATOR))) + elevator->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE); if (Creature* vx001 = me->SummonCreature(NPC_VX_001, VX001SummonPos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000)) vx001->CastSpell(vx001, SPELL_FREEZE_ANIM); - instance->SetData(DATA_MIMIRON_ELEVATOR, GO_STATE_ACTIVE_ALTERNATIVE); events.ScheduleEvent(EVENT_VX001_ACTIVATION_6, 19000); break; case EVENT_VX001_ACTIVATION_6: @@ -579,7 +576,7 @@ class boss_mimiron : public CreatureScript break; case EVENT_AERIAL_ACTIVATION_6: if (Creature* acu = me->GetVehicleCreatureBase()) - acu->GetAI()->DoAction(_fireFighter? DO_HARDMODE_AERIAL : DO_START_AERIAL); + acu->AI()->DoAction(_fireFighter? DO_HARDMODE_AERIAL : DO_START_AERIAL); break; case EVENT_VOL7RON_ACTIVATION_1: if (Creature* mkii = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_LEVIATHAN_MK_II))) @@ -694,7 +691,7 @@ class boss_leviathan_mk_ii : public CreatureScript me->SetReactState(REACT_PASSIVE); me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT); - if (events.IsInPhase(PHASE_LEVIATHAN_SOLO)) + if (events.IsInPhase(PHASE_LEVIATHAN_MK_II)) { me->CastStop(); if (Unit* turret = me->GetVehicleKit()->GetPassenger(3)) @@ -703,7 +700,7 @@ class boss_leviathan_mk_ii : public CreatureScript me->SetSpeed(MOVE_RUN, 1.5f, true); me->GetMotionMaster()->MovePoint(WP_MKII_P1_IDLE, VehicleRelocation[WP_MKII_P1_IDLE]); } - else if (events.IsInPhase(PHASE_LEVIATHAN_ASSEMBLED)) + else if (events.IsInPhase(PHASE_VOL7RON)) { me->SetStandState(UNIT_STAND_STATE_DEAD); @@ -725,14 +722,14 @@ class boss_leviathan_mk_ii : public CreatureScript _fireFighter = true; DoCast(me, SPELL_EMERGENCY_MODE); DoCastAOE(SPELL_EMERGENCY_MODE_TURRET); - events.ScheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_SOLO); + events.ScheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_MK_II); // Missing break intended. case DO_START_MKII: me->SetReactState(REACT_AGGRESSIVE); - events.SetPhase(PHASE_LEVIATHAN_SOLO); + events.SetPhase(PHASE_LEVIATHAN_MK_II); - events.ScheduleEvent(EVENT_NAPALM_SHELL, 3000, 0, PHASE_LEVIATHAN_SOLO); - events.ScheduleEvent(EVENT_PLASMA_BLAST, 15000, 0, PHASE_LEVIATHAN_SOLO); + events.ScheduleEvent(EVENT_NAPALM_SHELL, 3000, 0, PHASE_LEVIATHAN_MK_II); + events.ScheduleEvent(EVENT_PLASMA_BLAST, 15000, 0, PHASE_LEVIATHAN_MK_II); events.ScheduleEvent(EVENT_PROXIMITY_MINE, 5000); events.ScheduleEvent(EVENT_SHOCK_BLAST, 18000); break; @@ -741,7 +738,7 @@ class boss_leviathan_mk_ii : public CreatureScript me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->SetReactState(REACT_AGGRESSIVE); - events.SetPhase(PHASE_LEVIATHAN_ASSEMBLED); + events.SetPhase(PHASE_VOL7RON); events.ScheduleEvent(EVENT_PROXIMITY_MINE, 15000); events.ScheduleEvent(EVENT_SHOCK_BLAST, 45000); break; @@ -776,14 +773,14 @@ class boss_leviathan_mk_ii : public CreatureScript { if (victim->GetTypeId() == TYPEID_PLAYER) if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON))) - mimiron->AI()->Talk(events.IsInPhase(PHASE_LEVIATHAN_SOLO) ? SAY_MKII_SLAY : SAY_V07TRON_SLAY); + mimiron->AI()->Talk(events.IsInPhase(PHASE_LEVIATHAN_MK_II) ? SAY_MKII_SLAY : SAY_V07TRON_SLAY); } void MovementInform(uint32 type, uint32 point) override { if (type != POINT_MOTION_TYPE) return; - + switch (point) { case WP_MKII_P1_IDLE: @@ -845,7 +842,7 @@ class boss_leviathan_mk_ii : public CreatureScript { if (!UpdateVictim() || !CheckInRoom()) return; - + events.Update(diff); if (me->HasUnitState(UNIT_STATE_CASTING)) @@ -861,10 +858,10 @@ class boss_leviathan_mk_ii : public CreatureScript break; case EVENT_PLASMA_BLAST: DoCastVictim(SPELL_SCRIPT_EFFECT_PLASMA_BLAST); - events.RescheduleEvent(EVENT_PLASMA_BLAST, urand(30000, 45000), 0, PHASE_LEVIATHAN_SOLO); + events.RescheduleEvent(EVENT_PLASMA_BLAST, urand(30000, 45000), 0, PHASE_LEVIATHAN_MK_II); if (events.GetTimeUntilEvent(EVENT_NAPALM_SHELL) < 9000) - events.RescheduleEvent(EVENT_NAPALM_SHELL, 9000, 0, PHASE_LEVIATHAN_SOLO); // The actual spell is cast by the turret, we should not let it interrupt itself. + events.RescheduleEvent(EVENT_NAPALM_SHELL, 9000, 0, PHASE_LEVIATHAN_MK_II); // The actual spell is cast by the turret, we should not let it interrupt itself. break; case EVENT_SHOCK_BLAST: DoCastAOE(SPELL_SHOCK_BLAST); @@ -872,14 +869,14 @@ class boss_leviathan_mk_ii : public CreatureScript break; case EVENT_FLAME_SUPPRESSANT_MK: DoCastAOE(SPELL_FLAME_SUPPRESSANT_MK); - events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_SOLO); + events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_MK, 60000, 0, PHASE_LEVIATHAN_MK_II); break; case EVENT_NAPALM_SHELL: DoCastAOE(SPELL_FORCE_CAST_NAPALM_SHELL); - events.RescheduleEvent(EVENT_NAPALM_SHELL, urand(6000, 15000), 0, PHASE_LEVIATHAN_SOLO); + events.RescheduleEvent(EVENT_NAPALM_SHELL, urand(6000, 15000), 0, PHASE_LEVIATHAN_MK_II); if (events.GetTimeUntilEvent(EVENT_PLASMA_BLAST) < 2000) - events.RescheduleEvent(EVENT_PLASMA_BLAST, 2000, 0, PHASE_LEVIATHAN_SOLO); // The actual spell is cast by the turret, we should not let it interrupt itself. + events.RescheduleEvent(EVENT_PLASMA_BLAST, 2000, 0, PHASE_LEVIATHAN_MK_II); // The actual spell is cast by the turret, we should not let it interrupt itself. break; case EVENT_MOVE_POINT_2: me->GetMotionMaster()->MovePoint(WP_MKII_P4_POS_2, VehicleRelocation[WP_MKII_P4_POS_2]); @@ -893,7 +890,7 @@ class boss_leviathan_mk_ii : public CreatureScript default: break; } - } + } DoMeleeAttackIfReady(); } @@ -934,7 +931,7 @@ class boss_vx_001 : public CreatureScript DoCast(me, SPELL_VEHICLE_DAMAGED, true); me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT); - if (events.IsInPhase(PHASE_VX001_SOLO)) + if (events.IsInPhase(PHASE_VX_001)) { me->CastStop(); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); // | UNIT_FLAG_NOT_SELECTABLE); @@ -942,9 +939,9 @@ class boss_vx_001 : public CreatureScript DoCast(me, SPELL_TORSO_DISABLED); if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON))) mimiron->AI()->DoAction(DO_ACTIVATE_AERIAL); - } - else if (events.IsInPhase(PHASE_VX001_ASSEMBLED)) - { + } + else if (events.IsInPhase(PHASE_VOL7RON)) + { me->SetStandState(UNIT_STAND_STATE_DEAD); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -975,19 +972,19 @@ class boss_vx_001 : public CreatureScript //me->SetUInt32Value(UNIT_FIELD_BYTES_1, 33554432); Blizzard handles hover animation like this it seems. DoCast(me, SPELL_HEAT_WAVE_AURA); - events.SetPhase(PHASE_VX001_SOLO); + events.SetPhase(PHASE_VX_001); events.ScheduleEvent(EVENT_ROCKET_STRIKE, 20000); events.ScheduleEvent(EVENT_SPINNING_UP, urand(30000, 35000)); - events.ScheduleEvent(EVENT_RAPID_BURST, 500, 0, PHASE_VX001_SOLO); + events.ScheduleEvent(EVENT_RAPID_BURST, 500, 0, PHASE_VX_001); break; case DO_ASSEMBLED_COMBAT: me->SetStandState(UNIT_STAND_STATE_STAND); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); - events.SetPhase(PHASE_VX001_ASSEMBLED); + events.SetPhase(PHASE_VOL7RON); events.ScheduleEvent(EVENT_ROCKET_STRIKE, 20000); events.ScheduleEvent(EVENT_SPINNING_UP, urand(30000, 35000)); - events.ScheduleEvent(EVENT_HAND_PULSE, 500, 0, PHASE_VX001_ASSEMBLED); + events.ScheduleEvent(EVENT_HAND_PULSE, 500, 0, PHASE_VOL7RON); if (_fireFighter) events.ScheduleEvent(EVENT_FROST_BOMB, 1000); break; @@ -1012,9 +1009,9 @@ class boss_vx_001 : public CreatureScript { if (victim->GetTypeId() == TYPEID_PLAYER) if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON))) - mimiron->AI()->Talk(events.IsInPhase(PHASE_VX001_SOLO) ? SAY_VX001_SLAY : SAY_V07TRON_SLAY); + mimiron->AI()->Talk(events.IsInPhase(PHASE_VX_001) ? SAY_VX001_SLAY : SAY_V07TRON_SLAY); } - + void SpellHit(Unit* caster, SpellInfo const* /*spellProto*/) override { if (caster->GetEntry() == NPC_BURST_TARGET && !me->HasUnitState(UNIT_STATE_CASTING)) @@ -1043,10 +1040,10 @@ class boss_vx_001 : public CreatureScript case EVENT_RAPID_BURST: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 120, true)) DoCast(target, SPELL_SUMMON_BURST_TARGET); - events.RescheduleEvent(EVENT_RAPID_BURST, 3000, 0, PHASE_VX001_SOLO); + events.RescheduleEvent(EVENT_RAPID_BURST, 3000, 0, PHASE_VX_001); break; case EVENT_ROCKET_STRIKE: - DoCastAOE(events.IsInPhase(PHASE_VX001_SOLO) ? SPELL_ROCKET_STRIKE_LEFT : SPELL_ROCKET_STRIKE_BOTH); + DoCastAOE(events.IsInPhase(PHASE_VX_001) ? SPELL_ROCKET_STRIKE_LEFT : SPELL_ROCKET_STRIKE_BOTH); events.ScheduleEvent(EVENT_RELOAD, 10000); events.RescheduleEvent(EVENT_ROCKET_STRIKE, urand(20000, 25000)); break; @@ -1058,7 +1055,7 @@ class boss_vx_001 : public CreatureScript case EVENT_HAND_PULSE: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 120, true)) DoCast(target, urand(0, 1) == 0 ? SPELL_HAND_PULSE_LEFT : SPELL_HAND_PULSE_RIGHT); - events.RescheduleEvent(EVENT_HAND_PULSE, urand(1500, 3000), 0, PHASE_VX001_ASSEMBLED); + events.RescheduleEvent(EVENT_HAND_PULSE, urand(1500, 3000), 0, PHASE_VOL7RON); break; case EVENT_FROST_BOMB: DoCastAOE(SPELL_SCRIPT_EFFECT_FROST_BOMB); @@ -1071,7 +1068,7 @@ class boss_vx_001 : public CreatureScript break; case EVENT_FLAME_SUPPRESSANT_VX: DoCastAOE(SPELL_FLAME_SUPPRESSANT_VX); - events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_VX, urand(10000, 12000), 0, PHASE_VX001_SOLO); + events.RescheduleEvent(EVENT_FLAME_SUPPRESSANT_VX, urand(10000, 12000), 0, PHASE_VX_001); break; default: break; @@ -1113,12 +1110,12 @@ class boss_aerial_command_unit : public CreatureScript DoCast(me, SPELL_VEHICLE_DAMAGED, true); me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE, SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT); - if (events.IsInPhase(PHASE_AERIAL_SOLO)) + if (events.IsInPhase(PHASE_AERIAL_COMMAND_UNIT)) { me->GetMotionMaster()->Clear(true); me->GetMotionMaster()->MovePoint(WP_AERIAL_P4_POS, VehicleRelocation[WP_AERIAL_P4_POS]); } - else if (events.IsInPhase(PHASE_AERIAL_ASSEMBLED)) + else if (events.IsInPhase(PHASE_VOL7RON)) { me->SetStandState(UNIT_STAND_STATE_DEAD); @@ -1139,16 +1136,16 @@ class boss_aerial_command_unit : public CreatureScript case DO_HARDMODE_AERIAL: fireFigther = true; DoCast(me, SPELL_EMERGENCY_MODE); - events.ScheduleEvent(EVENT_SUMMON_FIRE_BOTS, 1000, 0, PHASE_AERIAL_SOLO); + events.ScheduleEvent(EVENT_SUMMON_FIRE_BOTS, 1000, 0, PHASE_AERIAL_COMMAND_UNIT); // Missing break intended. case DO_START_AERIAL: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->SetReactState(REACT_AGGRESSIVE); - events.SetPhase(PHASE_AERIAL_SOLO); - events.ScheduleEvent(EVENT_SUMMON_JUNK_BOT, 5000, 0, PHASE_AERIAL_SOLO); - events.ScheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 9000, 0, PHASE_AERIAL_SOLO); - events.ScheduleEvent(EVENT_SUMMON_BOMB_BOT, 9000, 0, PHASE_AERIAL_SOLO); + events.SetPhase(PHASE_AERIAL_COMMAND_UNIT); + events.ScheduleEvent(EVENT_SUMMON_JUNK_BOT, 5000, 0, PHASE_AERIAL_COMMAND_UNIT); + events.ScheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 9000, 0, PHASE_AERIAL_COMMAND_UNIT); + events.ScheduleEvent(EVENT_SUMMON_BOMB_BOT, 9000, 0, PHASE_AERIAL_COMMAND_UNIT); break; case DO_DISABLE_AERIAL: me->CastStop(); @@ -1164,7 +1161,7 @@ class boss_aerial_command_unit : public CreatureScript me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->SetReactState(REACT_AGGRESSIVE); me->SetStandState(UNIT_STAND_STATE_STAND); - events.SetPhase(PHASE_AERIAL_ASSEMBLED); + events.SetPhase(PHASE_VOL7RON); break; default: break; @@ -1187,7 +1184,7 @@ class boss_aerial_command_unit : public CreatureScript { if (victim->GetTypeId() == TYPEID_PLAYER) if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON))) - mimiron->AI()->Talk(events.IsInPhase(PHASE_AERIAL_SOLO) ? SAY_AERIAL_SLAY : SAY_V07TRON_SLAY); + mimiron->AI()->Talk(events.IsInPhase(PHASE_AERIAL_COMMAND_UNIT) ? SAY_AERIAL_SLAY : SAY_V07TRON_SLAY); } void MovementInform(uint32 type, uint32 point) override @@ -1195,47 +1192,47 @@ class boss_aerial_command_unit : public CreatureScript if (type == POINT_MOTION_TYPE && point == WP_AERIAL_P4_POS) { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - + if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MIMIRON))) mimiron->AI()->DoAction(DO_ACTIVATE_V0L7R0N_1); } } - + void UpdateAI(uint32 diff) override { if (!UpdateVictim()) return; - + events.Update(diff); - + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_SUMMON_FIRE_BOTS: me->CastCustomSpell(SPELL_SUMMON_FIRE_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 3, NULL, true); - events.RescheduleEvent(EVENT_SUMMON_FIRE_BOTS, 45000, 0, PHASE_AERIAL_SOLO); + events.RescheduleEvent(EVENT_SUMMON_FIRE_BOTS, 45000, 0, PHASE_AERIAL_COMMAND_UNIT); break; case EVENT_SUMMON_JUNK_BOT: me->CastCustomSpell(SPELL_SUMMON_JUNK_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, NULL, true); - events.RescheduleEvent(EVENT_SUMMON_JUNK_BOT, urand(11000, 12000), 0, PHASE_AERIAL_SOLO); + events.RescheduleEvent(EVENT_SUMMON_JUNK_BOT, urand(11000, 12000), 0, PHASE_AERIAL_COMMAND_UNIT); break; case EVENT_SUMMON_ASSAULT_BOT: me->CastCustomSpell(SPELL_SUMMON_ASSAULT_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, NULL, true); - events.RescheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 30000, 0, PHASE_AERIAL_SOLO); + events.RescheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 30000, 0, PHASE_AERIAL_COMMAND_UNIT); break; case EVENT_SUMMON_BOMB_BOT: DoCast(me, SPELL_SUMMON_BOMB_BOT); - events.RescheduleEvent(EVENT_SUMMON_BOMB_BOT, urand(15000, 20000), 0, PHASE_AERIAL_SOLO); + events.RescheduleEvent(EVENT_SUMMON_BOMB_BOT, urand(15000, 20000), 0, PHASE_AERIAL_COMMAND_UNIT); break; default: break; } } - DoSpellAttackIfReady(events.IsInPhase(PHASE_AERIAL_SOLO) ? SPELL_PLASMA_BALL_P1 : SPELL_PLASMA_BALL_P2); + DoSpellAttackIfReady(events.IsInPhase(PHASE_AERIAL_COMMAND_UNIT) ? SPELL_PLASMA_BALL_P1 : SPELL_PLASMA_BALL_P2); } private: @@ -1344,7 +1341,7 @@ class npc_mimiron_emergency_fire_bot : public CreatureScript isWaterSprayReady = true; moveNew = true; } - + void UpdateAI(uint32 diff) override { if (!isWaterSprayReady) @@ -1497,7 +1494,7 @@ class npc_mimiron_flames : public CreatureScript { events.ScheduleEvent(EVENT_SPREAD_FLAMES, 4000); } - + void UpdateAI(uint32 diff) override { if (instance->GetBossState(BOSS_MIMIRON) != IN_PROGRESS) @@ -1544,7 +1541,7 @@ class npc_mimiron_frost_bomb : public CreatureScript { events.ScheduleEvent(EVENT_FROST_BOMB_EXPLOSION, 10000); } - + void UpdateAI(uint32 diff) override { events.Update(diff); @@ -1592,7 +1589,7 @@ class npc_mimiron_proximity_mine : public CreatureScript { events.ScheduleEvent(EVENT_PROXIMITY_MINE_ARM, 1500); } - + void UpdateAI(uint32 diff) override { events.Update(diff); @@ -1630,14 +1627,13 @@ class go_mimiron_hardmode_button : public GameObjectScript { public: go_mimiron_hardmode_button() : GameObjectScript("go_mimiron_hardmode_button") { } - + bool OnGossipHello(Player* /*player*/, GameObject* go) { InstanceScript* instance = go->GetInstanceScript(); - if (!instance) return false; - + if (Creature* computer = ObjectAccessor::GetCreature(*go, instance->GetData64(DATA_COMPUTER))) computer->AI()->DoAction(DO_ACTIVATE_COMPUTER); go->SetGoState(GO_STATE_ACTIVE); @@ -1646,7 +1642,7 @@ class go_mimiron_hardmode_button : public GameObjectScript } }; -// 63801 Bomb Bot +// 63801 - Bomb Bot class spell_mimiron_bomb_bot : public SpellScriptLoader { public: @@ -1860,7 +1856,7 @@ class spell_mimiron_magnetic_core : public SpellScriptLoader { if (Creature* target = GetTarget()->ToCreature()) { - target->GetAI()->DoAction(DO_DISABLE_AERIAL); + target->AI()->DoAction(DO_DISABLE_AERIAL); target->CastSpell(target, SPELL_MAGNETIC_CORE_VISUAL, true); } } @@ -1869,7 +1865,7 @@ class spell_mimiron_magnetic_core : public SpellScriptLoader { if (Creature* target = GetTarget()->ToCreature()) { - target->GetAI()->DoAction(DO_ENABLE_AERIAL); + target->AI()->DoAction(DO_ENABLE_AERIAL); target->RemoveAurasDueToSpell(SPELL_MAGNETIC_CORE_VISUAL); } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 1f9bfe4c3f3..a074ce28181 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -15,12 +15,13 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ulduar.h" +#include "InstanceScript.h" #include "Player.h" #include "ScriptedCreature.h" #include "ScriptMgr.h" #include "SpellScript.h" #include "WorldPacket.h" +#include "ulduar.h" static DoorData const doorData[] = { @@ -821,10 +822,6 @@ class instance_ulduar : public InstanceMapScript case DATA_UNBROKEN: Unbroken = data != 0; break; - case DATA_MIMIRON_ELEVATOR: - if (GameObject* gameObject = instance->GetGameObject(MimironElevatorGUID)) - gameObject->SetGoState((GOState)data); - break; case DATA_ILLUSION: illusion = data; break; @@ -924,6 +921,8 @@ class instance_ulduar : public InstanceMapScript return MimironComputerGUID; case DATA_MIMIRON_WORLD_TRIGGER: return MimironWorldTriggerGUID; + case DATA_MIMIRON_ELEVATOR: + return MimironElevatorGUID; case DATA_MIMIRON_BUTTON: return MimironButtonGUID; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h index 81cb469318f..5dfc2b54f6e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h @@ -18,8 +18,6 @@ #ifndef DEF_ULDUAR_H #define DEF_ULDUAR_H -#include "InstanceScript.h" -#include "ObjectMgr.h" #define UlduarScriptName "instance_ulduar" extern Position const ObservationRingKeepersPos[4]; |
