fix(Scripts/Arcatraz): Adjust Soccrothar charge timer and implement emote (#15643)
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user