fix(Scripts/Arcatraz): Adjust Soccrothar charge timer and implement emote (#15643)

This commit is contained in:
Skjalf
2023-03-29 03:12:41 -03:00
committed by GitHub
parent 7f186cce7a
commit d030260dd4
2 changed files with 13 additions and 33 deletions
@@ -44,23 +44,24 @@ enum Spells
struct boss_dalliah_the_doomsayer : public BossAI 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 void Reset() override
{ {
_Reset(); _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 void InitializeAI() override
{ {
BossAI::InitializeAI(); BossAI::InitializeAI();
if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE)
{
me->SetImmuneToAll(true);
}
} }
void JustDied(Unit* /*killer*/) override 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 void KilledUnit(Unit* victim) override
{ {
if (victim->IsPlayer()) if (victim->IsPlayer())
@@ -137,9 +125,6 @@ struct boss_dalliah_the_doomsayer : public BossAI
Talk(SAY_SLAY); Talk(SAY_SLAY);
} }
} }
private:
bool _percentHealthCheck;
}; };
void AddSC_boss_dalliah_the_doomsayer() void AddSC_boss_dalliah_the_doomsayer()
@@ -79,7 +79,6 @@ struct boss_wrath_scryer_soccothrates : public BossAI
_Reset(); _Reset();
events2.Reset(); events2.Reset();
me->CastSpell(me, SPELL_FEL_IMMOLATION, true); me->CastSpell(me, SPELL_FEL_IMMOLATION, true);
me->SetImmuneToAll(false);
ScheduleHealthCheckEvent(25, [&] ScheduleHealthCheckEvent(25, [&]
{ {
@@ -96,8 +95,6 @@ struct boss_wrath_scryer_soccothrates : public BossAI
void InitializeAI() override void InitializeAI() override
{ {
BossAI::InitializeAI(); BossAI::InitializeAI();
if (!preFight)
me->SetImmuneToAll(true);
} }
void JustDied(Unit* /*killer*/) override 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->CastSpell(me, SPELL_KNOCK_AWAY, false);
me->HandleEmoteCommand(EMOTE_ONESHOT_POINT);
Talk(SAY_KNOCK_AWAY); Talk(SAY_KNOCK_AWAY);
scheduler.Schedule(4600ms, [this](TaskContext) scheduler.Schedule(4600ms, [this](TaskContext)
@@ -140,11 +138,8 @@ struct boss_wrath_scryer_soccothrates : public BossAI
DoCastSelf(SPELL_FELFIRE, true); DoCastSelf(SPELL_FELFIRE, true);
scheduler.Schedule(300ms, [this](TaskContext context2) 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) 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) }).Schedule(12s, 14s, [this](TaskContext context)
{ {
DoCastVictim(SPELL_FELFIRE_SHOCK); DoCastVictim(SPELL_FELFIRE_SHOCK);