refactor(Scripts/HallOfLightning): modernize scripts (#23209)
This commit is contained in:
@@ -106,19 +106,9 @@ enum Yells
|
||||
EMOTE_BERSEKER_STANCE = 8,
|
||||
};
|
||||
|
||||
class boss_bjarngrim : public CreatureScript
|
||||
struct boss_bjarngrim : public npc_escortAI
|
||||
{
|
||||
public:
|
||||
boss_bjarngrim() : CreatureScript("boss_bjarngrim") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<boss_bjarngrimAI>(creature);
|
||||
}
|
||||
|
||||
struct boss_bjarngrimAI : public npc_escortAI
|
||||
{
|
||||
boss_bjarngrimAI(Creature* creature) : npc_escortAI(creature), summons(creature)
|
||||
boss_bjarngrim(Creature* creature) : npc_escortAI(creature), summons(creature)
|
||||
{
|
||||
m_pInstance = creature->GetInstanceScript();
|
||||
|
||||
@@ -141,11 +131,6 @@ public:
|
||||
Start(true, ObjectGuid::Empty, nullptr, false, true);
|
||||
}
|
||||
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint8 m_uiStance;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
@@ -371,25 +356,17 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
class npc_stormforged_lieutenant : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_stormforged_lieutenant() : CreatureScript("npc_stormforged_lieutenant") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<npc_stormforged_lieutenantAI>(creature);
|
||||
}
|
||||
|
||||
struct npc_stormforged_lieutenantAI : public ScriptedAI
|
||||
{
|
||||
npc_stormforged_lieutenantAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
private:
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
ObjectGuid BjarngrimGUID;
|
||||
SummonList summons;
|
||||
uint8 m_uiStance;
|
||||
};
|
||||
|
||||
struct npc_stormforged_lieutenant : public ScriptedAI
|
||||
{
|
||||
npc_stormforged_lieutenant(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -433,11 +410,14 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
EventMap events;
|
||||
ObjectGuid BjarngrimGUID;
|
||||
};
|
||||
|
||||
void AddSC_boss_bjarngrim()
|
||||
{
|
||||
new boss_bjarngrim();
|
||||
new npc_stormforged_lieutenant();
|
||||
RegisterHallOfLightningCreatureAI(boss_bjarngrim);
|
||||
RegisterHallOfLightningCreatureAI(npc_stormforged_lieutenant);
|
||||
}
|
||||
|
||||
@@ -68,28 +68,13 @@ enum IonarEvents
|
||||
EVENT_RESTORE = 5,
|
||||
};
|
||||
|
||||
class boss_ionar : public CreatureScript
|
||||
struct boss_ionar : public BossAI
|
||||
{
|
||||
public:
|
||||
boss_ionar() : CreatureScript("boss_ionar") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<boss_ionarAI>(creature);
|
||||
}
|
||||
|
||||
struct boss_ionarAI : public ScriptedAI
|
||||
{
|
||||
boss_ionarAI(Creature* creature) : ScriptedAI(creature), summons(creature)
|
||||
boss_ionar(Creature* creature) : BossAI(creature, DATA_IONAR), summons(creature)
|
||||
{
|
||||
m_pInstance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint8 HealthCheck;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
HealthCheck = 50;
|
||||
@@ -223,24 +208,17 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint8 HealthCheck;
|
||||
};
|
||||
|
||||
class npc_spark_of_ionar : public CreatureScript
|
||||
struct npc_spark_of_ionar : public ScriptedAI
|
||||
{
|
||||
public:
|
||||
npc_spark_of_ionar() : CreatureScript("npc_spark_of_ionar") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<npc_spark_of_ionarAI>(creature);
|
||||
}
|
||||
|
||||
struct npc_spark_of_ionarAI : public ScriptedAI
|
||||
{
|
||||
npc_spark_of_ionarAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
bool returning;
|
||||
npc_spark_of_ionar(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
void MoveInLineOfSight(Unit*) override { }
|
||||
void UpdateAI(uint32) override { }
|
||||
@@ -272,7 +250,9 @@ public:
|
||||
me->DespawnOrUnsummon(1s);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
bool returning;
|
||||
};
|
||||
|
||||
// 52658, 59795 - Static Overload
|
||||
@@ -302,7 +282,7 @@ class spell_ionar_static_overload : public AuraScript
|
||||
|
||||
void AddSC_boss_ionar()
|
||||
{
|
||||
new boss_ionar();
|
||||
new npc_spark_of_ionar();
|
||||
RegisterHallOfLightningCreatureAI(boss_ionar);
|
||||
RegisterHallOfLightningCreatureAI(npc_spark_of_ionar);
|
||||
RegisterSpellScript(spell_ionar_static_overload);
|
||||
}
|
||||
|
||||
@@ -60,32 +60,15 @@ enum LokenEvents
|
||||
EVENT_AURA_REMOVE = 5
|
||||
};
|
||||
|
||||
class boss_loken : public CreatureScript
|
||||
struct boss_loken : public BossAI
|
||||
{
|
||||
public:
|
||||
boss_loken() : CreatureScript("boss_loken") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<boss_lokenAI>(creature);
|
||||
}
|
||||
|
||||
struct boss_lokenAI : public ScriptedAI
|
||||
{
|
||||
boss_lokenAI(Creature* creature) : ScriptedAI(creature)
|
||||
boss_loken(Creature* creature) : BossAI(creature, DATA_LOKEN)
|
||||
{
|
||||
m_pInstance = creature->GetInstanceScript();
|
||||
if (m_pInstance)
|
||||
isActive = m_pInstance->GetData(TYPE_LOKEN_INTRO);
|
||||
}
|
||||
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
|
||||
bool isActive;
|
||||
uint32 IntroTimer;
|
||||
uint8 HealthCheck;
|
||||
|
||||
void MoveInLineOfSight(Unit*) override { }
|
||||
|
||||
void Reset() override
|
||||
@@ -251,7 +234,13 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
private:
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
|
||||
bool isActive;
|
||||
uint32 IntroTimer;
|
||||
uint8 HealthCheck;
|
||||
};
|
||||
|
||||
class spell_loken_pulsing_shockwave : public SpellScript
|
||||
@@ -276,6 +265,6 @@ class spell_loken_pulsing_shockwave : public SpellScript
|
||||
|
||||
void AddSC_boss_loken()
|
||||
{
|
||||
new boss_loken();
|
||||
RegisterHallOfLightningCreatureAI(boss_loken);
|
||||
RegisterSpellScript(spell_loken_pulsing_shockwave);
|
||||
}
|
||||
|
||||
@@ -78,31 +78,13 @@ enum Yells
|
||||
EMOTE_SHATTER = 6,
|
||||
};
|
||||
|
||||
class boss_volkhan : public CreatureScript
|
||||
struct boss_volkhan : public BossAI
|
||||
{
|
||||
public:
|
||||
boss_volkhan() : CreatureScript("boss_volkhan") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<boss_volkhanAI>(creature);
|
||||
}
|
||||
|
||||
struct boss_volkhanAI : public ScriptedAI
|
||||
{
|
||||
boss_volkhanAI(Creature* creature) : ScriptedAI(creature), summons(creature)
|
||||
boss_volkhan(Creature* creature) : BossAI(creature, DATA_VOLKHAN), summons(creature)
|
||||
{
|
||||
m_pInstance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint8 HealthCheck;
|
||||
float x, y, z;
|
||||
uint8 PointID;
|
||||
uint8 ShatteredCount;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
x = y = z = PointID = ShatteredCount = 0;
|
||||
@@ -316,29 +298,24 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint8 HealthCheck;
|
||||
float x, y, z;
|
||||
uint8 PointID;
|
||||
uint8 ShatteredCount;
|
||||
};
|
||||
|
||||
class npc_molten_golem : public CreatureScript
|
||||
struct npc_molten_golem : public ScriptedAI
|
||||
{
|
||||
public:
|
||||
npc_molten_golem() : CreatureScript("npc_molten_golem") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<npc_molten_golemAI>(creature);
|
||||
}
|
||||
|
||||
struct npc_molten_golemAI : public ScriptedAI
|
||||
{
|
||||
npc_molten_golemAI(Creature* creature) : ScriptedAI(creature)
|
||||
npc_molten_golem(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
m_pInstance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
InstanceScript* m_pInstance;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
@@ -374,7 +351,7 @@ public:
|
||||
{
|
||||
if (me->GetEntry() == NPC_BRITTLE_GOLEM && param == ACTION_SHATTER)
|
||||
{
|
||||
if (Creature* volkhan = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(TYPE_VOLKHAN)))
|
||||
if (Creature* volkhan = m_pInstance->GetCreature(DATA_VOLKHAN))
|
||||
volkhan->AI()->DoAction(ACTION_DESTROYED);
|
||||
|
||||
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_SHATTER_H : SPELL_SHATTER_N, true);
|
||||
@@ -407,7 +384,9 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
private:
|
||||
EventMap events;
|
||||
InstanceScript* m_pInstance;
|
||||
};
|
||||
|
||||
enum monumentSpells
|
||||
@@ -443,19 +422,9 @@ enum monumentEvents
|
||||
EVENT_UNFREEZE = 20,
|
||||
};
|
||||
|
||||
class npc_hol_monument : public CreatureScript
|
||||
struct npc_hol_monument : public ScriptedAI
|
||||
{
|
||||
public:
|
||||
npc_hol_monument() : CreatureScript("npc_hol_monument") {}
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return GetHallsOfLightningAI<npc_hol_monumentAI>(creature);
|
||||
}
|
||||
|
||||
struct npc_hol_monumentAI : public ScriptedAI
|
||||
{
|
||||
npc_hol_monumentAI(Creature* creature) : ScriptedAI(creature)
|
||||
npc_hol_monument(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
_attackGUID.Clear();
|
||||
_isActive = urand(0, 1);
|
||||
@@ -463,14 +432,6 @@ public:
|
||||
me->CastSpell(me, SPELL_FREEZE_ANIM, true);
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
bool _isActive;
|
||||
ObjectGuid _attackGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
if (_attackGUID)
|
||||
@@ -572,12 +533,16 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
EventMap events;
|
||||
bool _isActive;
|
||||
ObjectGuid _attackGUID;
|
||||
};
|
||||
|
||||
void AddSC_boss_volkhan()
|
||||
{
|
||||
new boss_volkhan();
|
||||
new npc_molten_golem();
|
||||
new npc_hol_monument();
|
||||
RegisterHallOfLightningCreatureAI(boss_volkhan);
|
||||
RegisterHallOfLightningCreatureAI(npc_molten_golem);
|
||||
RegisterHallOfLightningCreatureAI(npc_hol_monument);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,15 @@
|
||||
|
||||
#define HallsOfLightningScriptName "instance_halls_of_lightning"
|
||||
|
||||
enum BossIds
|
||||
{
|
||||
DATA_BJARNGRIM = 0,
|
||||
DATA_IONAR = 1,
|
||||
DATA_LOKEN = 2,
|
||||
DATA_VOLKHAN = 3,
|
||||
MAX_ENCOUNTERS
|
||||
};
|
||||
|
||||
enum HoLEvents
|
||||
{
|
||||
TYPE_BJARNGRIM = 0,
|
||||
@@ -60,4 +69,6 @@ inline AI* GetHallsOfLightningAI(T* obj)
|
||||
return GetInstanceAI<AI>(obj, HallsOfLightningScriptName);
|
||||
}
|
||||
|
||||
#define RegisterHallOfLightningCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetHallsOfLightningAI)
|
||||
|
||||
#endif
|
||||
|
||||
+21
-37
@@ -32,35 +32,19 @@ public:
|
||||
|
||||
struct instance_halls_of_lightning_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_halls_of_lightning_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); };
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
|
||||
ObjectGuid m_uiGeneralBjarngrimGUID;
|
||||
ObjectGuid m_uiIonarGUID;
|
||||
ObjectGuid m_uiLokenGUID;
|
||||
ObjectGuid m_uiVolkhanGUID;
|
||||
|
||||
ObjectGuid m_uiBjarngrimDoorGUID;
|
||||
ObjectGuid m_uiVolkhanDoorGUID;
|
||||
ObjectGuid m_uiIonarDoorGUID;
|
||||
ObjectGuid m_uiLokenDoorGUID;
|
||||
ObjectGuid m_uiLokenGlobeGUID;
|
||||
|
||||
bool volkhanAchievement;
|
||||
bool bjarngrimAchievement;
|
||||
|
||||
void Initialize() override
|
||||
instance_halls_of_lightning_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
volkhanAchievement = false;
|
||||
bjarngrimAchievement = false;
|
||||
}
|
||||
};
|
||||
|
||||
bool IsEncounterInProgress() const override
|
||||
{
|
||||
if (InstanceScript::IsEncounterInProgress())
|
||||
return true;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
{
|
||||
if (m_auiEncounter[i] == IN_PROGRESS && i != TYPE_LOKEN_INTRO)
|
||||
@@ -195,22 +179,22 @@ public:
|
||||
return m_auiEncounter[uiType];
|
||||
}
|
||||
|
||||
ObjectGuid GetGuidData(uint32 uiData) const override
|
||||
{
|
||||
switch (uiData)
|
||||
{
|
||||
case TYPE_BJARNGRIM:
|
||||
return m_uiGeneralBjarngrimGUID;
|
||||
case TYPE_VOLKHAN:
|
||||
return m_uiVolkhanGUID;
|
||||
case TYPE_IONAR:
|
||||
return m_uiIonarGUID;
|
||||
case TYPE_LOKEN:
|
||||
return m_uiLokenGUID;
|
||||
}
|
||||
private:
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
ObjectGuid m_uiGeneralBjarngrimGUID;
|
||||
ObjectGuid m_uiIonarGUID;
|
||||
ObjectGuid m_uiLokenGUID;
|
||||
ObjectGuid m_uiVolkhanGUID;
|
||||
|
||||
ObjectGuid m_uiBjarngrimDoorGUID;
|
||||
ObjectGuid m_uiVolkhanDoorGUID;
|
||||
ObjectGuid m_uiIonarDoorGUID;
|
||||
ObjectGuid m_uiLokenDoorGUID;
|
||||
ObjectGuid m_uiLokenGlobeGUID;
|
||||
|
||||
bool volkhanAchievement;
|
||||
bool bjarngrimAchievement;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user