mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-19 08:30:34 +01:00
Scripts/HoL: modernized instance script
This commit is contained in:
@@ -175,7 +175,7 @@ struct boss_bjarngrim : public ScriptedAI
|
||||
|
||||
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE);
|
||||
|
||||
instance->SetBossState(DATA_BJARNGRIM, NOT_STARTED);
|
||||
instance->SetBossState(DATA_GENERAL_BJARNGRIM, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason why) override
|
||||
@@ -195,7 +195,7 @@ struct boss_bjarngrim : public ScriptedAI
|
||||
//must get both lieutenants here and make sure they are with him
|
||||
me->CallForHelp(30.0f);
|
||||
|
||||
instance->SetBossState(DATA_BJARNGRIM, IN_PROGRESS);
|
||||
instance->SetBossState(DATA_GENERAL_BJARNGRIM, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
@@ -207,7 +207,7 @@ struct boss_bjarngrim : public ScriptedAI
|
||||
{
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
instance->SetBossState(DATA_BJARNGRIM, DONE);
|
||||
instance->SetBossState(DATA_GENERAL_BJARNGRIM, DONE);
|
||||
}
|
||||
|
||||
/// @todo remove when removal is done by the core
|
||||
@@ -400,7 +400,7 @@ struct npc_stormforged_lieutenant : public ScriptedAI
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
{
|
||||
if (Creature* pBjarngrim = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BJARNGRIM)))
|
||||
if (Creature* pBjarngrim = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_GENERAL_BJARNGRIM)))
|
||||
{
|
||||
if (pBjarngrim->IsAlive() && !pBjarngrim->GetVictim())
|
||||
pBjarngrim->AI()->AttackStart(who);
|
||||
@@ -423,7 +423,7 @@ struct npc_stormforged_lieutenant : public ScriptedAI
|
||||
|
||||
if (m_uiRenewSteel_Timer <= uiDiff)
|
||||
{
|
||||
if (Creature* pBjarngrim = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BJARNGRIM)))
|
||||
if (Creature* pBjarngrim = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_GENERAL_BJARNGRIM)))
|
||||
{
|
||||
if (pBjarngrim->IsAlive())
|
||||
DoCast(pBjarngrim, SPELL_RENEW_STEEL_N);
|
||||
|
||||
@@ -27,19 +27,23 @@ uint32 const EncounterCount = 4;
|
||||
|
||||
enum HOLDataTypes
|
||||
{
|
||||
// Encounter States/Boss GUIDs
|
||||
DATA_BJARNGRIM = 0,
|
||||
// Bosses
|
||||
DATA_GENERAL_BJARNGRIM = 0,
|
||||
DATA_VOLKHAN = 1,
|
||||
DATA_IONAR = 2,
|
||||
DATA_LOKEN = 3
|
||||
DATA_LOKEN = 3,
|
||||
|
||||
// Misc
|
||||
DATA_LOKEN_GLOBE
|
||||
};
|
||||
|
||||
enum HOLCreaturesIds
|
||||
{
|
||||
NPC_BJARNGRIM = 28586,
|
||||
NPC_VOLKHAN = 28587,
|
||||
NPC_IONAR = 28546,
|
||||
NPC_LOKEN = 28923
|
||||
// Bosses
|
||||
BOSS_GENERAL_BJARNGRIM = 28586,
|
||||
BOSS_VOLKHAN = 28587,
|
||||
BOSS_IONAR = 28546,
|
||||
BOSS_LOKEN = 28923
|
||||
};
|
||||
|
||||
enum HOLGameObjectIds
|
||||
|
||||
@@ -30,6 +30,21 @@ DoorData const doorData[] =
|
||||
{ 0, 0, DOOR_TYPE_ROOM } // END
|
||||
};
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ BOSS_GENERAL_BJARNGRIM, DATA_GENERAL_BJARNGRIM },
|
||||
{ BOSS_VOLKHAN, DATA_VOLKHAN },
|
||||
{ BOSS_IONAR, DATA_IONAR },
|
||||
{ BOSS_LOKEN, DATA_LOKEN },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
ObjectData const gameObjectData[] =
|
||||
{
|
||||
{ GO_LOKEN_THRONE, DATA_LOKEN_GLOBE },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
class instance_halls_of_lightning : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
@@ -41,42 +56,18 @@ class instance_halls_of_lightning : public InstanceMapScript
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(EncounterCount);
|
||||
LoadObjectData(creatureData, gameObjectData);
|
||||
LoadDoorData(doorData);
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_BJARNGRIM:
|
||||
GeneralBjarngrimGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_VOLKHAN:
|
||||
VolkhanGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_IONAR:
|
||||
IonarGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_LOKEN:
|
||||
LokenGUID = creature->GetGUID();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
InstanceScript::OnCreatureCreate(creature);
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
{
|
||||
InstanceScript::OnGameObjectCreate(go);
|
||||
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
case GO_LOKEN_THRONE:
|
||||
LokenGlobeGUID = go->GetGUID();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool SetBossState(uint32 type, EncounterState state) override
|
||||
@@ -88,7 +79,7 @@ class instance_halls_of_lightning : public InstanceMapScript
|
||||
{
|
||||
case DATA_LOKEN:
|
||||
if (state == DONE)
|
||||
if (GameObject* globe = instance->GetGameObject(LokenGlobeGUID))
|
||||
if (GameObject* globe = GetGameObject(DATA_LOKEN_GLOBE))
|
||||
globe->SendCustomAnim(0);
|
||||
break;
|
||||
default:
|
||||
@@ -100,29 +91,8 @@ class instance_halls_of_lightning : public InstanceMapScript
|
||||
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_BJARNGRIM:
|
||||
return GeneralBjarngrimGUID;
|
||||
case DATA_VOLKHAN:
|
||||
return VolkhanGUID;
|
||||
case DATA_IONAR:
|
||||
return IonarGUID;
|
||||
case DATA_LOKEN:
|
||||
return LokenGUID;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ObjectGuid::Empty;
|
||||
return InstanceScript::GetGuidData(type);
|
||||
}
|
||||
|
||||
protected:
|
||||
ObjectGuid GeneralBjarngrimGUID;
|
||||
ObjectGuid VolkhanGUID;
|
||||
ObjectGuid IonarGUID;
|
||||
ObjectGuid LokenGUID;
|
||||
|
||||
ObjectGuid LokenGlobeGUID;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
Reference in New Issue
Block a user