aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp31
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp68
2 files changed, 59 insertions, 40 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp
index 375e9ad682c..4c8ecbc2259 100644
--- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp
+++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp
@@ -29,8 +29,7 @@ enum ShirrakTexts
enum ShirrakSpells
{
- SPELL_INHIBIT_MAGIC_PERIODIC = 33460,
- SPELL_INHIBIT_MAGIC = 32264,
+ SPELL_INHIBIT_MAGIC = 33460,
SPELL_ATTRACT_MAGIC = 32265,
SPELL_CARNIVOROUS_BITE = 36383,
@@ -58,13 +57,14 @@ struct boss_shirrak_the_dead_watcher : public BossAI
void Reset() override
{
- DoCastSelf(SPELL_INHIBIT_MAGIC_PERIODIC);
+ DoCastSelf(SPELL_INHIBIT_MAGIC);
_Reset();
}
void JustEngagedWith(Unit* who) override
{
BossAI::JustEngagedWith(who);
+
events.ScheduleEvent(EVENT_ATTRACT_MAGIC, 30s);
events.ScheduleEvent(EVENT_CARNIVOROUS_BITE, 5s, 10s);
events.ScheduleEvent(EVENT_FOCUS_FIRE, 20s, 30s);
@@ -124,14 +124,23 @@ struct npc_focus_fire : public ScriptedAI
void JustAppeared() override
{
- // Should be in this sniffed order but makes it ignore other spell casts, so disabled
- // DoCastSelf(SPELL_BIRTH);
- DoCastSelf(SPELL_FOCUS_TARGET_VISUAL);
-
- _scheduler.Schedule(5s, [this](TaskContext /*task*/)
- {
- DoCastSelf(SPELL_PING_SHIRRAK);
- });
+ _scheduler
+ .SetValidator([this]
+ {
+ return !me->HasUnitState(UNIT_STATE_CASTING);
+ })
+ .Schedule(0s, [this](TaskContext /*task*/)
+ {
+ DoCastSelf(SPELL_BIRTH);
+ })
+ .Schedule(0s, [this](TaskContext /*task*/)
+ {
+ DoCastSelf(SPELL_FOCUS_TARGET_VISUAL);
+ })
+ .Schedule(5s, [this](TaskContext /*task*/)
+ {
+ DoCastSelf(SPELL_PING_SHIRRAK);
+ });
}
void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
index 9c75c590f6d..a7f1ca29071 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp
@@ -16,11 +16,9 @@
*/
#include "ScriptMgr.h"
+#include "arcatraz.h"
#include "SpellInfo.h"
#include "SpellScript.h"
-#include "arcatraz.h"
-#include "InstanceScript.h"
-#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
enum SkyrissTexts
@@ -126,11 +124,6 @@ struct boss_harbinger_skyriss : public BossAI
}
}
- void KilledUnit(Unit* /*victim*/) override
- {
- Talk(SAY_SLAY);
- }
-
void DamageTaken(Unit* /*killer*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
{
if (_phase < PHASE_HEALTH_66 && me->HealthBelowPctDamaged(66, damage))
@@ -145,6 +138,11 @@ struct boss_harbinger_skyriss : public BossAI
}
}
+ void KilledUnit(Unit* /*victim*/) override
+ {
+ Talk(SAY_SLAY);
+ }
+
void JustDied(Unit* /*killer*/) override
{
Talk(SAY_DEATH);
@@ -250,28 +248,40 @@ struct boss_harbinger_skyriss_illusion : public ScriptedAI
void JustAppeared() override
{
DoZoneInCombat();
- // Should be in this sniffed order but makes it ignore other spell casts, so disabled
- // DoCastSelf(SPELL_BIRTH);
- DoCastSelf(SPELL_BLINK_VISUAL);
- switch (me->GetEntry())
- {
- case NPC_ILLUSION_66:
- DoCastSelf(SPELL_66_HEALTH);
- break;
- case NPC_ILLUSION_33:
- DoCastSelf(SPELL_33_HEALTH);
- break;
- default:
- break;
- }
-
- _scheduler.Schedule(2s, 10s, [this](TaskContext task)
- {
- if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
- DoCast(target, IsHeroic() ? SPELL_MIND_REND_IMAGE_H : SPELL_MIND_REND_IMAGE);
- task.Repeat(8s, 12s);
- });
+ _scheduler
+ .SetValidator([this]
+ {
+ return !me->HasUnitState(UNIT_STATE_CASTING);
+ })
+ .Schedule(0s, [this](TaskContext /*task*/)
+ {
+ DoCastSelf(SPELL_BIRTH);
+ })
+ .Schedule(0s, [this](TaskContext /*task*/)
+ {
+ DoCastSelf(SPELL_BLINK_VISUAL);
+ })
+ .Schedule(0s, [this](TaskContext /*task*/)
+ {
+ switch (me->GetEntry())
+ {
+ case NPC_ILLUSION_66:
+ DoCastSelf(SPELL_66_HEALTH);
+ break;
+ case NPC_ILLUSION_33:
+ DoCastSelf(SPELL_33_HEALTH);
+ break;
+ default:
+ break;
+ }
+ })
+ .Schedule(2s, 10s, [this](TaskContext task)
+ {
+ if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
+ DoCast(target, IsHeroic() ? SPELL_MIND_REND_IMAGE_H : SPELL_MIND_REND_IMAGE);
+ task.Repeat(8s, 12s);
+ });
}
void UpdateAI(uint32 diff) override