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 69ca2d31843..025bc44ed6a 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -440,8 +440,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; } }; @@ -520,10 +521,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; } @@ -623,8 +626,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; } }; @@ -769,8 +773,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 |