aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp11
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp30
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp38
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp40
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp77
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp58
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp44
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp323
12 files changed, 235 insertions, 406 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index 818485e4440..4e5019618ec 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -410,7 +410,7 @@ class boss_algalon_the_observer : public CreatureScript
{
_firstPull = false;
Talk(SAY_ALGALON_START_TIMER);
- if (Creature* brann = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BRANN_BRONZEBEARD_ALG)))
+ if (Creature* brann = instance->GetCreature(DATA_BRANN_BRONZEBEARD_ALG))
brann->AI()->DoAction(ACTION_FINISH_INTRO);
me->setActive(true);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
index b8f23964df6..fe01a917cd6 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
@@ -393,8 +393,8 @@ class npc_sanctum_sentry : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Auriaya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_AURIAYA)))
- Auriaya->AI()->DoAction(ACTION_CRAZY_CAT_LADY);
+ if (Creature* auriaya = instance->GetCreature(BOSS_AURIAYA))
+ auriaya->AI()->DoAction(ACTION_CRAZY_CAT_LADY);
}
private:
@@ -472,8 +472,8 @@ class npc_feral_defender : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
DoCast(me, SPELL_SUMMON_ESSENCE);
- if (Creature* Auriaya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_AURIAYA)))
- Auriaya->AI()->DoAction(ACTION_RESPAWN_DEFENDER);
+ if (Creature* auriaya = instance->GetCreature(BOSS_AURIAYA))
+ auriaya->AI()->DoAction(ACTION_RESPAWN_DEFENDER);
}
private:
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 b2958daf07c..8e734e6d3e7 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -974,11 +974,6 @@ class npc_mimirons_inferno : public CreatureScript
public:
npc_mimirons_inferno() : CreatureScript("npc_mimirons_inferno") { }
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUlduarAI<npc_mimirons_infernoAI>(creature);
- }
-
struct npc_mimirons_infernoAI : public npc_escortAI
{
npc_mimirons_infernoAI(Creature* creature) : npc_escortAI(creature)
@@ -1031,6 +1026,10 @@ public:
}
};
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetUlduarAI<npc_mimirons_infernoAI>(creature);
+ }
};
class npc_hodirs_fury : public CreatureScript
@@ -1247,7 +1246,7 @@ class npc_lorekeeper : public CreatureScript
CloseGossipMenuFor(player);
me->GetMap()->LoadGrid(364, -16); // make sure leviathan is loaded
- if (Creature* leviathan = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_LEVIATHAN)))
+ if (Creature* leviathan = _instance->GetCreature(BOSS_LEVIATHAN))
{
leviathan->AI()->DoAction(ACTION_START_HARD_MODE);
me->SetVisible(false);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index ad4b7c6413f..5cfc0d75481 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -1061,8 +1061,8 @@ class npc_ancient_water_spirit : public CreatureScript
{
Initialize();
instance = me->GetInstanceScript();
- if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
- waveCount = ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->trioWaveCount;
+ if (Creature* freya = instance->GetCreature(BOSS_FREYA))
+ waveCount = ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->trioWaveCount;
else
waveCount = 0;
}
@@ -1099,10 +1099,10 @@ class npc_ancient_water_spirit : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
+ if (Creature* freya = instance->GetCreature(BOSS_FREYA))
{
- ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->checkElementalAlive[waveCount] = false;
- ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->LasherDead(1);
+ ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->checkElementalAlive[waveCount] = false;
+ ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->LasherDead(1);
}
}
@@ -1129,8 +1129,8 @@ class npc_storm_lasher : public CreatureScript
{
Initialize();
instance = me->GetInstanceScript();
- if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
- waveCount = ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->trioWaveCount;
+ if (Creature* freya = instance->GetCreature(BOSS_FREYA))
+ waveCount = ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->trioWaveCount;
else
waveCount = 0;
}
@@ -1173,10 +1173,10 @@ class npc_storm_lasher : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
+ if (Creature* freya = instance->GetCreature(BOSS_FREYA))
{
- ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->checkElementalAlive[waveCount] = false;
- ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->LasherDead(2);
+ ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->checkElementalAlive[waveCount] = false;
+ ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->LasherDead(2);
}
}
@@ -1203,8 +1203,8 @@ class npc_snaplasher : public CreatureScript
npc_snaplasherAI(Creature* creature) : ScriptedAI(creature)
{
instance = me->GetInstanceScript();
- if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
- waveCount = ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->trioWaveCount;
+ if (Creature* freya = instance->GetCreature(BOSS_FREYA))
+ waveCount = ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->trioWaveCount;
else
waveCount = 0;
}
@@ -1222,10 +1222,10 @@ class npc_snaplasher : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
+ if (Creature* freya = instance->GetCreature(BOSS_FREYA))
{
- ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->checkElementalAlive[waveCount] = false;
- ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->LasherDead(4);
+ ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->checkElementalAlive[waveCount] = false;
+ ENSURE_AI(boss_freya::boss_freyaAI, freya->AI())->LasherDead(4);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
index 9630f1ddbfe..6c03b9f5ecb 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -336,8 +336,8 @@ class boss_saronite_animus : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Vezax = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_VEZAX)))
- Vezax->AI()->DoAction(ACTION_ANIMUS_DIE);
+ if (Creature* vezax = instance->GetCreature(BOSS_VEZAX))
+ vezax->AI()->DoAction(ACTION_ANIMUS_DIE);
}
void UpdateAI(uint32 diff) override
@@ -434,8 +434,8 @@ class npc_saronite_vapors : public CreatureScript
DoCast(me, SPELL_SARONITE_VAPORS);
me->DespawnOrUnsummon(30000);
- if (Creature* Vezax = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_VEZAX)))
- Vezax->AI()->DoAction(ACTION_VAPORS_DIE);
+ if (Creature* vezax = instance->GetCreature(BOSS_VEZAX))
+ vezax->AI()->DoAction(ACTION_VAPORS_DIE);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index 57b96e26943..4d8a49160bc 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -242,8 +242,8 @@ class npc_flash_freeze : public CreatureScript
// Prevents to have Ice Block on other place than target is
me->NearTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation());
if (target->GetTypeId() == TYPEID_PLAYER)
- if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_HODIR)))
- Hodir->AI()->DoAction(ACTION_CHEESE_THE_FREEZE);
+ if (Creature* hodir = instance->GetCreature(BOSS_HODIR))
+ hodir->AI()->DoAction(ACTION_CHEESE_THE_FREEZE);
}
}
};
@@ -291,21 +291,21 @@ class npc_ice_block : public CreatureScript
void DamageTaken(Unit* who, uint32& /*damage*/) override
{
- if (Creature* Helper = ObjectAccessor::GetCreature(*me, targetGUID))
+ if (Creature* helper = ObjectAccessor::GetCreature(*me, targetGUID))
{
- Helper->RemoveUnitFlag(UnitFlags(UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED));
- Helper->SetControlled(false, UNIT_STATE_ROOT);
+ helper->RemoveUnitFlag(UnitFlags(UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED));
+ helper->SetControlled(false, UNIT_STATE_ROOT);
- if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_HODIR)))
+ if (Creature* hodir = instance->GetCreature(BOSS_HODIR))
{
- if (!Hodir->IsInCombat())
+ if (!hodir->IsInCombat())
{
- Hodir->SetReactState(REACT_AGGRESSIVE);
- Hodir->AI()->DoZoneInCombat();
- Hodir->AI()->AttackStart(who);
+ hodir->SetReactState(REACT_AGGRESSIVE);
+ hodir->AI()->DoZoneInCombat();
+ hodir->AI()->AttackStart(who);
}
- Helper->AI()->AttackStart(Hodir);
+ helper->AI()->AttackStart(hodir);
}
}
}
@@ -717,8 +717,8 @@ class npc_hodir_priest : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_HODIR)))
- Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
+ if (Creature* hodir = instance->GetCreature(BOSS_HODIR))
+ hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
}
private:
@@ -782,8 +782,8 @@ class npc_hodir_shaman : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_HODIR)))
- Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
+ if (Creature* hodir = instance->GetCreature(BOSS_HODIR))
+ hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
}
private:
@@ -846,8 +846,8 @@ class npc_hodir_druid : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_HODIR)))
- Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
+ if (Creature* hodir = instance->GetCreature(BOSS_HODIR))
+ hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
}
private:
@@ -929,8 +929,8 @@ class npc_hodir_mage : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* Hodir = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_HODIR)))
- Hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
+ if (Creature* hodir = instance->GetCreature(BOSS_HODIR))
+ hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS);
}
private:
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
index e4040a44a36..37141085731 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
@@ -328,7 +328,7 @@ class npc_iron_construct : public CreatureScript
if (me->HasAura(RAID_MODE(SPELL_BRITTLE, SPELL_BRITTLE_25)) && damage >= 5000)
{
DoCast(SPELL_SHATTER);
- if (Creature* ignis = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_IGNIS)))
+ if (Creature* ignis = _instance->GetCreature(BOSS_IGNIS))
if (ignis->AI())
ignis->AI()->DoAction(ACTION_REMOVE_BUFF);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 5cf1cf67de8..fd4d7b02229 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -371,7 +371,7 @@ static bool IsEncounterFinished(Unit* who)
mkii->DespawnOrUnsummon(120000);
vx001->DespawnOrUnsummon(120000);
aerial->DespawnOrUnsummon(120000);
- if (Creature* mimiron = ObjectAccessor::GetCreature(*who, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->JustDied(who);
return true;
}
@@ -428,7 +428,7 @@ class boss_mimiron : public CreatureScript
me->RemoveAurasDueToSpell(SPELL_WELD);
DoCast(me->GetVehicleBase(), SPELL_SEAT_6);
- if (GameObject* button = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_MIMIRON_BUTTON)))
+ if (GameObject* button = instance->GetGameObject(DATA_MIMIRON_BUTTON))
button->AddFlag(GO_FLAG_NOT_SELECTABLE);
if (_fireFighter)
@@ -458,14 +458,14 @@ class boss_mimiron : public CreatureScript
_Reset();
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
- if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_MIMIRON_ELEVATOR)))
+ if (GameObject* elevator = instance->GetGameObject(DATA_MIMIRON_ELEVATOR))
elevator->SetGoState(GO_STATE_ACTIVE);
if (_fireFighter)
- if (Creature* computer = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_COMPUTER)))
+ if (Creature* computer = instance->GetCreature(DATA_COMPUTER))
computer->AI()->DoAction(DO_DEACTIVATE_COMPUTER);
- if (GameObject* button = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_MIMIRON_BUTTON)))
+ if (GameObject* button = instance->GetGameObject(DATA_MIMIRON_BUTTON))
{
button->SetGoState(GO_STATE_READY);
button->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
@@ -493,7 +493,7 @@ class boss_mimiron : public CreatureScript
switch (eventId)
{
case EVENT_SUMMON_FLAMES:
- if (Unit* worldtrigger = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MIMIRON_WORLD_TRIGGER)))
+ if (Creature* worldtrigger = instance->GetCreature(DATA_MIMIRON_WORLD_TRIGGER))
worldtrigger->CastCustomSpell(SPELL_SCRIPT_EFFECT_SUMMON_FLAMES_INITIAL, SPELLVALUE_MAX_TARGETS, 3, NULL, true, NULL, NULL, me->GetGUID());
events.RescheduleEvent(EVENT_SUMMON_FLAMES, 28000);
break;
@@ -529,14 +529,14 @@ class boss_mimiron : public CreatureScript
events.ScheduleEvent(EVENT_VX001_ACTIVATION_4, 5000);
break;
case EVENT_VX001_ACTIVATION_4:
- if (GameObject* elevator = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_MIMIRON_ELEVATOR)))
+ if (GameObject* elevator = instance->GetGameObject(DATA_MIMIRON_ELEVATOR))
elevator->SetGoState(GO_STATE_READY);
- if (Unit* worldtrigger = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MIMIRON_WORLD_TRIGGER)))
+ if (Creature* worldtrigger = instance->GetCreature(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->GetGuidData(DATA_MIMIRON_ELEVATOR)))
+ if (GameObject* elevator = instance->GetGameObject(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);
@@ -644,7 +644,7 @@ class boss_mimiron : public CreatureScript
Talk(SAY_V07TRON_DEATH);
if (_fireFighter)
{
- if (Creature* computer = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_COMPUTER)))
+ if (Creature* computer = instance->GetCreature(DATA_COMPUTER))
computer->AI()->DoAction(DO_DEACTIVATE_COMPUTER);
me->SummonGameObject(RAID_MODE(GO_CACHE_OF_INNOVATION_FIREFIGHTER, GO_CACHE_OF_INNOVATION_FIREFIGHTER_HERO), 2744.040f, 2569.352f, 364.3135f, 3.124123f, QuaternionData(0.f, 0.f, 0.9999619f, 0.008734641f), 604800);
}
@@ -783,7 +783,7 @@ class boss_leviathan_mk_ii : public CreatureScript
void KilledUnit(Unit* victim) override
{
if (victim->GetTypeId() == TYPEID_PLAYER)
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->Talk(events.IsInPhase(PHASE_LEVIATHAN_MK_II) ? SAY_MKII_SLAY : SAY_V07TRON_SLAY);
}
@@ -798,7 +798,7 @@ class boss_leviathan_mk_ii : public CreatureScript
me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
DoCast(me, SPELL_HALF_HEAL);
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->DoAction(DO_ACTIVATE_VX001);
break;
case WP_MKII_P4_POS_1:
@@ -808,7 +808,7 @@ class boss_leviathan_mk_ii : public CreatureScript
events.ScheduleEvent(EVENT_MOVE_POINT_3, 1);
break;
case WP_MKII_P4_POS_3:
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->DoAction(DO_ACTIVATE_V0L7R0N_2);
break;
case WP_MKII_P4_POS_4:
@@ -951,7 +951,7 @@ class boss_vx_001 : public CreatureScript
me->AddUnitFlag(UNIT_FLAG_NON_ATTACKABLE); // | UNIT_FLAG_NOT_SELECTABLE);
DoCast(me, SPELL_HALF_HEAL); // has no effect, wat
DoCast(me, SPELL_TORSO_DISABLED);
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->DoAction(DO_ACTIVATE_AERIAL);
}
else if (events.IsInPhase(PHASE_VOL7RON))
@@ -1022,7 +1022,7 @@ class boss_vx_001 : public CreatureScript
void KilledUnit(Unit* victim) override
{
if (victim->GetTypeId() == TYPEID_PLAYER)
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->Talk(events.IsInPhase(PHASE_VX_001) ? SAY_VX001_SLAY : SAY_V07TRON_SLAY);
}
@@ -1201,7 +1201,7 @@ class boss_aerial_command_unit : public CreatureScript
void KilledUnit(Unit* victim) override
{
if (victim->GetTypeId() == TYPEID_PLAYER)
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->Talk(events.IsInPhase(PHASE_AERIAL_COMMAND_UNIT) ? SAY_AERIAL_SLAY : SAY_V07TRON_SLAY);
}
@@ -1211,7 +1211,7 @@ class boss_aerial_command_unit : public CreatureScript
{
me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->DoAction(DO_ACTIVATE_V0L7R0N_1);
}
}
@@ -1435,7 +1435,7 @@ class npc_mimiron_computer : public CreatureScript
{
case EVENT_SELF_DESTRUCT_10:
Talk(SAY_SELF_DESTRUCT_10);
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->DoAction(DO_ACTIVATE_HARD_MODE);
events.ScheduleEvent(EVENT_SELF_DESTRUCT_9, 60000);
break;
@@ -1477,7 +1477,7 @@ class npc_mimiron_computer : public CreatureScript
break;
case EVENT_SELF_DESTRUCT_FINALIZED:
Talk(SAY_SELF_DESTRUCT_FINALIZED);
- if (Creature* mimiron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_MIMIRON)))
+ if (Creature* mimiron = instance->GetCreature(BOSS_MIMIRON))
mimiron->AI()->DoAction(DO_ACTIVATE_SELF_DESTRUCT);
DoCast(me, SPELL_SELF_DESTRUCTION_AURA);
DoCast(me, SPELL_SELF_DESTRUCTION_VISUAL);
@@ -1658,7 +1658,7 @@ class go_mimiron_hardmode_button : public GameObjectScript
if (!instance)
return false;
- if (Creature* computer = ObjectAccessor::GetCreature(*go, instance->GetGuidData(DATA_COMPUTER)))
+ if (Creature* computer = instance->GetCreature(DATA_COMPUTER))
computer->AI()->DoAction(DO_ACTIVATE_COMPUTER);
go->SetGoState(GO_STATE_ACTIVE);
go->AddFlag(GO_FLAG_NOT_SELECTABLE);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
index 8a1bbfe712c..3f56f4523cc 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -189,16 +189,22 @@ class boss_razorscale_controller : public CreatureScript
public:
boss_razorscale_controller() : CreatureScript("boss_razorscale_controller") { }
- struct boss_razorscale_controllerAI : public BossAI
+ struct boss_razorscale_controllerAI : public ScriptedAI
{
- boss_razorscale_controllerAI(Creature* creature) : BossAI(creature, DATA_RAZORSCALE_CONTROL)
+ boss_razorscale_controllerAI(Creature* creature) : ScriptedAI(creature), summons(me)
{
+ instance = creature->GetInstanceScript();
me->SetDisplayFromModel(1);
}
+ InstanceScript* instance;
+ EventMap events;
+ SummonList summons;
+
void Reset() override
{
- _Reset();
+ events.Reset();
+ summons.DespawnAll();
me->SetReactState(REACT_PASSIVE);
}
@@ -207,14 +213,14 @@ class boss_razorscale_controller : public CreatureScript
switch (spell->Id)
{
case SPELL_FLAMED:
- if (GameObject* Harpoon1 = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_RAZOR_HARPOON_1)))
- Harpoon1->RemoveFromWorld();
- if (GameObject* Harpoon2 = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_RAZOR_HARPOON_2)))
- Harpoon2->RemoveFromWorld();
- if (GameObject* Harpoon3 = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_RAZOR_HARPOON_3)))
- Harpoon3->RemoveFromWorld();
- if (GameObject* Harpoon4 = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_RAZOR_HARPOON_4)))
- Harpoon4->RemoveFromWorld();
+ if (GameObject* harpoon = instance->GetGameObject(GO_RAZOR_HARPOON_1))
+ harpoon->RemoveFromWorld();
+ if (GameObject* harpoon = instance->GetGameObject(GO_RAZOR_HARPOON_2))
+ harpoon->RemoveFromWorld();
+ if (GameObject* harpoon = instance->GetGameObject(GO_RAZOR_HARPOON_3))
+ harpoon->RemoveFromWorld();
+ if (GameObject* harpoon = instance->GetGameObject(GO_RAZOR_HARPOON_4))
+ harpoon->RemoveFromWorld();
DoAction(ACTION_HARPOON_BUILD);
DoAction(ACTION_PLACE_BROKEN_HARPOON);
break;
@@ -229,7 +235,8 @@ class boss_razorscale_controller : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- _JustDied();
+ events.Reset();
+ summons.DespawnAll();
}
void DoAction(int32 action) override
@@ -261,39 +268,39 @@ class boss_razorscale_controller : public CreatureScript
{
case EVENT_BUILD_HARPOON_1:
Talk(EMOTE_HARPOON);
- if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_1, PosHarpoon[0].GetPositionX(), PosHarpoon[0].GetPositionY(), PosHarpoon[0].GetPositionZ(), 4.790f, QuaternionData::fromEulerAnglesZYX(4.790f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_1, PosHarpoon[0].GetPositionX(), PosHarpoon[0].GetPositionY(), PosHarpoon[0].GetPositionZ(), 4.790f, QuaternionData::fromEulerAnglesZYX(4.790f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
{
- if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f)) //only nearest broken harpoon
- BrokenHarpoon->RemoveFromWorld();
+ if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f)) //only nearest broken harpoon
+ brokenHarpoon->RemoveFromWorld();
events.ScheduleEvent(EVENT_BUILD_HARPOON_2, 20000);
events.CancelEvent(EVENT_BUILD_HARPOON_1);
}
return;
case EVENT_BUILD_HARPOON_2:
Talk(EMOTE_HARPOON);
- if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_2, PosHarpoon[1].GetPositionX(), PosHarpoon[1].GetPositionY(), PosHarpoon[1].GetPositionZ(), 4.659f, QuaternionData::fromEulerAnglesZYX(4.659f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_2, PosHarpoon[1].GetPositionX(), PosHarpoon[1].GetPositionY(), PosHarpoon[1].GetPositionZ(), 4.659f, QuaternionData::fromEulerAnglesZYX(4.659f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
{
- if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
- BrokenHarpoon->RemoveFromWorld();
+ if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
+ brokenHarpoon->RemoveFromWorld();
events.CancelEvent(EVENT_BUILD_HARPOON_2);
}
return;
case EVENT_BUILD_HARPOON_3:
Talk(EMOTE_HARPOON);
- if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_3, PosHarpoon[2].GetPositionX(), PosHarpoon[2].GetPositionY(), PosHarpoon[2].GetPositionZ(), 5.382f, QuaternionData::fromEulerAnglesZYX(5.382f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_3, PosHarpoon[2].GetPositionX(), PosHarpoon[2].GetPositionY(), PosHarpoon[2].GetPositionZ(), 5.382f, QuaternionData::fromEulerAnglesZYX(5.382f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
{
- if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
- BrokenHarpoon->RemoveFromWorld();
+ if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
+ brokenHarpoon->RemoveFromWorld();
events.ScheduleEvent(EVENT_BUILD_HARPOON_4, 20000);
events.CancelEvent(EVENT_BUILD_HARPOON_3);
}
return;
case EVENT_BUILD_HARPOON_4:
Talk(EMOTE_HARPOON);
- if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_4, PosHarpoon[3].GetPositionX(), PosHarpoon[3].GetPositionY(), PosHarpoon[3].GetPositionZ(), 4.266f, QuaternionData::fromEulerAnglesZYX(4.266f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_4, PosHarpoon[3].GetPositionX(), PosHarpoon[3].GetPositionY(), PosHarpoon[3].GetPositionZ(), 4.266f, QuaternionData::fromEulerAnglesZYX(4.266f, 0.0f, 0.0f), uint32(me->GetRespawnTime())))
{
- if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
- BrokenHarpoon->RemoveFromWorld();
+ if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
+ brokenHarpoon->RemoveFromWorld();
events.CancelEvent(EVENT_BUILD_HARPOON_4);
}
return;
@@ -315,9 +322,9 @@ class go_razorscale_harpoon : public GameObjectScript
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
- InstanceScript* instance = go->GetInstanceScript();
- if (ObjectAccessor::GetCreature(*go, instance->GetGuidData(BOSS_RAZORSCALE)))
- go->AddFlag(GO_FLAG_NOT_SELECTABLE);
+ if (InstanceScript* instance = go->GetInstanceScript())
+ if (instance->GetCreature(BOSS_RAZORSCALE))
+ go->AddFlag(GO_FLAG_NOT_SELECTABLE);
return false;
}
};
@@ -361,14 +368,14 @@ class boss_razorscale : public CreatureScript
me->AddUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_PASSIVE);
Initialize();
- if (Creature* commander = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EXPEDITION_COMMANDER)))
+ if (Creature* commander = instance->GetCreature(DATA_EXPEDITION_COMMANDER))
commander->AI()->DoAction(ACTION_COMMANDER_RESET);
}
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
- if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_RAZORSCALE_CONTROL)))
+ if (Creature* controller = instance->GetCreature(DATA_RAZORSCALE_CONTROL))
controller->AI()->DoAction(ACTION_HARPOON_BUILD);
me->SetSpeedRate(MOVE_FLIGHT, 3.0f);
me->SetReactState(REACT_PASSIVE);
@@ -383,7 +390,7 @@ class boss_razorscale : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
_JustDied();
- if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_RAZORSCALE_CONTROL)))
+ if (Creature* controller = instance->GetCreature(DATA_RAZORSCALE_CONTROL))
controller->AI()->Reset();
}
@@ -459,7 +466,7 @@ class boss_razorscale : public CreatureScript
me->SetCanFly(false);
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->AddUnitFlag(UnitFlags(UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED));
- if (Creature* commander = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EXPEDITION_COMMANDER)))
+ if (Creature* commander = instance->GetCreature(DATA_EXPEDITION_COMMANDER))
commander->AI()->DoAction(ACTION_GROUND_PHASE);
events.ScheduleEvent(EVENT_BREATH, 30000, 0, PHASE_GROUND);
events.ScheduleEvent(EVENT_BUFFET, 33000, 0, PHASE_GROUND);
@@ -475,7 +482,7 @@ class boss_razorscale : public CreatureScript
return;
case EVENT_BUFFET:
DoCastAOE(SPELL_WINGBUFFET);
- if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_RAZORSCALE_CONTROL)))
+ if (Creature* controller = instance->GetCreature(DATA_RAZORSCALE_CONTROL))
controller->CastSpell(controller, SPELL_FLAMED, true);
events.CancelEvent(EVENT_BUFFET);
return;
@@ -717,10 +724,10 @@ class npc_expedition_commander : public CreatureScript
Phase = 5;
break;
case 5:
- if (Creature* Razorscale = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_RAZORSCALE)))
+ if (Creature* razorscale = instance->GetCreature(BOSS_RAZORSCALE))
{
- Razorscale->AI()->DoAction(ACTION_EVENT_START);
- me->SetInCombatWith(Razorscale);
+ razorscale->AI()->DoAction(ACTION_EVENT_START);
+ me->SetInCombatWith(razorscale);
}
if (Creature* firstEngineer = ObjectAccessor::GetCreature(*me, Engineer[0]))
firstEngineer->AI()->Talk(SAY_AGGRO_1);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
index 0366f1534ba..c6fc0925bf6 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
@@ -176,11 +176,6 @@ class boss_xt002 : public CreatureScript
public:
boss_xt002() : CreatureScript("boss_xt002") { }
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUlduarAI<boss_xt002_AI>(creature);
- }
-
struct boss_xt002_AI : public BossAI
{
boss_xt002_AI(Creature* creature) : BossAI(creature, BOSS_XT002)
@@ -441,6 +436,12 @@ class boss_xt002 : public CreatureScript
uint8 _heartExposed;
uint32 _transferHealth;
};
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetUlduarAI<boss_xt002_AI>(creature);
+ }
+
};
/*-------------------------------------------------------
@@ -460,7 +461,7 @@ class npc_xt002_heart : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* xt002 = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_XT002)))
+ if (Creature* xt002 = _instance->GetCreature(BOSS_XT002))
{
xt002->AI()->SetData(DATA_TRANSFERED_HEALTH, me->GetHealth());
xt002->AI()->DoAction(ACTION_ENTER_HARD_MODE);
@@ -487,11 +488,6 @@ class npc_scrapbot : public CreatureScript
public:
npc_scrapbot() : CreatureScript("npc_scrapbot") { }
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUlduarAI<npc_scrapbotAI>(creature);
- }
-
struct npc_scrapbotAI : public ScriptedAI
{
npc_scrapbotAI(Creature* creature) : ScriptedAI(creature)
@@ -511,15 +507,15 @@ class npc_scrapbot : public CreatureScript
Initialize();
- if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_XT002)))
- me->GetMotionMaster()->MoveFollow(pXT002, 0.0f, 0.0f);
+ if (Creature* xt002 = _instance->GetCreature(BOSS_XT002))
+ me->GetMotionMaster()->MoveFollow(xt002, 0.0f, 0.0f);
}
void UpdateAI(uint32 diff) override
{
if (_rangeCheckTimer <= diff)
{
- if (Creature* xt002 = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_XT002)))
+ if (Creature* xt002 = _instance->GetCreature(BOSS_XT002))
{
if (me->IsWithinMeleeRange(xt002))
{
@@ -538,6 +534,12 @@ class npc_scrapbot : public CreatureScript
InstanceScript* _instance;
uint32 _rangeCheckTimer;
};
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetUlduarAI<npc_scrapbotAI>(creature);
+ }
+
};
/*-------------------------------------------------------
@@ -550,11 +552,6 @@ class npc_pummeller : public CreatureScript
public:
npc_pummeller() : CreatureScript("npc_pummeller") { }
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUlduarAI<npc_pummellerAI>(creature);
- }
-
struct npc_pummellerAI : public ScriptedAI
{
npc_pummellerAI(Creature* creature) : ScriptedAI(creature)
@@ -574,7 +571,7 @@ class npc_pummeller : public CreatureScript
{
Initialize();
- if (Creature* xt002 = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_XT002)))
+ if (Creature* xt002 = _instance->GetCreature(BOSS_XT002))
{
Position pos = xt002->GetPosition();
me->GetMotionMaster()->MovePoint(0, pos);
@@ -622,6 +619,12 @@ class npc_pummeller : public CreatureScript
uint32 _trampleTimer;
uint32 _uppercutTimer;
};
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetUlduarAI<npc_pummellerAI>(creature);
+ }
+
};
/*-------------------------------------------------------
@@ -657,11 +660,6 @@ class npc_boombot : public CreatureScript
public:
npc_boombot() : CreatureScript("npc_boombot") { }
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetUlduarAI<npc_boombotAI>(creature);
- }
-
struct npc_boombotAI : public ScriptedAI
{
npc_boombotAI(Creature* creature) : ScriptedAI(creature)
@@ -682,8 +680,8 @@ class npc_boombot : public CreatureScript
DoCast(SPELL_AURA_BOOMBOT); // For achievement
/// @todo proper waypoints?
- if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_XT002)))
- me->GetMotionMaster()->MoveFollow(pXT002, 0.0f, 0.0f);
+ if (Creature* xt002 = _instance->GetCreature(BOSS_XT002))
+ me->GetMotionMaster()->MoveFollow(xt002, 0.0f, 0.0f);
}
void DamageTaken(Unit* /*who*/, uint32& damage) override
@@ -723,6 +721,12 @@ class npc_boombot : public CreatureScript
InstanceScript* _instance;
bool _boomed;
};
+
+ CreatureAI* GetAI(Creature* creature) const override
+ {
+ return GetUlduarAI<npc_boombotAI>(creature);
+ }
+
};
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index 6c1101d433d..79214b5b0e1 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -511,7 +511,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
void EnterCombat(Unit* /*who*/) override
{
- if (Creature* sara = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SARA)))
+ if (Creature* sara = instance->GetCreature(DATA_SARA))
sara->SetInCombatWith(me);
for (uint8 i = DATA_FREYA_YS; i <= DATA_MIMIRON_YS; ++i)
@@ -531,7 +531,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
void JustDied(Unit* killer) override
{
// don't despawn Yogg-Saron's corpse, remove him from SummonList!
- if (Creature* yogg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_YOGG_SARON)))
+ if (Creature* yogg = instance->GetCreature(BOSS_YOGG_SARON))
summons.Despawn(yogg);
BossAI::JustDied(killer);
@@ -556,7 +556,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
instance->SetBossState(BOSS_YOGG_SARON, IN_PROGRESS);
break;
case EVENT_EXTINGUISH_ALL_LIFE:
- if (Creature* yogg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_YOGG_SARON)))
+ if (Creature* yogg = instance->GetCreature(BOSS_YOGG_SARON))
{
yogg->AI()->Talk(EMOTE_YOGG_SARON_EXTINGUISH_ALL_LIFE, me);
yogg->CastSpell((Unit*)NULL, SPELL_EXTINGUISH_ALL_LIFE, true);
@@ -584,7 +584,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
break;
case EVENT_ILLUSION:
{
- if (Creature* yogg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_YOGG_SARON)))
+ if (Creature* yogg = instance->GetCreature(BOSS_YOGG_SARON))
{
yogg->AI()->Talk(EMOTE_YOGG_SARON_MADNESS);
yogg->AI()->Talk(SAY_YOGG_SARON_MADNESS);
@@ -597,7 +597,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
uint8 illusion = urand(CHAMBER_ILLUSION, STORMWIND_ILLUSION);
instance->SetData(DATA_ILLUSION, illusion);
- if (Creature* brain = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BRAIN_OF_YOGG_SARON)))
+ if (Creature* brain = instance->GetCreature(DATA_BRAIN_OF_YOGG_SARON))
brain->AI()->DoAction(ACTION_INDUCE_MADNESS);
events.ScheduleEvent(EVENT_ILLUSION, 80000, 0, PHASE_TWO); // wowwiki says 80 secs, wowhead says something about 90 secs
break;
@@ -623,7 +623,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
case ACTION_PHASE_TWO:
events.SetPhase(PHASE_TWO);
me->SummonCreature(NPC_YOGG_SARON, YoggSaronSpawnPos);
- if (Creature* brain = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BRAIN_OF_YOGG_SARON)))
+ if (Creature* brain = instance->GetCreature(DATA_BRAIN_OF_YOGG_SARON))
brain->SetInCombatWithZone();
events.ScheduleEvent(EVENT_SUMMON_CORRUPTOR_TENTACLE, 1, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
events.ScheduleEvent(EVENT_SUMMON_CONSTRICTOR_TENTACLE, 1, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
@@ -722,7 +722,7 @@ class boss_sara : public CreatureScript
if (_events.IsInPhase(PHASE_ONE))
{
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->DoAction(ACTION_PHASE_TRANSFORM);
Talk(SAY_SARA_TRANSFORM_1);
@@ -818,14 +818,14 @@ class boss_sara : public CreatureScript
Talk(SAY_SARA_TRANSFORM_4);
DoCast(me, SPELL_FULL_HEAL);
me->setFaction(16);
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->DoAction(ACTION_PHASE_TWO);
if (Creature* mimiron = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_MIMIRON_YS)))
mimiron->AI()->DoAction(ACTION_PHASE_TWO);
break;
case EVENT_TRANSFORM_4:
DoCast(me, SPELL_PHASE_2_TRANSFORM);
- if (Creature* yogg = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_YOGG_SARON)))
+ if (Creature* yogg = _instance->GetCreature(BOSS_YOGG_SARON))
DoCast(yogg, SPELL_RIDE_YOGG_SARON_VEHICLE);
DoCast(me, SPELL_SHADOWY_BARRIER_SARA);
_events.SetPhase(PHASE_TWO);
@@ -881,7 +881,7 @@ class boss_sara : public CreatureScript
break;
}
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->JustSummoned(summon);
}
@@ -948,7 +948,7 @@ class boss_yogg_saron : public CreatureScript
{
Talk(SAY_YOGG_SARON_DEATH);
- if (Creature* creature = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* creature = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
me->Kill(creature);
for (uint8 i = DATA_SARA; i <= DATA_BRAIN_OF_YOGG_SARON; ++i)
@@ -1065,11 +1065,11 @@ class boss_brain_of_yogg_saron : public CreatureScript
DoCast(me, SPELL_BRAIN_HURT_VISUAL, true);
me->AddUnitFlag(UnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE));
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->DoAction(ACTION_PHASE_THREE);
- if (Creature* sara = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SARA)))
+ if (Creature* sara = _instance->GetCreature(DATA_SARA))
sara->AI()->DoAction(ACTION_PHASE_THREE);
- if (Creature* yogg = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_YOGG_SARON)))
+ if (Creature* yogg = _instance->GetCreature(BOSS_YOGG_SARON))
yogg->AI()->DoAction(ACTION_PHASE_THREE);
for (uint8 i = DATA_THORIM_YS; i <= DATA_MIMIRON_YS; ++i)
@@ -1107,7 +1107,7 @@ class boss_brain_of_yogg_saron : public CreatureScript
DoCastAOE(SPELL_SHATTERED_ILLUSION, true);
_instance->HandleGameObject(_instance->GetGuidData(GO_BRAIN_ROOM_DOOR_1 + illusion), true);
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->DoAction(ACTION_TOGGLE_SHATTERED_ILLUSION);
}
break;
@@ -1214,7 +1214,7 @@ class npc_guardian_of_yogg_saron : public CreatureScript
return;
// Guardian can be summoned both by Voice of Yogg-Saron and by Ominous Cloud
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->JustSummoned(me);
}
@@ -1317,7 +1317,7 @@ class npc_constrictor_tentacle : public CreatureScript
void IsSummonedBy(Unit* /*summoner*/) override
{
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = _instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->JustSummoned(me);
}
@@ -1408,7 +1408,7 @@ class npc_influence_tentacle : public CreatureScript
void JustDied(Unit* /*killer*/) override
{
- if (Creature* brain = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_BRAIN_OF_YOGG_SARON)))
+ if (Creature* brain = _instance->GetCreature(DATA_BRAIN_OF_YOGG_SARON))
brain->AI()->DoAction(ACTION_TENTACLE_KILLED);
}
@@ -2779,7 +2779,7 @@ class spell_yogg_saron_induce_madness : public SpellScriptLoader // 64059
GetCaster()->CastSpell((Unit*)NULL, SPELL_SHATTERED_ILLUSION_REMOVE);
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- if (Creature* voice = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ if (Creature* voice = instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
voice->AI()->DoAction(ACTION_TOGGLE_SHATTERED_ILLUSION);
}
@@ -3053,7 +3053,9 @@ class spell_yogg_saron_in_the_maws_of_the_old_god : public SpellScriptLoader
SpellCastResult CheckRequirement()
{
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- if (Creature* yogg = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(BOSS_YOGG_SARON)))
+ {
+ if (Creature* yogg = instance->GetCreature(BOSS_YOGG_SARON))
+ {
if (yogg->FindCurrentSpellBySpellId(SPELL_DEAFENING_ROAR))
{
if (GetCaster()->GetDistance(yogg) > 20.0f)
@@ -3061,6 +3063,8 @@ class spell_yogg_saron_in_the_maws_of_the_old_god : public SpellScriptLoader
else
return SPELL_CAST_OK;
}
+ }
+ }
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index 3683e9f5ea3..d34a7ac516c 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -79,6 +79,28 @@ MinionData const minionData[] =
ObjectData const creatureData[] =
{
+ { NPC_FLAME_LEVIATHAN, BOSS_LEVIATHAN },
+ { NPC_IGNIS, BOSS_IGNIS },
+ { NPC_RAZORSCALE, BOSS_RAZORSCALE },
+ { NPC_XT002, BOSS_XT002 },
+ { NPC_KOLOGARN, BOSS_KOLOGARN },
+ { NPC_AURIAYA, BOSS_AURIAYA },
+ { NPC_HODIR, BOSS_HODIR },
+ { NPC_THORIM, BOSS_THORIM },
+ { NPC_FREYA, BOSS_FREYA },
+ { NPC_MIMIRON, BOSS_MIMIRON },
+ { NPC_VEZAX, BOSS_VEZAX },
+ { NPC_YOGG_SARON, BOSS_YOGG_SARON },
+ { NPC_ALGALON, BOSS_ALGALON },
+
+ { NPC_EXPEDITION_COMMANDER, DATA_EXPEDITION_COMMANDER },
+ { NPC_RAZORSCALE_CONTROLLER, DATA_RAZORSCALE_CONTROL },
+ { NPC_COMPUTER, DATA_COMPUTER },
+ { NPC_WORLD_TRIGGER_MIMIRON, DATA_MIMIRON_WORLD_TRIGGER },
+ { NPC_VOICE_OF_YOGG_SARON, DATA_VOICE_OF_YOGG_SARON },
+ { NPC_SARA, DATA_SARA },
+ { NPC_BRAIN_OF_YOGG_SARON, DATA_BRAIN_OF_YOGG_SARON },
+ { NPC_BRANN_BRONZBEARD_ALG, DATA_BRANN_BRONZEBEARD_ALG },
{ NPC_BRANN_BRONZEBEARD_INTRO, DATA_BRANN_BRONZEBEARD_INTRO },
{ NPC_LORE_KEEPER_OF_NORGANNON, DATA_LORE_KEEPER_OF_NORGANNON },
{ NPC_HIGH_EXPLORER_DELLORAH, DATA_DELLORAH },
@@ -86,6 +108,19 @@ ObjectData const creatureData[] =
{ 0, 0, }
};
+ObjectData const objectData[] =
+{
+ { GO_MIMIRON_ELEVATOR, DATA_MIMIRON_ELEVATOR },
+ { GO_MIMIRON_BUTTON, DATA_MIMIRON_BUTTON },
+ { GO_DOODAD_UL_UNIVERSEGLOBE01, DATA_UNIVERSE_GLOBE },
+ { GO_DOODAD_UL_ULDUAR_TRAPDOOR_03, DATA_ALGALON_TRAPDOOR },
+ { GO_RAZOR_HARPOON_1, GO_RAZOR_HARPOON_1 },
+ { GO_RAZOR_HARPOON_2, GO_RAZOR_HARPOON_2 },
+ { GO_RAZOR_HARPOON_3, GO_RAZOR_HARPOON_3 },
+ { GO_RAZOR_HARPOON_4, GO_RAZOR_HARPOON_4 },
+ { 0, 0 }
+};
+
class instance_ulduar : public InstanceMapScript
{
public:
@@ -100,7 +135,7 @@ class instance_ulduar : public InstanceMapScript
LoadBossBoundaries(boundaries);
LoadDoorData(doorData);
LoadMinionData(minionData);
- LoadObjectData(creatureData, nullptr);
+ LoadObjectData(creatureData, objectData);
_algalonTimer = 61;
_maxArmorItemLevel = 0;
@@ -124,51 +159,29 @@ class instance_ulduar : public InstanceMapScript
}
// Creatures
- ObjectGuid LeviathanGUID;
GuidVector LeviathanVehicleGUIDs;
- ObjectGuid IgnisGUID;
- ObjectGuid RazorscaleGUID;
- ObjectGuid RazorscaleController;
- ObjectGuid ExpeditionCommanderGUID;
- ObjectGuid XT002GUID;
+
ObjectGuid XTToyPileGUIDs[4];
ObjectGuid AssemblyGUIDs[3];
- ObjectGuid KologarnGUID;
- ObjectGuid AuriayaGUID;
- ObjectGuid HodirGUID;
- ObjectGuid ThorimGUID;
- ObjectGuid FreyaGUID;
+
ObjectGuid ElderGUIDs[3];
ObjectGuid FreyaAchieveTriggerGUID;
- ObjectGuid MimironGUID;
ObjectGuid MimironVehicleGUIDs[3];
- ObjectGuid MimironComputerGUID;
- ObjectGuid MimironWorldTriggerGUID;
- ObjectGuid VezaxGUID;
- ObjectGuid YoggSaronGUID;
- ObjectGuid VoiceOfYoggSaronGUID;
- ObjectGuid SaraGUID;
- ObjectGuid BrainOfYoggSaronGUID;
ObjectGuid KeeperGUIDs[4];
- ObjectGuid AlgalonGUID;
- ObjectGuid BrannBronzebeardAlgGUID;
// GameObjects
ObjectGuid LeviathanGateGUID;
- ObjectGuid RazorHarpoonGUIDs[4];
ObjectGuid KologarnChestGUID;
ObjectGuid KologarnBridgeGUID;
ObjectGuid ThorimChestGUID;
ObjectGuid HodirRareCacheGUID;
ObjectGuid HodirChestGUID;
ObjectGuid MimironTramGUID;
- ObjectGuid MimironElevatorGUID;
- ObjectGuid MimironButtonGUID;
+
ObjectGuid BrainRoomDoorGUIDs[3];
ObjectGuid AlgalonSigilDoorGUID[3];
ObjectGuid AlgalonFloorGUID[2];
- ObjectGuid AlgalonUniverseGUID;
- ObjectGuid AlgalonTrapdoorGUID;
+
ObjectGuid GiftOfTheObserverGUID;
// Miscellaneous
@@ -239,6 +252,8 @@ class instance_ulduar : public InstanceMapScript
void OnCreatureCreate(Creature* creature) override
{
+ InstanceScript::OnCreatureCreate(creature);
+
if (!TeamInInstance)
{
Map::PlayerList const& Players = instance->GetPlayers();
@@ -249,40 +264,22 @@ class instance_ulduar : public InstanceMapScript
switch (creature->GetEntry())
{
- case NPC_LEVIATHAN:
- LeviathanGUID = creature->GetGUID();
- break;
case NPC_SALVAGED_DEMOLISHER:
case NPC_SALVAGED_SIEGE_ENGINE:
case NPC_SALVAGED_CHOPPER:
LeviathanVehicleGUIDs.push_back(creature->GetGUID());
break;
- case NPC_IGNIS:
- IgnisGUID = creature->GetGUID();
- break;
-
- // Razorscale
- case NPC_RAZORSCALE:
- RazorscaleGUID = creature->GetGUID();
- break;
- case NPC_RAZORSCALE_CONTROLLER:
- RazorscaleController = creature->GetGUID();
- break;
- case NPC_EXPEDITION_COMMANDER:
- ExpeditionCommanderGUID = creature->GetGUID();
- break;
// XT-002 Deconstructor
- case NPC_XT002:
- XT002GUID = creature->GetGUID();
- break;
case NPC_XT_TOY_PILE:
for (uint8 i = 0; i < 4; ++i)
+ {
if (!XTToyPileGUIDs[i])
{
XTToyPileGUIDs[i] = creature->GetGUID();
break;
}
+ }
break;
// Assembly of Iron
@@ -299,17 +296,7 @@ class instance_ulduar : public InstanceMapScript
AddMinion(creature, true);
break;
- case NPC_KOLOGARN:
- KologarnGUID = creature->GetGUID();
- break;
- case NPC_AURIAYA:
- AuriayaGUID = creature->GetGUID();
- break;
-
// Hodir
- case NPC_HODIR:
- HodirGUID = creature->GetGUID();
- break;
case NPC_EIVI_NIGHTFEATHER:
if (TeamInInstance == HORDE)
creature->UpdateEntry(NPC_TOR_GREYCLOUD);
@@ -343,14 +330,7 @@ class instance_ulduar : public InstanceMapScript
creature->UpdateEntry(NPC_BATTLE_PRIEST_GINA);
break;
- case NPC_THORIM:
- ThorimGUID = creature->GetGUID();
- break;
-
// Freya
- case NPC_FREYA:
- FreyaGUID = creature->GetGUID();
- break;
case NPC_IRONBRANCH:
ElderGUIDs[0] = creature->GetGUID();
if (GetBossState(BOSS_FREYA) == DONE)
@@ -371,9 +351,6 @@ class instance_ulduar : public InstanceMapScript
break;
// Mimiron
- case NPC_MIMIRON:
- MimironGUID = creature->GetGUID();
- break;
case NPC_LEVIATHAN_MKII:
MimironVehicleGUIDs[0] = creature->GetGUID();
break;
@@ -383,30 +360,8 @@ class instance_ulduar : public InstanceMapScript
case NPC_AERIAL_COMMAND_UNIT:
MimironVehicleGUIDs[2] = creature->GetGUID();
break;
- case NPC_COMPUTER:
- MimironComputerGUID = creature->GetGUID();
- break;
- case NPC_WORLD_TRIGGER_MIMIRON:
- MimironWorldTriggerGUID = creature->GetGUID();
- break;
-
- case NPC_VEZAX:
- VezaxGUID = creature->GetGUID();
- break;
// Yogg-Saron
- case NPC_YOGG_SARON:
- YoggSaronGUID = creature->GetGUID();
- break;
- case NPC_VOICE_OF_YOGG_SARON:
- VoiceOfYoggSaronGUID = creature->GetGUID();
- break;
- case NPC_BRAIN_OF_YOGG_SARON:
- BrainOfYoggSaronGUID = creature->GetGUID();
- break;
- case NPC_SARA:
- SaraGUID = creature->GetGUID();
- break;
case NPC_FREYA_YS:
KeeperGUIDs[0] = creature->GetGUID();
_summonYSKeeper[0] = false;
@@ -436,12 +391,6 @@ class instance_ulduar : public InstanceMapScript
break;
// Algalon
- case NPC_ALGALON:
- AlgalonGUID = creature->GetGUID();
- break;
- case NPC_BRANN_BRONZBEARD_ALG:
- BrannBronzebeardAlgGUID = creature->GetGUID();
- break;
//! These creatures are summoned by something else than Algalon
//! but need to be controlled/despawned by him - so they need to be
//! registered in his summon list
@@ -449,7 +398,7 @@ class instance_ulduar : public InstanceMapScript
case NPC_ALGALON_STALKER_ASTEROID_TARGET_01:
case NPC_ALGALON_STALKER_ASTEROID_TARGET_02:
case NPC_UNLEASHED_DARK_MATTER:
- if (Creature* algalon = instance->GetCreature(AlgalonGUID))
+ if (Creature* algalon = GetCreature(BOSS_ALGALON))
algalon->AI()->JustSummoned(creature);
break;
}
@@ -459,34 +408,34 @@ class instance_ulduar : public InstanceMapScript
void OnCreatureRemove(Creature* creature) override
{
+ InstanceScript::OnCreatureRemove(creature);
+
switch (creature->GetEntry())
{
case NPC_XT_TOY_PILE:
for (uint8 i = 0; i < 4; ++i)
+ {
if (XTToyPileGUIDs[i] == creature->GetGUID())
{
XTToyPileGUIDs[i].Clear();
break;
}
+ }
break;
case NPC_STEELBREAKER:
case NPC_MOLGEIM:
case NPC_BRUNDIR:
AddMinion(creature, false);
break;
- case NPC_BRANN_BRONZBEARD_ALG:
- if (BrannBronzebeardAlgGUID == creature->GetGUID())
- BrannBronzebeardAlgGUID.Clear();
- break;
default:
break;
}
-
- InstanceScript::OnCreatureRemove(creature);
}
void OnGameObjectCreate(GameObject* gameObject) override
{
+ InstanceScript::OnGameObjectCreate(gameObject);
+
switch (gameObject->GetEntry())
{
case GO_KOLOGARN_CHEST_HERO:
@@ -513,43 +462,11 @@ class instance_ulduar : public InstanceMapScript
case GO_MIMIRON_TRAM:
MimironTramGUID = gameObject->GetGUID();
break;
- case GO_MIMIRON_ELEVATOR:
- MimironElevatorGUID = gameObject->GetGUID();
- break;
- case GO_MIMIRON_BUTTON:
- MimironButtonGUID = gameObject->GetGUID();
- break;
case GO_LEVIATHAN_GATE:
LeviathanGateGUID = gameObject->GetGUID();
if (GetBossState(BOSS_LEVIATHAN) == DONE)
gameObject->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
break;
- case GO_LEVIATHAN_DOOR:
- case GO_XT_002_DOOR:
- case GO_IRON_COUNCIL_DOOR:
- case GO_ARCHIVUM_DOOR:
- case GO_HODIR_ENTRANCE:
- case GO_HODIR_DOOR:
- case GO_HODIR_ICE_DOOR:
- case GO_MIMIRON_DOOR_1:
- case GO_MIMIRON_DOOR_2:
- case GO_MIMIRON_DOOR_3:
- case GO_VEZAX_DOOR:
- case GO_YOGG_SARON_DOOR:
- AddDoor(gameObject, true);
- break;
- case GO_RAZOR_HARPOON_1:
- RazorHarpoonGUIDs[0] = gameObject->GetGUID();
- break;
- case GO_RAZOR_HARPOON_2:
- RazorHarpoonGUIDs[1] = gameObject->GetGUID();
- break;
- case GO_RAZOR_HARPOON_3:
- RazorHarpoonGUIDs[2] = gameObject->GetGUID();
- break;
- case GO_RAZOR_HARPOON_4:
- RazorHarpoonGUIDs[3] = gameObject->GetGUID();
- break;
case GO_MOLE_MACHINE:
if (GetBossState(BOSS_RAZORSCALE) == IN_PROGRESS)
gameObject->SetGoState(GO_STATE_ACTIVE);
@@ -580,23 +497,12 @@ class instance_ulduar : public InstanceMapScript
break;
case GO_DOODAD_UL_SIGILDOOR_03:
AlgalonSigilDoorGUID[2] = gameObject->GetGUID();
- AddDoor(gameObject, true);
break;
case GO_DOODAD_UL_UNIVERSEFLOOR_01:
AlgalonFloorGUID[0] = gameObject->GetGUID();
- AddDoor(gameObject, true);
break;
case GO_DOODAD_UL_UNIVERSEFLOOR_02:
AlgalonFloorGUID[1] = gameObject->GetGUID();
- AddDoor(gameObject, true);
- break;
- case GO_DOODAD_UL_UNIVERSEGLOBE01:
- AlgalonUniverseGUID = gameObject->GetGUID();
- AddDoor(gameObject, true);
- break;
- case GO_DOODAD_UL_ULDUAR_TRAPDOOR_03:
- AlgalonTrapdoorGUID = gameObject->GetGUID();
- AddDoor(gameObject, true);
break;
case GO_GIFT_OF_THE_OBSERVER_10:
case GO_GIFT_OF_THE_OBSERVER_25:
@@ -607,40 +513,12 @@ class instance_ulduar : public InstanceMapScript
}
}
- void OnGameObjectRemove(GameObject* gameObject) override
- {
- switch (gameObject->GetEntry())
- {
- case GO_LEVIATHAN_DOOR:
- case GO_XT_002_DOOR:
- case GO_IRON_COUNCIL_DOOR:
- case GO_ARCHIVUM_DOOR:
- case GO_HODIR_ENTRANCE:
- case GO_HODIR_DOOR:
- case GO_HODIR_ICE_DOOR:
- case GO_MIMIRON_DOOR_1:
- case GO_MIMIRON_DOOR_2:
- case GO_MIMIRON_DOOR_3:
- case GO_VEZAX_DOOR:
- case GO_YOGG_SARON_DOOR:
- case GO_DOODAD_UL_SIGILDOOR_03:
- case GO_DOODAD_UL_UNIVERSEFLOOR_01:
- case GO_DOODAD_UL_UNIVERSEFLOOR_02:
- case GO_DOODAD_UL_UNIVERSEGLOBE01:
- case GO_DOODAD_UL_ULDUAR_TRAPDOOR_03:
- AddDoor(gameObject, false);
- break;
- default:
- break;
- }
- }
-
void OnUnitDeath(Unit* unit) override
{
// Champion/Conqueror of Ulduar
if (unit->GetTypeId() == TYPEID_PLAYER)
{
- for (uint8 i = 0; i < BOSS_ALGALON; i++)
+ for (uint8 i = 0; i < BOSS_ALGALON; ++i)
{
if (GetBossState(i) == IN_PROGRESS)
{
@@ -686,27 +564,27 @@ class instance_ulduar : public InstanceMapScript
void ProcessEvent(WorldObject* /*gameObject*/, uint32 eventId) override
{
- // Flame Leviathan's Tower Event triggers
- Creature* FlameLeviathan = instance->GetCreature(LeviathanGUID);
-
switch (eventId)
{
+ // Flame Leviathan's Tower Event triggers
case EVENT_TOWER_OF_STORM_DESTROYED:
- if (FlameLeviathan && FlameLeviathan->IsAlive())
- FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_STORM_DESTROYED);
+ if (Creature* flameLeviathan = GetCreature(BOSS_LEVIATHAN))
+ flameLeviathan->AI()->DoAction(ACTION_TOWER_OF_STORM_DESTROYED);
break;
case EVENT_TOWER_OF_FROST_DESTROYED:
- if (FlameLeviathan && FlameLeviathan->IsAlive())
- FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_FROST_DESTROYED);
+ if (Creature* flameLeviathan = GetCreature(BOSS_LEVIATHAN))
+ flameLeviathan->AI()->DoAction(ACTION_TOWER_OF_FROST_DESTROYED);
break;
case EVENT_TOWER_OF_FLAMES_DESTROYED:
- if (FlameLeviathan && FlameLeviathan->IsAlive())
- FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_FLAMES_DESTROYED);
+ if (Creature* flameLeviathan = GetCreature(BOSS_LEVIATHAN))
+ flameLeviathan->AI()->DoAction(ACTION_TOWER_OF_FLAMES_DESTROYED);
break;
case EVENT_TOWER_OF_LIFE_DESTROYED:
- if (FlameLeviathan && FlameLeviathan->IsAlive())
- FlameLeviathan->AI()->DoAction(ACTION_TOWER_OF_LIFE_DESTROYED);
+ if (Creature* flameLeviathan = GetCreature(BOSS_LEVIATHAN))
+ flameLeviathan->AI()->DoAction(ACTION_TOWER_OF_LIFE_DESTROYED);
break;
+
+ // Yogg-Saron Event triggers
case EVENT_ACTIVATE_SANITY_WELL:
if (Creature* freya = instance->GetCreature(KeeperGUIDs[0]))
freya->AI()->DoAction(4/*ACTION_SANITY_WELLS*/);
@@ -851,9 +729,9 @@ class instance_ulduar : public InstanceMapScript
HodirRareCacheData = data;
if (!HodirRareCacheData)
{
- if (Creature* Hodir = instance->GetCreature(HodirGUID))
+ if (Creature* hodir = GetCreature(BOSS_HODIR))
if (GameObject* gameObject = instance->GetGameObject(HodirRareCacheGUID))
- Hodir->RemoveGameObject(gameObject, false);
+ hodir->RemoveGameObject(gameObject, false);
}
break;
case DATA_UNBROKEN:
@@ -888,30 +766,7 @@ class instance_ulduar : public InstanceMapScript
{
switch (data)
{
- case BOSS_LEVIATHAN:
- return LeviathanGUID;
- case BOSS_IGNIS:
- return IgnisGUID;
-
- // Razorscale
- case BOSS_RAZORSCALE:
- return RazorscaleGUID;
- case DATA_RAZORSCALE_CONTROL:
- return RazorscaleController;
- case DATA_EXPEDITION_COMMANDER:
- return ExpeditionCommanderGUID;
- case GO_RAZOR_HARPOON_1:
- return RazorHarpoonGUIDs[0];
- case GO_RAZOR_HARPOON_2:
- return RazorHarpoonGUIDs[1];
- case GO_RAZOR_HARPOON_3:
- return RazorHarpoonGUIDs[2];
- case GO_RAZOR_HARPOON_4:
- return RazorHarpoonGUIDs[3];
-
// XT-002 Deconstructor
- case BOSS_XT002:
- return XT002GUID;
case DATA_TOY_PILE_0:
case DATA_TOY_PILE_1:
case DATA_TOY_PILE_2:
@@ -926,18 +781,7 @@ class instance_ulduar : public InstanceMapScript
case DATA_BRUNDIR:
return AssemblyGUIDs[2];
- case BOSS_KOLOGARN:
- return KologarnGUID;
- case BOSS_AURIAYA:
- return AuriayaGUID;
- case BOSS_HODIR:
- return HodirGUID;
- case BOSS_THORIM:
- return ThorimGUID;
-
// Freya
- case BOSS_FREYA:
- return FreyaGUID;
case BOSS_BRIGHTLEAF:
return ElderGUIDs[0];
case BOSS_IRONBRANCH:
@@ -946,35 +790,14 @@ class instance_ulduar : public InstanceMapScript
return ElderGUIDs[2];
// Mimiron
- case BOSS_MIMIRON:
- return MimironGUID;
case DATA_LEVIATHAN_MK_II:
return MimironVehicleGUIDs[0];
case DATA_VX_001:
return MimironVehicleGUIDs[1];
case DATA_AERIAL_COMMAND_UNIT:
return MimironVehicleGUIDs[2];
- case DATA_COMPUTER:
- return MimironComputerGUID;
- case DATA_MIMIRON_WORLD_TRIGGER:
- return MimironWorldTriggerGUID;
- case DATA_MIMIRON_ELEVATOR:
- return MimironElevatorGUID;
- case DATA_MIMIRON_BUTTON:
- return MimironButtonGUID;
-
- case BOSS_VEZAX:
- return VezaxGUID;
// Yogg-Saron
- case BOSS_YOGG_SARON:
- return YoggSaronGUID;
- case DATA_VOICE_OF_YOGG_SARON:
- return VoiceOfYoggSaronGUID;
- case DATA_BRAIN_OF_YOGG_SARON:
- return BrainOfYoggSaronGUID;
- case DATA_SARA:
- return SaraGUID;
case GO_BRAIN_ROOM_DOOR_1:
return BrainRoomDoorGUIDs[0];
case GO_BRAIN_ROOM_DOOR_2:
@@ -991,8 +814,6 @@ class instance_ulduar : public InstanceMapScript
return KeeperGUIDs[3];
// Algalon
- case BOSS_ALGALON:
- return AlgalonGUID;
case DATA_SIGILDOOR_01:
return AlgalonSigilDoorGUID[0];
case DATA_SIGILDOOR_02:
@@ -1003,15 +824,9 @@ class instance_ulduar : public InstanceMapScript
return AlgalonFloorGUID[0];
case DATA_UNIVERSE_FLOOR_02:
return AlgalonFloorGUID[1];
- case DATA_UNIVERSE_GLOBE:
- return AlgalonUniverseGUID;
- case DATA_ALGALON_TRAPDOOR:
- return AlgalonTrapdoorGUID;
- case DATA_BRANN_BRONZEBEARD_ALG:
- return BrannBronzebeardAlgGUID;
}
- return ObjectGuid::Empty;
+ return InstanceScript::GetGuidData(data);
}
uint32 GetData(uint32 type) const override
@@ -1179,7 +994,7 @@ class instance_ulduar : public InstanceMapScript
{
DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 0);
_events.CancelEvent(EVENT_UPDATE_ALGALON_TIMER);
- if (Creature* algalon = instance->GetCreature(AlgalonGUID))
+ if (Creature* algalon = GetCreature(BOSS_ALGALON))
algalon->AI()->DoAction(EVENT_DESPAWN_ALGALON);
}
break;
@@ -1200,8 +1015,8 @@ class instance_ulduar : public InstanceMapScript
}
break;
case EVENT_LEVIATHAN_BREAK_DOOR:
- if (Creature* Leviathan = instance->GetCreature(LeviathanGUID))
- Leviathan->AI()->DoAction(ACTION_MOVE_TO_CENTER_POSITION);
+ if (Creature* leviathan = GetCreature(BOSS_LEVIATHAN))
+ leviathan->AI()->DoAction(ACTION_MOVE_TO_CENTER_POSITION);
if (GameObject* gameObject = instance->GetGameObject(LeviathanGateGUID))
gameObject->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
break;