mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Scripts/FL: modernize instance script to latest standards
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user