fix(Scripts/Nexus): Don't summon a Chaos Rift immediately after Anomalus reaches <51% HP (#24308)

This commit is contained in:
Gultask
2026-01-05 10:47:55 -03:00
committed by GitHub
parent 523b54616d
commit e38f6822a2

View File

@@ -43,10 +43,8 @@ enum Yells
enum Events enum Events
{ {
EVENT_ANOMALUS_SPARK = 1, EVENT_ANOMALUS_SPARK = 1,
EVENT_ANOMALUS_HEALTH = 2, EVENT_ANOMALUS_ARCANE_ATTRACTION = 2,
EVENT_ANOMALUS_ARCANE_ATTRACTION = 3, EVENT_ANOMALUS_SPAWN_RIFT = 3
EVENT_ANOMALUS_SPAWN_RIFT = 4,
EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED = 5
}; };
class ChargeRifts : public BasicEvent class ChargeRifts : public BasicEvent
@@ -71,6 +69,7 @@ struct boss_anomalus : public BossAI
{ {
boss_anomalus(Creature* creature) : BossAI(creature, DATA_ANOMALUS_EVENT) { } boss_anomalus(Creature* creature) : BossAI(creature, DATA_ANOMALUS_EVENT) { }
bool _empowered;
bool achievement; bool achievement;
uint16 activeRifts; uint16 activeRifts;
@@ -78,6 +77,7 @@ struct boss_anomalus : public BossAI
{ {
BossAI::Reset(); BossAI::Reset();
achievement = true; achievement = true;
_empowered = true;
me->CastSpell(me, SPELL_CLOSE_RIFTS, true); me->CastSpell(me, SPELL_CLOSE_RIFTS, true);
} }
@@ -115,7 +115,6 @@ struct boss_anomalus : public BossAI
activeRifts = 0; activeRifts = 0;
events.ScheduleEvent(EVENT_ANOMALUS_SPARK, 5s); events.ScheduleEvent(EVENT_ANOMALUS_SPARK, 5s);
events.ScheduleEvent(EVENT_ANOMALUS_HEALTH, 1s);
events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s); events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s);
if (IsHeroic()) if (IsHeroic())
events.ScheduleEvent(EVENT_ANOMALUS_ARCANE_ATTRACTION, 8s); events.ScheduleEvent(EVENT_ANOMALUS_ARCANE_ATTRACTION, 8s);
@@ -133,7 +132,9 @@ struct boss_anomalus : public BossAI
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
events.Update(diff); if (!me->HasAura(SPELL_RIFT_SHIELD))
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING)) if (me->HasUnitState(UNIT_STATE_CASTING))
return; return;
@@ -143,16 +144,6 @@ struct boss_anomalus : public BossAI
me->CastSpell(me->GetVictim(), SPELL_SPARK, false); me->CastSpell(me->GetVictim(), SPELL_SPARK, false);
events.ScheduleEvent(EVENT_ANOMALUS_SPARK, 5s); events.ScheduleEvent(EVENT_ANOMALUS_SPARK, 5s);
break; break;
case EVENT_ANOMALUS_HEALTH:
if (me->HealthBelowPct(51))
{
//First time we reach 51%, the next rift going to be empowered following timings.
events.CancelEvent(EVENT_ANOMALUS_SPAWN_RIFT);
events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED, 1s);
break;
}
events.ScheduleEvent(EVENT_ANOMALUS_HEALTH, 1s);
break;
case EVENT_ANOMALUS_ARCANE_ATTRACTION: case EVENT_ANOMALUS_ARCANE_ATTRACTION:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true)) if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
me->CastSpell(target, SPELL_ARCANE_ATTRACTION, false); me->CastSpell(target, SPELL_ARCANE_ATTRACTION, false);
@@ -162,18 +153,18 @@ struct boss_anomalus : public BossAI
Talk(SAY_RIFT); Talk(SAY_RIFT);
Talk(EMOTE_RIFT); Talk(EMOTE_RIFT);
me->CastSpell(me, SPELL_CREATE_RIFT, false); me->CastSpell(me, SPELL_CREATE_RIFT, false);
//Once we hit 51% hp mark, after each rift we spawn an empowered
events.ScheduleEvent(me->HealthBelowPct(51) ? EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED : EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s);
break;
case EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED:
Talk(SAY_RIFT);
Talk(EMOTE_RIFT);
me->CastSpell(me, SPELL_CREATE_RIFT, false); //Once we hit 51% hp mark, alternate between empowered and normal rifts
me->CastSpell(me, SPELL_RIFT_SHIELD, true); if (me->HealthBelowPct(51))
me->m_Events.AddEventAtOffset(new ChargeRifts(me), 1s); {
events.DelayEvents(46s); if (_empowered)
//As we just spawned an empowered spawn a normal one {
me->CastSpell(me, SPELL_RIFT_SHIELD, true);
me->m_Events.AddEventAtOffset(new ChargeRifts(me), 1s);
}
_empowered = !_empowered;
}
events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s); events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15s : 25s);
break; break;
} }