aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorjoschiwald <joschiwald.trinity@gmail.com>2014-08-29 17:46:55 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2014-08-29 17:46:55 +0200
commit01380c66bfe3608196a898324cebf142c3ef2ae3 (patch)
treed8361be934288c137a8486aea72602120871852f /src/server/scripts/Northrend
parent88809359e7fa84f808aabb528dca2a77a8eb9816 (diff)
Core/Misc: some random changes after recent pull requests
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp148
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp9
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h2
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];