From d030260dd4b7e0aae88f609222877bd2aabdafe0 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 29 Mar 2023 03:12:41 -0300 Subject: [PATCH] fix(Scripts/Arcatraz): Adjust Soccrothar charge timer and implement emote (#15643) --- .../arcatraz/boss_dalliah_the_doomsayer.cpp | 33 +++++-------------- .../boss_wrath_scryer_soccothrates.cpp | 13 +++----- 2 files changed, 13 insertions(+), 33 deletions(-) diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp index 1b7de47fc..9489da3ad 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp @@ -44,23 +44,24 @@ enum Spells struct boss_dalliah_the_doomsayer : public BossAI { - boss_dalliah_the_doomsayer(Creature* creature) : BossAI(creature, DATA_DALLIAH), _percentHealthCheck(false) { } + boss_dalliah_the_doomsayer(Creature* creature) : BossAI(creature, DATA_DALLIAH) { } void Reset() override { _Reset(); - _percentHealthCheck = false; - me->SetImmuneToAll(false); + + ScheduleHealthCheckEvent(25, [&] + { + if (Creature* soccothrates = instance->GetCreature(DATA_SOCCOTHRATES)) + { + soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT); + } + }); } void InitializeAI() override { BossAI::InitializeAI(); - - if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE) - { - me->SetImmuneToAll(true); - } } void JustDied(Unit* /*killer*/) override @@ -117,19 +118,6 @@ struct boss_dalliah_the_doomsayer : public BossAI } } - void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellSchoolMask /*damageSchoolMask*/) override - { - if (me->HealthBelowPctDamaged(25, damage) && !_percentHealthCheck) - { - if (Creature* soccothrates = instance->GetCreature(DATA_SOCCOTHRATES)) - { - soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT); - } - - _percentHealthCheck = true; - } - } - void KilledUnit(Unit* victim) override { if (victim->IsPlayer()) @@ -137,9 +125,6 @@ struct boss_dalliah_the_doomsayer : public BossAI Talk(SAY_SLAY); } } - -private: - bool _percentHealthCheck; }; void AddSC_boss_dalliah_the_doomsayer() diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp index 151cc66e7..f4dcebefe 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp @@ -79,7 +79,6 @@ struct boss_wrath_scryer_soccothrates : public BossAI _Reset(); events2.Reset(); me->CastSpell(me, SPELL_FEL_IMMOLATION, true); - me->SetImmuneToAll(false); ScheduleHealthCheckEvent(25, [&] { @@ -96,8 +95,6 @@ struct boss_wrath_scryer_soccothrates : public BossAI void InitializeAI() override { BossAI::InitializeAI(); - if (!preFight) - me->SetImmuneToAll(true); } void JustDied(Unit* /*killer*/) override @@ -129,9 +126,10 @@ struct boss_wrath_scryer_soccothrates : public BossAI } } - scheduler.Schedule(11s, 12s, [this](TaskContext context) + scheduler.Schedule(30s, 35s, [this](TaskContext context) { me->CastSpell(me, SPELL_KNOCK_AWAY, false); + me->HandleEmoteCommand(EMOTE_ONESHOT_POINT); Talk(SAY_KNOCK_AWAY); scheduler.Schedule(4600ms, [this](TaskContext) @@ -141,10 +139,7 @@ struct boss_wrath_scryer_soccothrates : public BossAI scheduler.Schedule(300ms, [this](TaskContext context2) { - if (me->GetVictim() && !me->IsWithinMeleeRange(me->GetVictim())) - { - DoCastAOE(SPELL_FELFIRE, true); - } + DoCastAOE(SPELL_FELFIRE, true); if (context2.GetRepeatCounter() <= 6) { @@ -153,7 +148,7 @@ struct boss_wrath_scryer_soccothrates : public BossAI }); }); - context.Repeat(); + context.Repeat(20s, 35s); }).Schedule(12s, 14s, [this](TaskContext context) { DoCastVictim(SPELL_FELFIRE_SHOCK);