refactor(Scripts/EoE): Update creature register methods (#24556)

This commit is contained in:
Andrew
2026-01-30 10:20:21 -03:00
committed by GitHub
parent f9bc6c6292
commit 6c32ea2e5e
2 changed files with 1059 additions and 1157 deletions

View File

@@ -188,19 +188,9 @@ enum MalygosLightOverrides
LIGHT_OBSCURE_ARCANE_RUNES = 1825,
};
class boss_malygos : public CreatureScript
struct boss_malygos : public ScriptedAI
{
public:
boss_malygos() : CreatureScript("boss_malygos") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<boss_malygosAI>(pCreature);
}
struct boss_malygosAI : public ScriptedAI
{
boss_malygosAI(Creature* c) : ScriptedAI(c), summons(me)
boss_malygos(Creature* c) : ScriptedAI(c), summons(me)
{
pInstance = me->GetInstanceScript();
}
@@ -834,25 +824,14 @@ public:
}
}
};
};
#define VORTEX_DEFAULT_DIFF 250
#define VORTEX_TRAVEL_TIME 3000
//#define VORTEX_RADIUS 25.0f
class npc_vortex_ride : public CreatureScript
struct npc_vortex_ride : public VehicleAI
{
public:
npc_vortex_ride() : CreatureScript("npc_vortex_ride") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<npc_vortex_rideAI> (pCreature);
}
struct npc_vortex_rideAI : public VehicleAI
{
npc_vortex_rideAI(Creature* pCreature) : VehicleAI(pCreature)
npc_vortex_ride(Creature* pCreature) : VehicleAI(pCreature)
{
VORTEX_RADIUS = urand(22, 28);
float h = urand(15, 30);
@@ -939,21 +918,10 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override {}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override { damage = 0; }
};
};
class npc_power_spark : public CreatureScript
struct npc_power_spark : public NullCreatureAI
{
public:
npc_power_spark() : CreatureScript("npc_power_spark") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<npc_power_sparkAI>(pCreature);
}
struct npc_power_sparkAI : public NullCreatureAI
{
npc_power_sparkAI(Creature* pCreature) : NullCreatureAI(pCreature)
npc_power_spark(Creature* pCreature) : NullCreatureAI(pCreature)
{
pInstance = me->GetInstanceScript();
me->CastSpell(me, SPELL_POWER_SPARK_VISUAL, false);
@@ -1034,21 +1002,10 @@ public:
}
}
};
};
class npc_nexus_lord : public CreatureScript
struct npc_nexus_lord : public ScriptedAI
{
public:
npc_nexus_lord() : CreatureScript("npc_nexus_lord") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<npc_nexus_lordAI>(pCreature);
}
struct npc_nexus_lordAI : public ScriptedAI
{
npc_nexus_lordAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_nexus_lord(Creature* pCreature) : ScriptedAI(pCreature)
{
me->SetReactState(REACT_PASSIVE);
pInstance = me->GetInstanceScript();
@@ -1127,21 +1084,10 @@ public:
v->RemoveAllPassengers();
}
};
};
class npc_scion_of_eternity : public CreatureScript
struct npc_scion_of_eternity : public ScriptedAI
{
public:
npc_scion_of_eternity() : CreatureScript("npc_scion_of_eternity") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<npc_scion_of_eternityAI>(pCreature);
}
struct npc_scion_of_eternityAI : public ScriptedAI
{
npc_scion_of_eternityAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_scion_of_eternity(Creature* pCreature) : ScriptedAI(pCreature)
{
me->SetReactState(REACT_PASSIVE);
pInstance = me->GetInstanceScript();
@@ -1206,21 +1152,10 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override {}
void AttackStart(Unit* /*who*/) override {}
};
};
class npc_hover_disk : public CreatureScript
struct npc_hover_disk : public VehicleAI
{
public:
npc_hover_disk() : CreatureScript("npc_hover_disk") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<npc_hover_diskAI>(pCreature);
}
struct npc_hover_diskAI : public VehicleAI
{
npc_hover_diskAI(Creature* pCreature) : VehicleAI(pCreature)
npc_hover_disk(Creature* pCreature) : VehicleAI(pCreature)
{
pInstance = me->GetInstanceScript();
events.Reset();
@@ -1348,21 +1283,10 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override {}
void AttackStart(Unit* /*who*/) override {}
};
};
class npc_alexstrasza : public CreatureScript
struct npc_alexstrasza : public ScriptedAI
{
public:
npc_alexstrasza() : CreatureScript("npc_alexstrasza") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<npc_alexstraszaAI>(pCreature);
}
struct npc_alexstraszaAI : public ScriptedAI
{
npc_alexstraszaAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_alexstrasza(Creature* pCreature) : ScriptedAI(pCreature)
{
events.Reset();
events.ScheduleEvent(1, 9s);
@@ -1411,25 +1335,13 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override {}
void AttackStart(Unit* /*who*/) override {}
};
};
class npc_eoe_wyrmrest_skytalon : public CreatureScript
struct npc_eoe_wyrmrest_skytalon : public VehicleAI
{
public:
npc_eoe_wyrmrest_skytalon() : CreatureScript("npc_eoe_wyrmrest_skytalon") { }
CreatureAI* GetAI(Creature* pCreature) const override
{
return GetEyeOfEternityAI<npc_eoe_wyrmrest_skytalonAI>(pCreature);
}
struct npc_eoe_wyrmrest_skytalonAI : public VehicleAI
{
npc_eoe_wyrmrest_skytalonAI(Creature* pCreature) : VehicleAI(pCreature) { }
npc_eoe_wyrmrest_skytalon(Creature* creature) : VehicleAI(creature) { }
void IsSummonedBy(WorldObject* summoner) override
{
me->SetDisableGravity(true);
if (summoner && summoner->IsPlayer())
{
ObjectGuid summonerGUID = summoner->GetGUID();
@@ -1460,7 +1372,6 @@ public:
me->DespawnOrUnsummon(1ms);
}
};
};
class go_the_focusing_iris : public GameObjectScript
{
@@ -1567,15 +1478,15 @@ class spell_wyrmrest_skytalon_ride_red_dragon_buddy_trigger : public SpellScript
void AddSC_boss_malygos()
{
new boss_malygos();
new npc_power_spark();
new npc_vortex_ride();
new npc_alexstrasza();
RegisterEoECreatureAI(boss_malygos);
RegisterEoECreatureAI(npc_power_spark);
RegisterEoECreatureAI(npc_vortex_ride);
RegisterEoECreatureAI(npc_alexstrasza);
new go_the_focusing_iris();
new npc_nexus_lord();
new npc_scion_of_eternity();
new npc_hover_disk();
new npc_eoe_wyrmrest_skytalon();
RegisterEoECreatureAI(npc_nexus_lord);
RegisterEoECreatureAI(npc_scion_of_eternity);
RegisterEoECreatureAI(npc_hover_disk);
RegisterEoECreatureAI(npc_eoe_wyrmrest_skytalon);
RegisterSpellScript(spell_wyrmrest_skytalon_summon_red_dragon_buddy);
RegisterSpellScript(spell_wyrmrest_skytalon_ride_red_dragon_buddy_trigger);

View File

@@ -105,20 +105,11 @@ const Position Phase2NorthPos = {837.22f, 1301.676f, 296.10f, M_PI};
const uint32 MalygosIntroIntervals[] = {18000, 19000, 21000, 18000, 15000};
class EoEDrakeEnterVehicleEvent : public BasicEvent
{
public:
EoEDrakeEnterVehicleEvent(Creature& owner, ObjectGuid playerGUID) : _owner(owner), _playerGUID(playerGUID) { }
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override;
private:
Creature& _owner;
ObjectGuid _playerGUID;
};
template <class AI, class T>
inline AI* GetEyeOfEternityAI(T* obj)
{
return GetInstanceAI<AI>(obj, EyeOfEternityScriptName);
}
#define RegisterEoECreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetEyeOfEternityAI)
#endif