misc
This commit is contained in:
@@ -194,6 +194,8 @@ enum TrashSpells
|
||||
SPELL_REPAIRING = 1271768,
|
||||
SPELL_CORESPARKS_DETONATION = 1257526,
|
||||
SPELL_CORESPARKS_SURGE = 1257079,
|
||||
SPELL_ENERGY_INTAKE = 1279966,
|
||||
SPELL_LEYLINE_ARRAY_WORKER = 1265841,
|
||||
};
|
||||
|
||||
// ===== Corespark Pylon (Kasreth add) =====
|
||||
@@ -239,6 +241,7 @@ enum NexusPointXenasEvents
|
||||
EVENT_IMAGE_FLICKER,
|
||||
EVENT_IMAGE_ZENITH,
|
||||
EVENT_IMAGE_MIRRORED_REND,
|
||||
EVENT_IMAGE_RADIANT_SCAR,
|
||||
|
||||
EVENT_PYLON_FLUX_COLLAPSE = 500,
|
||||
EVENT_PYLON_ARCANE_SPILL,
|
||||
|
||||
@@ -27,6 +27,9 @@ enum TrashEvents
|
||||
EVENT_UMBRA_BOLT,
|
||||
EVENT_CORESPARK_SURGE,
|
||||
EVENT_MANA_BATTERY,
|
||||
EVENT_ERRATIC_SURGE,
|
||||
EVENT_ENERGY_INTAKE,
|
||||
EVENT_LEYLINE_ARRAY_WORKER,
|
||||
};
|
||||
|
||||
// 248373 - Circuit Seer
|
||||
@@ -39,7 +42,8 @@ struct npc_circuit_seer : public ScriptedAI
|
||||
ScriptedAI::JustEngagedWith(who);
|
||||
_events.ScheduleEvent(EVENT_ERRATIC_ZAP, 3s);
|
||||
_events.ScheduleEvent(EVENT_ARCING_MANA, 8s);
|
||||
_events.ScheduleEvent(EVENT_POWER_FLUX, 14s);
|
||||
_events.ScheduleEvent(EVENT_ERRATIC_SURGE, 12s);
|
||||
_events.ScheduleEvent(EVENT_POWER_FLUX, 16s);
|
||||
}
|
||||
|
||||
void ExecuteEvent(uint32 eventId)
|
||||
@@ -56,10 +60,15 @@ struct npc_circuit_seer : public ScriptedAI
|
||||
DoCast(target, SPELL_ARCING_MANA_A);
|
||||
_events.Repeat(12s, 16s);
|
||||
break;
|
||||
case EVENT_ERRATIC_SURGE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||
DoCast(target, SPELL_ERRATIC_SURGE);
|
||||
_events.Repeat(16s, 22s);
|
||||
break;
|
||||
case EVENT_POWER_FLUX:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||
DoCast(target, SPELL_POWER_FLUX_B);
|
||||
_events.Repeat(16s, 22s);
|
||||
_events.Repeat(20s, 26s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -136,7 +145,9 @@ struct npc_manacite_worker : public ScriptedAI
|
||||
{
|
||||
ScriptedAI::JustEngagedWith(who);
|
||||
_events.ScheduleEvent(EVENT_ARCING_MANA, 4s);
|
||||
_events.ScheduleEvent(EVENT_MANA_BATTERY, 12s);
|
||||
_events.ScheduleEvent(EVENT_ENERGY_INTAKE, 10s);
|
||||
_events.ScheduleEvent(EVENT_LEYLINE_ARRAY_WORKER, 16s);
|
||||
_events.ScheduleEvent(EVENT_MANA_BATTERY, 22s);
|
||||
}
|
||||
|
||||
void ExecuteEvent(uint32 eventId)
|
||||
@@ -148,9 +159,18 @@ struct npc_manacite_worker : public ScriptedAI
|
||||
DoCast(target, SPELL_ARCING_MANA_B);
|
||||
_events.Repeat(10s, 14s);
|
||||
break;
|
||||
case EVENT_ENERGY_INTAKE:
|
||||
DoCastSelf(SPELL_ENERGY_INTAKE);
|
||||
_events.Repeat(13s, 17s);
|
||||
break;
|
||||
case EVENT_LEYLINE_ARRAY_WORKER:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||
DoCast(target, SPELL_LEYLINE_ARRAY_WORKER);
|
||||
_events.Repeat(18s, 24s);
|
||||
break;
|
||||
case EVENT_MANA_BATTERY:
|
||||
DoCastSelf(SPELL_MANA_BATTERY);
|
||||
_events.Repeat(18s, 24s);
|
||||
_events.Repeat(26s, 32s);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -230,9 +250,9 @@ struct npc_fractured_image : public ScriptedAI
|
||||
{
|
||||
DoZoneInCombat();
|
||||
_events.ScheduleEvent(EVENT_IMAGE_MIRRORED_REND, 3s);
|
||||
_events.ScheduleEvent(EVENT_IMAGE_RADIANT_SCAR, 8s);
|
||||
_events.ScheduleEvent(EVENT_IMAGE_FLICKER, 12s);
|
||||
_events.ScheduleEvent(EVENT_IMAGE_ZENITH, 20s);
|
||||
_events.ScheduleEvent(EVENT_IMAGE_MIRRORED_REND, 28s);
|
||||
}
|
||||
|
||||
void ExecuteEvent(uint32 eventId)
|
||||
@@ -244,6 +264,11 @@ struct npc_fractured_image : public ScriptedAI
|
||||
DoCast(target, SPELL_MIRRORED_REND);
|
||||
_events.Repeat(10s, 14s);
|
||||
break;
|
||||
case EVENT_IMAGE_RADIANT_SCAR:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
|
||||
DoCast(target, SPELL_RADIANT_SCAR_IMAGE);
|
||||
_events.Repeat(6s, 9s);
|
||||
break;
|
||||
case EVENT_IMAGE_FLICKER:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
|
||||
{
|
||||
@@ -280,11 +305,47 @@ private:
|
||||
EventMap _events;
|
||||
};
|
||||
|
||||
// 252938 - [DNT] Orb Stalker (Coresparks wandering detonation orb)
|
||||
struct npc_coresparks : public ScriptedAI
|
||||
{
|
||||
npc_coresparks(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
void IsSummonedBy(WorldObject* /*summoner*/) override
|
||||
{
|
||||
DoZoneInCombat();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
Unit* target = me->GetVictim();
|
||||
if (!target)
|
||||
target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true);
|
||||
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
// Detonate when the orb reaches its target.
|
||||
if (me->GetDistance(target) <= 2.5f)
|
||||
{
|
||||
DoCastSelf(SPELL_CORESPARKS_DETONATION, true);
|
||||
me->DespawnOrUnsummon(500ms);
|
||||
return;
|
||||
}
|
||||
|
||||
// Otherwise drift toward the nearest player to chase them down.
|
||||
me->GetMotionMaster()->MoveChase(target);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_nexuspointxenas_trash()
|
||||
{
|
||||
RegisterNexusPointXenasCreatureAI(npc_circuit_seer);
|
||||
RegisterNexusPointXenasCreatureAI(npc_umbra_weaver);
|
||||
RegisterNexusPointXenasCreatureAI(npc_manacite_worker);
|
||||
RegisterNexusPointXenasCreatureAI(npc_corespark_pylon);
|
||||
RegisterNexusPointXenasCreatureAI(npc_coresparks);
|
||||
RegisterNexusPointXenasCreatureAI(npc_fractured_image);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user