mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-07 21:01:37 +00:00
refactor(Scripts/EoE): Update creature register methods (#24556)
This commit is contained in:
@@ -188,19 +188,9 @@ enum MalygosLightOverrides
|
|||||||
LIGHT_OBSCURE_ARCANE_RUNES = 1825,
|
LIGHT_OBSCURE_ARCANE_RUNES = 1825,
|
||||||
};
|
};
|
||||||
|
|
||||||
class boss_malygos : public CreatureScript
|
struct boss_malygos : public ScriptedAI
|
||||||
{
|
{
|
||||||
public:
|
boss_malygos(Creature* c) : ScriptedAI(c), summons(me)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
pInstance = me->GetInstanceScript();
|
pInstance = me->GetInstanceScript();
|
||||||
}
|
}
|
||||||
@@ -834,25 +824,14 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
#define VORTEX_DEFAULT_DIFF 250
|
#define VORTEX_DEFAULT_DIFF 250
|
||||||
#define VORTEX_TRAVEL_TIME 3000
|
#define VORTEX_TRAVEL_TIME 3000
|
||||||
//#define VORTEX_RADIUS 25.0f
|
//#define VORTEX_RADIUS 25.0f
|
||||||
|
|
||||||
class npc_vortex_ride : public CreatureScript
|
struct npc_vortex_ride : public VehicleAI
|
||||||
{
|
{
|
||||||
public:
|
npc_vortex_ride(Creature* pCreature) : VehicleAI(pCreature)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
VORTEX_RADIUS = urand(22, 28);
|
VORTEX_RADIUS = urand(22, 28);
|
||||||
float h = urand(15, 30);
|
float h = urand(15, 30);
|
||||||
@@ -939,21 +918,10 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* /*who*/) override {}
|
void MoveInLineOfSight(Unit* /*who*/) override {}
|
||||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override { damage = 0; }
|
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(Creature* pCreature) : NullCreatureAI(pCreature)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
pInstance = me->GetInstanceScript();
|
pInstance = me->GetInstanceScript();
|
||||||
me->CastSpell(me, SPELL_POWER_SPARK_VISUAL, false);
|
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(Creature* pCreature) : ScriptedAI(pCreature)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
pInstance = me->GetInstanceScript();
|
pInstance = me->GetInstanceScript();
|
||||||
@@ -1127,21 +1084,10 @@ public:
|
|||||||
v->RemoveAllPassengers();
|
v->RemoveAllPassengers();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class npc_scion_of_eternity : public CreatureScript
|
struct npc_scion_of_eternity : public ScriptedAI
|
||||||
{
|
{
|
||||||
public:
|
npc_scion_of_eternity(Creature* pCreature) : ScriptedAI(pCreature)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
pInstance = me->GetInstanceScript();
|
pInstance = me->GetInstanceScript();
|
||||||
@@ -1206,21 +1152,10 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* /*who*/) override {}
|
void MoveInLineOfSight(Unit* /*who*/) override {}
|
||||||
void AttackStart(Unit* /*who*/) override {}
|
void AttackStart(Unit* /*who*/) override {}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class npc_hover_disk : public CreatureScript
|
struct npc_hover_disk : public VehicleAI
|
||||||
{
|
{
|
||||||
public:
|
npc_hover_disk(Creature* pCreature) : VehicleAI(pCreature)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
pInstance = me->GetInstanceScript();
|
pInstance = me->GetInstanceScript();
|
||||||
events.Reset();
|
events.Reset();
|
||||||
@@ -1348,21 +1283,10 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* /*who*/) override {}
|
void MoveInLineOfSight(Unit* /*who*/) override {}
|
||||||
void AttackStart(Unit* /*who*/) override {}
|
void AttackStart(Unit* /*who*/) override {}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class npc_alexstrasza : public CreatureScript
|
struct npc_alexstrasza : public ScriptedAI
|
||||||
{
|
{
|
||||||
public:
|
npc_alexstrasza(Creature* pCreature) : ScriptedAI(pCreature)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
events.Reset();
|
events.Reset();
|
||||||
events.ScheduleEvent(1, 9s);
|
events.ScheduleEvent(1, 9s);
|
||||||
@@ -1411,25 +1335,13 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* /*who*/) override {}
|
void MoveInLineOfSight(Unit* /*who*/) override {}
|
||||||
void AttackStart(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(Creature* creature) : VehicleAI(creature) { }
|
||||||
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) { }
|
|
||||||
|
|
||||||
void IsSummonedBy(WorldObject* summoner) override
|
void IsSummonedBy(WorldObject* summoner) override
|
||||||
{
|
{
|
||||||
me->SetDisableGravity(true);
|
|
||||||
if (summoner && summoner->IsPlayer())
|
if (summoner && summoner->IsPlayer())
|
||||||
{
|
{
|
||||||
ObjectGuid summonerGUID = summoner->GetGUID();
|
ObjectGuid summonerGUID = summoner->GetGUID();
|
||||||
@@ -1460,7 +1372,6 @@ public:
|
|||||||
me->DespawnOrUnsummon(1ms);
|
me->DespawnOrUnsummon(1ms);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
class go_the_focusing_iris : public GameObjectScript
|
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()
|
void AddSC_boss_malygos()
|
||||||
{
|
{
|
||||||
new boss_malygos();
|
RegisterEoECreatureAI(boss_malygos);
|
||||||
new npc_power_spark();
|
RegisterEoECreatureAI(npc_power_spark);
|
||||||
new npc_vortex_ride();
|
RegisterEoECreatureAI(npc_vortex_ride);
|
||||||
new npc_alexstrasza();
|
RegisterEoECreatureAI(npc_alexstrasza);
|
||||||
new go_the_focusing_iris();
|
new go_the_focusing_iris();
|
||||||
new npc_nexus_lord();
|
RegisterEoECreatureAI(npc_nexus_lord);
|
||||||
new npc_scion_of_eternity();
|
RegisterEoECreatureAI(npc_scion_of_eternity);
|
||||||
new npc_hover_disk();
|
RegisterEoECreatureAI(npc_hover_disk);
|
||||||
new npc_eoe_wyrmrest_skytalon();
|
RegisterEoECreatureAI(npc_eoe_wyrmrest_skytalon);
|
||||||
RegisterSpellScript(spell_wyrmrest_skytalon_summon_red_dragon_buddy);
|
RegisterSpellScript(spell_wyrmrest_skytalon_summon_red_dragon_buddy);
|
||||||
RegisterSpellScript(spell_wyrmrest_skytalon_ride_red_dragon_buddy_trigger);
|
RegisterSpellScript(spell_wyrmrest_skytalon_ride_red_dragon_buddy_trigger);
|
||||||
|
|
||||||
|
|||||||
@@ -105,20 +105,11 @@ const Position Phase2NorthPos = {837.22f, 1301.676f, 296.10f, M_PI};
|
|||||||
|
|
||||||
const uint32 MalygosIntroIntervals[] = {18000, 19000, 21000, 18000, 15000};
|
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>
|
template <class AI, class T>
|
||||||
inline AI* GetEyeOfEternityAI(T* obj)
|
inline AI* GetEyeOfEternityAI(T* obj)
|
||||||
{
|
{
|
||||||
return GetInstanceAI<AI>(obj, EyeOfEternityScriptName);
|
return GetInstanceAI<AI>(obj, EyeOfEternityScriptName);
|
||||||
}
|
}
|
||||||
|
#define RegisterEoECreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetEyeOfEternityAI)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user