diff options
Diffstat (limited to 'src')
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 |