Scripts/HoL: modernized instance script

(cherry picked from commit 7a73b8412a4232eccb1986ec220ec9031b1e0bff)
This commit is contained in:
Ovahlord
2022-09-30 20:25:05 +02:00
committed by Shauren
parent 4fd29adc59
commit 60a2215669
3 changed files with 35 additions and 61 deletions
@@ -175,7 +175,7 @@ struct boss_bjarngrim : public ScriptedAI
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE); 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 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 //must get both lieutenants here and make sure they are with him
me->CallForHelp(30.0f); me->CallForHelp(30.0f);
instance->SetBossState(DATA_BJARNGRIM, IN_PROGRESS); instance->SetBossState(DATA_GENERAL_BJARNGRIM, IN_PROGRESS);
} }
void KilledUnit(Unit* /*victim*/) override void KilledUnit(Unit* /*victim*/) override
@@ -207,7 +207,7 @@ struct boss_bjarngrim : public ScriptedAI
{ {
Talk(SAY_DEATH); Talk(SAY_DEATH);
instance->SetBossState(DATA_BJARNGRIM, DONE); instance->SetBossState(DATA_GENERAL_BJARNGRIM, DONE);
} }
/// @todo remove when removal is done by the core /// @todo remove when removal is done by the core
@@ -400,7 +400,7 @@ struct npc_stormforged_lieutenant : public ScriptedAI
void JustEngagedWith(Unit* who) override 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()) if (pBjarngrim->IsAlive() && !pBjarngrim->GetVictim())
pBjarngrim->AI()->AttackStart(who); pBjarngrim->AI()->AttackStart(who);
@@ -423,7 +423,7 @@ struct npc_stormforged_lieutenant : public ScriptedAI
if (m_uiRenewSteel_Timer <= uiDiff) 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()) if (pBjarngrim->IsAlive())
DoCast(pBjarngrim, SPELL_RENEW_STEEL_N); DoCast(pBjarngrim, SPELL_RENEW_STEEL_N);
@@ -27,19 +27,23 @@ uint32 const EncounterCount = 4;
enum HOLDataTypes enum HOLDataTypes
{ {
// Encounter States/Boss GUIDs // Bosses
DATA_BJARNGRIM = 0, DATA_GENERAL_BJARNGRIM = 0,
DATA_VOLKHAN = 1, DATA_VOLKHAN = 1,
DATA_IONAR = 2, DATA_IONAR = 2,
DATA_LOKEN = 3 DATA_LOKEN = 3,
// Misc
DATA_LOKEN_GLOBE
}; };
enum HOLCreaturesIds enum HOLCreaturesIds
{ {
NPC_BJARNGRIM = 28586, // Bosses
NPC_VOLKHAN = 28587, BOSS_GENERAL_BJARNGRIM = 28586,
NPC_IONAR = 28546, BOSS_VOLKHAN = 28587,
NPC_LOKEN = 28923 BOSS_IONAR = 28546,
BOSS_LOKEN = 28923
}; };
enum HOLGameObjectIds enum HOLGameObjectIds
@@ -30,6 +30,21 @@ DoorData const doorData[] =
{ 0, 0, DOOR_TYPE_ROOM } // END { 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 class instance_halls_of_lightning : public InstanceMapScript
{ {
public: public:
@@ -41,42 +56,18 @@ class instance_halls_of_lightning : public InstanceMapScript
{ {
SetHeaders(DataHeader); SetHeaders(DataHeader);
SetBossNumber(EncounterCount); SetBossNumber(EncounterCount);
LoadObjectData(creatureData, gameObjectData);
LoadDoorData(doorData); LoadDoorData(doorData);
} }
void OnCreatureCreate(Creature* creature) override void OnCreatureCreate(Creature* creature) override
{ {
switch (creature->GetEntry()) InstanceScript::OnCreatureCreate(creature);
{
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;
}
} }
void OnGameObjectCreate(GameObject* go) override void OnGameObjectCreate(GameObject* go) override
{ {
InstanceScript::OnGameObjectCreate(go); InstanceScript::OnGameObjectCreate(go);
switch (go->GetEntry())
{
case GO_LOKEN_THRONE:
LokenGlobeGUID = go->GetGUID();
break;
default:
break;
}
} }
bool SetBossState(uint32 type, EncounterState state) override bool SetBossState(uint32 type, EncounterState state) override
@@ -88,7 +79,7 @@ class instance_halls_of_lightning : public InstanceMapScript
{ {
case DATA_LOKEN: case DATA_LOKEN:
if (state == DONE) if (state == DONE)
if (GameObject* globe = instance->GetGameObject(LokenGlobeGUID)) if (GameObject* globe = GetGameObject(DATA_LOKEN_GLOBE))
globe->SendCustomAnim(0); globe->SendCustomAnim(0);
break; break;
default: default:
@@ -100,29 +91,8 @@ class instance_halls_of_lightning : public InstanceMapScript
ObjectGuid GetGuidData(uint32 type) const override ObjectGuid GetGuidData(uint32 type) const override
{ {
switch (type) return InstanceScript::GetGuidData(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;
} }
protected:
ObjectGuid GeneralBjarngrimGUID;
ObjectGuid VolkhanGUID;
ObjectGuid IonarGUID;
ObjectGuid LokenGUID;
ObjectGuid LokenGlobeGUID;
}; };
InstanceScript* GetInstanceScript(InstanceMap* map) const override InstanceScript* GetInstanceScript(InstanceMap* map) const override