mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-07 12:51:08 +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,
|
||||
};
|
||||
|
||||
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();
|
||||
}
|
||||
@@ -626,7 +616,7 @@ public:
|
||||
float dist = Phase2NorthPos.GetExactDist2d(&CenterPos);
|
||||
float newangle = angle + 0.5f;
|
||||
if (newangle >= 2 * M_PI) newangle -= 2 * M_PI;
|
||||
me->GetMotionMaster()->MovePoint(MI_POINT_CIRCLE_OUTSIDE_PH_2, CenterPos.GetPositionX() + cos(newangle)*dist, CenterPos.GetPositionY() + std::sin(newangle)*dist, Phase2NorthPos.GetPositionZ());
|
||||
me->GetMotionMaster()->MovePoint(MI_POINT_CIRCLE_OUTSIDE_PH_2, CenterPos.GetPositionX() + cos(newangle) * dist, CenterPos.GetPositionY() + std::sin(newangle) * dist, Phase2NorthPos.GetPositionZ());
|
||||
}
|
||||
break;
|
||||
case EVENT_MOVE_TO_SURGE_OF_POWER:
|
||||
@@ -833,26 +823,15 @@ public:
|
||||
timer2 -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
#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);
|
||||
@@ -938,22 +917,11 @@ public:
|
||||
void AttackStart(Unit* /*who*/) override {}
|
||||
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);
|
||||
@@ -1033,22 +1001,11 @@ public:
|
||||
MoveTimer -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
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();
|
||||
@@ -1126,22 +1083,11 @@ public:
|
||||
if (Vehicle* v = me->GetVehicle())
|
||||
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();
|
||||
@@ -1205,22 +1151,11 @@ 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();
|
||||
@@ -1347,22 +1282,11 @@ 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);
|
||||
@@ -1410,26 +1334,14 @@ 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();
|
||||
@@ -1459,7 +1371,6 @@ public:
|
||||
me->SetDisplayId(11686); // prevents nasty falling animation at despawn
|
||||
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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user