Scripts/Sunwell Plateau: Fixed and improved spell "Curse of Boundless Agony" target selection (Boss Kalecgos)

This commit is contained in:
sirikfoll
2018-02-05 21:14:26 -02:00
parent 713bf944ae
commit 14b6e3bbb3

View File

@@ -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