mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 13:16:23 +00:00
fix(Core/Script): Anomalus (#3325)
* Correct rift spawning/ empowering timings and Rift Shield cancellation Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com>
This commit is contained in:
@@ -31,7 +31,9 @@ enum Events
|
||||
{
|
||||
EVENT_ANOMALUS_SPARK = 1,
|
||||
EVENT_ANOMALUS_HEALTH = 2,
|
||||
EVENT_ANOMALUS_ARCANE_ATTRACTION = 3
|
||||
EVENT_ANOMALUS_ARCANE_ATTRACTION = 3,
|
||||
EVENT_ANOMALUS_SPAWN_RIFT = 4,
|
||||
EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED = 5
|
||||
};
|
||||
|
||||
class ChargeRifts : public BasicEvent
|
||||
@@ -69,6 +71,7 @@ class boss_anomalus : public CreatureScript
|
||||
}
|
||||
|
||||
bool achievement;
|
||||
uint16 activeRifts;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -88,8 +91,12 @@ class boss_anomalus : public CreatureScript
|
||||
{
|
||||
if (type == me->GetEntry())
|
||||
{
|
||||
me->RemoveAura(SPELL_RIFT_SHIELD);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
if (activeRifts > 0 && --activeRifts == 0 && me->HasAura(SPELL_RIFT_SHIELD))
|
||||
{
|
||||
events.DelayEvents(me->GetAura(SPELL_RIFT_SHIELD)->GetDuration() - 46000);
|
||||
me->RemoveAura(SPELL_RIFT_SHIELD);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
}
|
||||
achievement = false;
|
||||
}
|
||||
}
|
||||
@@ -97,6 +104,7 @@ class boss_anomalus : public CreatureScript
|
||||
void JustSummoned(Creature* summon)
|
||||
{
|
||||
summons.Summon(summon);
|
||||
activeRifts++;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
@@ -104,9 +112,11 @@ class boss_anomalus : public CreatureScript
|
||||
Talk(SAY_AGGRO);
|
||||
BossAI::EnterCombat(who);
|
||||
|
||||
activeRifts = 0;
|
||||
events.SetTimer(45000);
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_SPARK, 5000);
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_HEALTH, 1000);
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15000 : 25000);
|
||||
if (IsHeroic())
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_ARCANE_ATTRACTION, 8000);
|
||||
}
|
||||
@@ -129,29 +139,43 @@ class boss_anomalus : public CreatureScript
|
||||
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_ANOMALUS_HEALTH:
|
||||
if (me->HealthBelowPct(51))
|
||||
{
|
||||
Talk(SAY_RIFT);
|
||||
Talk(EMOTE_RIFT);
|
||||
|
||||
me->CastSpell(me, SPELL_CREATE_RIFT, false);
|
||||
me->CastSpell(me, SPELL_RIFT_SHIELD, true);
|
||||
me->m_Events.AddEvent(new ChargeRifts(me), me->m_Events.CalculateTime(1000));
|
||||
events.DelayEvents(46000);
|
||||
break;
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_HEALTH, 1000);
|
||||
break;
|
||||
case EVENT_ANOMALUS_SPARK:
|
||||
me->CastSpell(me->GetVictim(), SPELL_SPARK, false);
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_SPARK, 5000);
|
||||
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, 1000);
|
||||
break;
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_HEALTH, 1000);
|
||||
break;
|
||||
case EVENT_ANOMALUS_ARCANE_ATTRACTION:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true))
|
||||
me->CastSpell(target, SPELL_ARCANE_ATTRACTION, false);
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_ARCANE_ATTRACTION, 15000);
|
||||
break;
|
||||
case EVENT_ANOMALUS_SPAWN_RIFT:
|
||||
Talk(SAY_RIFT);
|
||||
Talk(EMOTE_RIFT);
|
||||
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() ? 15000 : 25000);
|
||||
break;
|
||||
case EVENT_ANOMALUS_SPAWN_RIFT_EMPOWERED:
|
||||
Talk(SAY_RIFT);
|
||||
Talk(EMOTE_RIFT);
|
||||
|
||||
me->CastSpell(me, SPELL_CREATE_RIFT, false);
|
||||
me->CastSpell(me, SPELL_RIFT_SHIELD, true);
|
||||
me->m_Events.AddEvent(new ChargeRifts(me), me->m_Events.CalculateTime(1000));
|
||||
events.DelayEvents(46000);
|
||||
//As we just spawned an empowered spawn a normal one
|
||||
events.ScheduleEvent(EVENT_ANOMALUS_SPAWN_RIFT, IsHeroic() ? 15000 : 25000);
|
||||
break;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
Reference in New Issue
Block a user