diff options
| -rw-r--r-- | src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp | 31 | ||||
| -rw-r--r-- | src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp | 68 |
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 |
