Scripts/HoL: modernized instance script

This commit is contained in:
Ovahlord
2022-09-23 10:17:24 +02:00
committed by Shauren
parent 63275e7316
commit 7a73b8412a
3 changed files with 35 additions and 61 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -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