diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index 32fbc1cf83e..ef29d76972b 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -439,8 +439,9 @@ public: { if (Unit* unitTarget = target->ToUnit()) return !NonTankTargetSelector::operator()(unitTarget) - || unitTarget->HasAura(SPELL_AGONY_CURSE) || unitTarget->HasAura(SPELL_AGONY_CURSE_ALLY) - || !unitTarget->HasAura(SPELL_SPECTRAL_REALM_AURA); + && !unitTarget->HasAura(SPELL_AGONY_CURSE) + && !unitTarget->HasAura(SPELL_AGONY_CURSE_ALLY) + && unitTarget->HasAura(SPELL_SPECTRAL_REALM_AURA); return false; } }; @@ -519,10 +520,12 @@ struct boss_sathrovarr : public BossAI break; case EVENT_AGONY_CURSE: { + CastSpellExtraArgs args(TRIGGERED_FULL_MASK); + args.AddSpellMod(SPELLVALUE_MAX_TARGETS, 1); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, CurseAgonySelector(me))) - DoCast(target, SPELL_AGONY_CURSE); + DoCast(target, SPELL_AGONY_CURSE, args); else - DoCastVictim(SPELL_AGONY_CURSE); + DoCastVictim(SPELL_AGONY_CURSE, args); events.Repeat(Seconds(20)); break; } @@ -622,8 +625,9 @@ class SpectralBlastSelector : NonTankTargetSelector bool operator()(WorldObject* target) const { if (Unit* unitTarget = target->ToUnit()) - return !NonTankTargetSelector::operator()(unitTarget) || - unitTarget->HasAura(SPELL_SPECTRAL_EXHAUSTION) || unitTarget->HasAura(SPELL_SPECTRAL_REALM_AURA); + return !NonTankTargetSelector::operator()(unitTarget) + && !unitTarget->HasAura(SPELL_SPECTRAL_EXHAUSTION) + && !unitTarget->HasAura(SPELL_SPECTRAL_REALM_AURA); return false; } }; @@ -768,8 +772,12 @@ class spell_kalecgos_curse_of_boundless_agony : public AuraScript void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_CANCEL) - GetTarget()->CastSpell(GetTarget(), SPELL_AGONY_CURSE_ALLY, true); + if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_CANCEL) + return; + + CastSpellExtraArgs args(TRIGGERED_FULL_MASK); + args.AddSpellMod(SPELLVALUE_MAX_TARGETS, 1); + GetTarget()->CastSpell(GetTarget(), SPELL_AGONY_CURSE_ALLY, args); } void Register() override |