diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp index 7c605693c0a..f47758cb4cf 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp @@ -352,7 +352,7 @@ class npc_shard_of_torment : public CreatureScript void IsSummonedBy(Unit* summoner) override { - if (summoner->GetEntry() == NPC_BALEROC) + if (summoner->GetEntry() == BOSS_BALEROC) { if (_instance->GetBossState(DATA_BALEROC) != IN_PROGRESS) me->DespawnOrUnsummon(); @@ -367,7 +367,7 @@ class npc_shard_of_torment : public CreatureScript void KilledUnit(Unit* who) override { if (who->GetTypeId() == TYPEID_PLAYER) - if (Creature* baleroc = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_BALEROC))) + if (Creature* baleroc = _instance->GetCreature(DATA_BALEROC)) baleroc->AI()->KilledUnit(who); } diff --git a/src/server/scripts/Kalimdor/Firelands/firelands.h b/src/server/scripts/Kalimdor/Firelands/firelands.h index a5aa6e5e589..f989e443286 100644 --- a/src/server/scripts/Kalimdor/Firelands/firelands.h +++ b/src/server/scripts/Kalimdor/Firelands/firelands.h @@ -27,25 +27,26 @@ uint32 const EncounterCount = 7; enum FLDataTypes { - DATA_BETH_TILAC = 0, + // Bosses + DATA_BETHTILAC = 0, DATA_LORD_RHYOLITH = 1, DATA_SHANNOX = 2, DATA_ALYSRAZOR = 3, DATA_BALEROC = 4, DATA_MAJORDOMO_STAGHELM = 5, - DATA_RAGNAROS = 6, + DATA_RAGNAROS = 6 }; enum FLCreatureIds { //Bosses - NPC_SHANNOX = 53691, - NPC_LORD_RHYOLITH = 52558, - NPC_BETH_TILAC = 52498, - NPC_ALYSRAZOR = 52530, - NPC_BALEROC = 53494, - NPC_MAJORDOMO_STAGHELM = 52571, - NPC_RAGNAROS = 52409, + BOSS_SHANNOX = 53691, + BOSS_LORD_RHYOLITH = 52558, + BOSS_BETHTILAC = 52498, + BOSS_ALYSRAZOR = 52530, + BOSS_BALEROC = 53494, + BOSS_MAJORDOMO_STAGHELM = 52571, + BOSS_RAGNAROS = 52409, //Alysrazor NPC_BLAZING_MONSTROSITY_LEFT = 53786, diff --git a/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp b/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp index 8983cd1b797..d0d856044e8 100644 --- a/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp +++ b/src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp @@ -23,31 +23,44 @@ #include "InstanceScript.h" #include "Map.h" -class DelayedAttackStartEvent : public BasicEvent +ObjectData const creatureData[] = { - public: - DelayedAttackStartEvent(Creature* owner) : _owner(owner) { } - - bool Execute(uint64 /*e_time*/, uint32 /*p_time*/) override - { - _owner->AI()->DoZoneInCombat(_owner); - return true; - } - - private: - Creature* _owner; + { BOSS_BETHTILAC, DATA_BETHTILAC }, + { BOSS_SHANNOX, DATA_SHANNOX, }, + { BOSS_LORD_RHYOLITH, DATA_LORD_RHYOLITH }, + { BOSS_ALYSRAZOR, DATA_ALYSRAZOR }, + { BOSS_BALEROC, DATA_BALEROC }, + { BOSS_MAJORDOMO_STAGHELM, DATA_MAJORDOMO_STAGHELM }, + { BOSS_RAGNAROS, DATA_RAGNAROS }, + { 0, 0, } // END }; DoorData const doorData[] = { {GO_LORD_RHYOLITH_BRIDGE, DATA_LORD_RHYOLITH, DOOR_TYPE_ROOM}, - {GO_BETH_TILAC_DOOR, DATA_BETH_TILAC, DOOR_TYPE_ROOM}, + {GO_BETH_TILAC_DOOR, DATA_BETHTILAC, DOOR_TYPE_ROOM}, //{GO_BALEROC_FIREWALL, DATA_BALEROC, DOOR_TYPE_ROOM}, {GO_MAJORDOMO_FIREWALL, DATA_MAJORDOMO_STAGHELM, DOOR_TYPE_PASSAGE}, {GO_RAGNAROS_DOOR, DATA_RAGNAROS, DOOR_TYPE_ROOM}, {0, 0, DOOR_TYPE_ROOM}, //END }; //Baleroc door is special, it depends on the health status of the other bosses in the instance +class DelayedAttackStartEvent : public BasicEvent +{ +public: + DelayedAttackStartEvent(Creature* owner) : _owner(owner) {} + + bool Execute(uint64 /*e_time*/, uint32 /*p_time*/) override + { + _owner->AI()->DoZoneInCombat(_owner); + return true; + } + +private: + Creature* _owner; +}; + + class instance_firelands : public InstanceMapScript { public: @@ -60,6 +73,7 @@ class instance_firelands : public InstanceMapScript SetHeaders(DataHeader); SetBossNumber(EncounterCount); LoadDoorData(doorData); + LoadObjectData(creatureData, nullptr); } void OnCreatureCreate(Creature* creature) override @@ -70,26 +84,10 @@ class instance_firelands : public InstanceMapScript // Cannot directly start attacking here as the creature is not yet on map creature->m_Events.AddEvent(new DelayedAttackStartEvent(creature), creature->m_Events.CalculateTime(500)); break; - case NPC_BALEROC: - BalerocGUID = creature->GetGUID(); + default: break; } } - - ObjectGuid GetGuidData(uint32 type) const override - { - switch (type) - { - case DATA_BALEROC: - return BalerocGUID; - } - - return ObjectGuid::Empty; - } - - private: - ObjectGuid BalerocGUID; - }; InstanceScript* GetInstanceScript(InstanceMap* map) const override