Scripts/HoL: modernized instance script
(cherry picked from commit 7a73b8412a4232eccb1986ec220ec9031b1e0bff)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
+19
-49
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user