aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp14
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h26
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp128
3 files changed, 49 insertions, 119 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
index 7fd9b5650aa..230a2e59563 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
@@ -95,12 +95,12 @@ Position const CenterPoint = { 1293.8799f, 666.942f, 189.60754f, 0.0f };
struct boss_sjonnir : public BossAI
{
- boss_sjonnir(Creature* creature) : BossAI(creature, DATA_SJONNIR),
+ boss_sjonnir(Creature* creature) : BossAI(creature, DATA_SJONNIR_THE_IRONSHAPER),
_sludgesKilled(0), _summonsTroggs(false), _summonsOozes(false), _summonsDwarfs(false), _frenzied(false) { }
void JustEngagedWith(Unit* who) override
{
- if (!instance->CheckRequiredBosses(DATA_SJONNIR, who->ToPlayer()))
+ if (!instance->CheckRequiredBosses(DATA_SJONNIR_THE_IRONSHAPER, who->ToPlayer()))
{
EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK);
return;
@@ -359,8 +359,9 @@ struct npc_iron_sludge : public ScriptedAI
me->SetCorpseDelay(4, true);
DoCastSelf(SPELL_IRON_SLUDGE_SPAWN_VISUAL);
- if (Creature* sjonnir = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SJONNIR)))
- sjonnir->AI()->JustSummoned(me);
+ if (Creature* sjonnir = _instance->GetCreature(DATA_SJONNIR_THE_IRONSHAPER))
+ if (CreatureAI* ai = sjonnir->AI())
+ ai->JustSummoned(me);
}
void JustEngagedWith(Unit* /*who*/) override
@@ -374,8 +375,9 @@ struct npc_iron_sludge : public ScriptedAI
void JustDied(Unit* /*killer*/) override
{
- if (Creature* sjonnir = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SJONNIR)))
- sjonnir->AI()->DoAction(ACTION_SLUDGE_DEAD);
+ if (Creature* sjonnir = _instance->GetCreature(DATA_SJONNIR_THE_IRONSHAPER))
+ if (CreatureAI* ai = sjonnir->AI())
+ ai->DoAction(ACTION_SLUDGE_DEAD);
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
index 187ece05c7a..863c569b7c8 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
@@ -27,28 +27,30 @@ uint32 const EncounterCount = 4;
enum HOSDataTypes
{
- // Encounter States/Boss GUIDs
+ // Bosses
DATA_KRYSTALLUS = 0,
DATA_MAIDEN_OF_GRIEF = 1,
DATA_TRIBUNAL_OF_AGES = 2,
- DATA_SJONNIR = 3,
+ DATA_SJONNIR_THE_IRONSHAPER = 3,
// Additional data
- DATA_KADDRAK = 4,
- DATA_MARNAK = 5,
- DATA_ABEDNEUM = 6,
- DATA_GO_TRIBUNAL_CONSOLE = 7,
- DATA_GO_KADDRAK = 8,
- DATA_GO_MARNAK = 9,
- DATA_GO_ABEDNEUM = 10,
- DATA_GO_SKY_FLOOR = 11
+ /*Tribunal of Ages*/
+ DATA_KADDRAK,
+ DATA_MARNAK,
+ DATA_ABEDNEUM,
+ DATA_GO_TRIBUNAL_CONSOLE,
+ DATA_GO_KADDRAK,
+ DATA_GO_MARNAK,
+ DATA_GO_ABEDNEUM,
+ DATA_GO_SKY_FLOOR,
+ DATA_GO_TRIBUNAL_CHEST
};
enum HOSCreatureIds
{
- NPC_MAIDEN = 27975,
+ NPC_MAIDEN_OF_GRIEF = 27975,
NPC_KRYSTALLUS = 27977,
- NPC_SJONNIR = 27978,
+ NPC_SJONNIR_THE_IRONSHAPER = 27978,
NPC_MARNAK = 30897,
NPC_KADDRAK = 30898,
NPC_ABEDNEUM = 30899,
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
index 41853110de9..8bd8ac33438 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
@@ -25,7 +25,30 @@
DoorData const doorData[] =
{
{ GO_SJONNIR_DOOR, DATA_TRIBUNAL_OF_AGES, DOOR_TYPE_PASSAGE },
- { 0, 0, DOOR_TYPE_ROOM } // END
+ { 0, 0, DOOR_TYPE_ROOM } // END
+};
+
+ObjectData const creatureData[] =
+{
+ { NPC_KRYSTALLUS, DATA_KRYSTALLUS },
+ { NPC_MAIDEN_OF_GRIEF, DATA_MAIDEN_OF_GRIEF },
+ { NPC_SJONNIR_THE_IRONSHAPER, DATA_SJONNIR_THE_IRONSHAPER },
+ { NPC_KADDRAK, DATA_KADDRAK },
+ { NPC_MARNAK, DATA_MARNAK },
+ { NPC_ABEDNEUM, DATA_ABEDNEUM },
+ { 0, 0 } // END
+};
+
+ObjectData const gameObjectData[] =
+{
+ { GO_KADDRAK, DATA_GO_KADDRAK },
+ { GO_MARNAK, DATA_GO_MARNAK },
+ { GO_ABEDNEUM, DATA_GO_ABEDNEUM },
+ { GO_TRIBUNAL_CONSOLE, DATA_GO_TRIBUNAL_CONSOLE },
+ { GO_TRIBUNAL_SKY_FLOOR, DATA_GO_SKY_FLOOR },
+ { GO_TRIBUNAL_CHEST, DATA_GO_TRIBUNAL_CHEST },
+ { GO_TRIBUNAL_CHEST_HERO, DATA_GO_TRIBUNAL_CHEST },
+ { 0, 0 } // END
};
class instance_halls_of_stone : public InstanceMapScript
@@ -39,104 +62,26 @@ class instance_halls_of_stone : public InstanceMapScript
{
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
+ LoadObjectData(creatureData, gameObjectData);
LoadDoorData(doorData);
}
- void OnCreatureCreate(Creature* creature) override
- {
- switch (creature->GetEntry())
- {
- case NPC_KRYSTALLUS:
- KrystallusGUID = creature->GetGUID();
- break;
- case NPC_MAIDEN:
- MaidenOfGriefGUID = creature->GetGUID();
- break;
- case NPC_SJONNIR:
- SjonnirGUID = creature->GetGUID();
- break;
- case NPC_MARNAK:
- MarnakGUID = creature->GetGUID();
- break;
- case NPC_KADDRAK:
- KaddrakGUID = creature->GetGUID();
- break;
- case NPC_ABEDNEUM:
- AbedneumGUID = creature->GetGUID();
- break;
- case NPC_BRANN:
- BrannGUID = creature->GetGUID();
- break;
- default:
- break;
- }
- }
-
void OnGameObjectCreate(GameObject* go) override
{
InstanceScript::OnGameObjectCreate(go);
switch (go->GetEntry())
{
- case GO_ABEDNEUM:
- AbedneumGoGUID = go->GetGUID();
- break;
- case GO_MARNAK:
- MarnakGoGUID = go->GetGUID();
- break;
- case GO_KADDRAK:
- KaddrakGoGUID = go->GetGUID();
- break;
- case GO_TRIBUNAL_CONSOLE:
- TribunalConsoleGUID = go->GetGUID();
- break;
case GO_TRIBUNAL_CHEST:
case GO_TRIBUNAL_CHEST_HERO:
- TribunalChestGUID = go->GetGUID();
if (GetBossState(DATA_TRIBUNAL_OF_AGES) == DONE)
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
break;
- case GO_TRIBUNAL_SKY_FLOOR:
- TribunalSkyFloorGUID = go->GetGUID();
- break;
default:
break;
}
}
- ObjectGuid GetGuidData(uint32 type) const override
- {
- switch (type)
- {
- case DATA_MAIDEN_OF_GRIEF:
- return MaidenOfGriefGUID;
- case DATA_KRYSTALLUS:
- return KrystallusGUID;
- case DATA_SJONNIR:
- return SjonnirGUID;
- case DATA_KADDRAK:
- return KaddrakGUID;
- case DATA_MARNAK:
- return MarnakGUID;
- case DATA_ABEDNEUM:
- return AbedneumGUID;
- case DATA_GO_TRIBUNAL_CONSOLE:
- return TribunalConsoleGUID;
- case DATA_GO_KADDRAK:
- return KaddrakGoGUID;
- case DATA_GO_ABEDNEUM:
- return AbedneumGoGUID;
- case DATA_GO_MARNAK:
- return MarnakGoGUID;
- case DATA_GO_SKY_FLOOR:
- return TribunalSkyFloorGUID;
- default:
- break;
- }
-
- return ObjectGuid::Empty;
- }
-
bool SetBossState(uint32 type, EncounterState state) override
{
if (!InstanceScript::SetBossState(type, state))
@@ -146,10 +91,8 @@ class instance_halls_of_stone : public InstanceMapScript
{
case DATA_TRIBUNAL_OF_AGES:
if (state == DONE)
- {
- if (GameObject* go = instance->GetGameObject(TribunalChestGUID))
+ if (GameObject* go = GetGameObject(DATA_GO_TRIBUNAL_CHEST))
go->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
- }
break;
default:
break;
@@ -165,7 +108,7 @@ class instance_halls_of_stone : public InstanceMapScript
switch (bossId)
{
- case DATA_SJONNIR:
+ case DATA_SJONNIR_THE_IRONSHAPER:
if (GetBossState(DATA_TRIBUNAL_OF_AGES) != DONE)
return false;
break;
@@ -175,23 +118,6 @@ class instance_halls_of_stone : public InstanceMapScript
return true;
}
-
- protected:
- ObjectGuid KrystallusGUID;
- ObjectGuid MaidenOfGriefGUID;
- ObjectGuid SjonnirGUID;
-
- ObjectGuid KaddrakGUID;
- ObjectGuid AbedneumGUID;
- ObjectGuid MarnakGUID;
- ObjectGuid BrannGUID;
-
- ObjectGuid TribunalConsoleGUID;
- ObjectGuid TribunalChestGUID;
- ObjectGuid TribunalSkyFloorGUID;
- ObjectGuid KaddrakGoGUID;
- ObjectGuid AbedneumGoGUID;
- ObjectGuid MarnakGoGUID;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override