aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp634
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp911
2 files changed, 1 insertions, 1544 deletions
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index 5150b674434..53cda732603 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -172,32 +172,6 @@ class spell_pal_ardent_defender : public AuraScript
}
};
-// 267344 - Art of War
-class spell_pal_art_of_war : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_ART_OF_WAR_TRIGGERED, SPELL_PALADIN_BLADE_OF_JUSTICE });
- }
-
- bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- return roll_chance_i(aurEff->GetAmount());
- }
-
- void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
- {
- GetTarget()->GetSpellHistory()->ResetCooldown(SPELL_PALADIN_BLADE_OF_JUSTICE, true);
- GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_ART_OF_WAR_TRIGGERED, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_art_of_war::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_pal_art_of_war::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
// 19042 - Ashen Hallow
struct areatrigger_pal_ashen_hallow : AreaTriggerAI
{
@@ -253,47 +227,7 @@ private:
Milliseconds _period;
};
-// 248033 - Awakening
-class spell_pal_awakening : public AuraScript
-{
- bool Validate(SpellInfo const* spellInfo) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_AVENGING_WRATH })
- && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
- }
-
- bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- return roll_chance_i(aurEff->GetAmount());
- }
-
- void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo)
- {
- Milliseconds extraDuration = 0ms;
- if (AuraEffect const* durationEffect = GetEffect(EFFECT_1))
- extraDuration = Seconds(durationEffect->GetAmount());
-
- if (Aura* avengingWrath = GetTarget()->GetAura(SPELL_PALADIN_AVENGING_WRATH))
- {
- avengingWrath->SetDuration(avengingWrath->GetDuration() + extraDuration.count());
- avengingWrath->SetMaxDuration(avengingWrath->GetMaxDuration() + extraDuration.count());
- }
- else
- GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_AVENGING_WRATH,
- CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD)
- .SetTriggeringSpell(eventInfo.GetProcSpell())
- .AddSpellMod(SPELLVALUE_DURATION, extraDuration.count()));
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_awakening::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_pal_awakening::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
// 1022 - Blessing of Protection
-// 204018 - Blessing of Spellwarding
class spell_pal_blessing_of_protection : public SpellScript
{
bool Validate(SpellInfo const* spellInfo) override
@@ -331,26 +265,6 @@ class spell_pal_blessing_of_protection : public SpellScript
}
};
-// 115750 - Blinding Light
-class spell_pal_blinding_light : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_BLINDING_LIGHT_EFFECT });
- }
-
- void HandleDummy(SpellEffIndex /*effIndex*/)
- {
- if (Unit* target = GetHitUnit())
- GetCaster()->CastSpell(target, SPELL_PALADIN_BLINDING_LIGHT_EFFECT, true);
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_pal_blinding_light::HandleDummy, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
- }
-};
-
// 26573 - Consecration
class spell_pal_consecration : public AuraScript
{
@@ -407,80 +321,6 @@ struct areatrigger_pal_consecration : AreaTriggerAI
}
};
-// 196926 - Crusader Might
-class spell_pal_crusader_might : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_HOLY_SHOCK });
- }
-
- void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_HOLY_SHOCK, Seconds(aurEff->GetAmount()));
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pal_crusader_might::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
-// 406833 - Crusading Strikes
-class spell_pal_crusading_strikes : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_CRUSADING_STRIKES_ENERGIZE });
- }
-
- void HandleEffectProc(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- if (GetStackAmount() == 2)
- {
- GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_CRUSADING_STRIKES_ENERGIZE, aurEff);
-
- // this spell has weird proc order dependency set up in db2 data so we do removal manually
- Remove();
- }
- }
-
- void Register() override
- {
- AfterEffectApply += AuraEffectApplyFn(spell_pal_crusading_strikes::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
- }
-};
-
-// 223817 - Divine Purpose
-class spell_pal_divine_purpose : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_DIVINE_PURPOSE_TRIGGERED });
- }
-
- bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- Spell const* procSpell = eventInfo.GetProcSpell();
- if (!procSpell)
- return false;
-
- return roll_chance_i(aurEff->GetAmount());
- }
-
- void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo)
- {
- eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_PALADIN_DIVINE_PURPOSE_TRIGGERED,
- CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(eventInfo.GetProcSpell()));
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_divine_purpose::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_pal_divine_purpose::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
// 642 - Divine Shield
class spell_pal_divine_shield : public SpellScript
{
@@ -525,68 +365,6 @@ class spell_pal_divine_shield : public SpellScript
}
};
-// 190784 - Divine Steed
-class spell_pal_divine_steed : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo(
- {
- SPELL_PALADIN_DIVINE_STEED_HUMAN,
- SPELL_PALADIN_DIVINE_STEED_DWARF,
- SPELL_PALADIN_DIVINE_STEED_DRAENEI,
- SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF,
- SPELL_PALADIN_DIVINE_STEED_BLOODELF,
- SPELL_PALADIN_DIVINE_STEED_TAUREN,
- SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL,
- SPELL_PALADIN_DIVINE_STEED_LF_DRAENEI
- });
- }
-
- void HandleOnCast()
- {
- Unit* caster = GetCaster();
-
- uint32 spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN;
- switch (caster->GetRace())
- {
- case RACE_HUMAN:
- spellId = SPELL_PALADIN_DIVINE_STEED_HUMAN;
- break;
- case RACE_DWARF:
- spellId = SPELL_PALADIN_DIVINE_STEED_DWARF;
- break;
- case RACE_DRAENEI:
- spellId = SPELL_PALADIN_DIVINE_STEED_DRAENEI;
- break;
- case RACE_LIGHTFORGED_DRAENEI:
- spellId = SPELL_PALADIN_DIVINE_STEED_LF_DRAENEI;
- break;
- case RACE_DARK_IRON_DWARF:
- spellId = SPELL_PALADIN_DIVINE_STEED_DARK_IRON_DWARF;
- break;
- case RACE_BLOODELF:
- spellId = SPELL_PALADIN_DIVINE_STEED_BLOODELF;
- break;
- case RACE_TAUREN:
- spellId = SPELL_PALADIN_DIVINE_STEED_TAUREN;
- break;
- case RACE_ZANDALARI_TROLL:
- spellId = SPELL_PALADIN_DIVINE_STEED_ZANDALARI_TROLL;
- break;
- default:
- break;
- }
-
- caster->CastSpell(caster, spellId, true);
- }
-
- void Register() override
- {
- OnCast += SpellCastFn(spell_pal_divine_steed::HandleOnCast);
- }
-};
-
// 53385 - Divine Storm
class spell_pal_divine_storm : public SpellScript
{
@@ -606,46 +384,6 @@ class spell_pal_divine_storm : public SpellScript
}
};
-// 205191 - Eye for an Eye
-class spell_pal_eye_for_an_eye : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_EYE_FOR_AN_EYE_TRIGGERED });
- }
-
- void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo)
- {
- GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_PALADIN_EYE_FOR_AN_EYE_TRIGGERED, true);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pal_eye_for_an_eye::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
-// 234299 - Fist of Justice
-class spell_pal_fist_of_justice : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_HAMMER_OF_JUSTICE });
- }
-
- void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/)
- {
- int32 value = aurEff->GetAmount() / 10;
-
- GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_HAMMER_OF_JUSTICE, Seconds(-value));
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pal_fist_of_justice::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
// -85043 - Grand Crusader
class spell_pal_grand_crusader : public AuraScript
{
@@ -789,26 +527,7 @@ class spell_pal_infusion_of_light : public AuraScript
}
};
-// 327193 - Moment of Glory
-class spell_pal_moment_of_glory : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_AVENGERS_SHIELD });
- }
-
- void HandleOnHit()
- {
- GetCaster()->GetSpellHistory()->ResetCooldown(SPELL_PALADIN_AVENGERS_SHIELD);
- }
-
- void Register() override
- {
- OnHit += SpellHitFn(spell_pal_moment_of_glory::HandleOnHit);
- }
-};
-
-// 20271/275779/275773 - Judgement (Retribution/Protection/Holy)
+// 20271 - Judgement (Retribution/Protection/Holy)
class spell_pal_judgment : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
@@ -839,91 +558,6 @@ class spell_pal_judgment : public SpellScript
}
};
-// 114165 - Holy Prism
-class spell_pal_holy_prism : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo ({ SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY, SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY, SPELL_PALADIN_HOLY_PRISM_TARGET_BEAM_VISUAL });
- }
-
- void HandleDummy(SpellEffIndex /*effIndex*/)
- {
- if (GetCaster()->IsFriendlyTo(GetHitUnit()))
- GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY, true);
- else
- GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY , true);
-
- GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_TARGET_BEAM_VISUAL, true);
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
- }
-};
-
-// 114852 - Holy Prism (Damage)
-// 114871 - Holy Prism (Heal)
-class spell_pal_holy_prism_selector : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo ({ SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY, SPELL_PALADIN_HOLY_PRISM_AREA_BEAM_VISUAL });
- }
-
- void SaveTargetGuid(SpellEffIndex /*effIndex*/)
- {
- _targetGUID = GetHitUnit()->GetGUID();
- }
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- uint8 const maxTargets = 5;
-
- if (targets.size() > maxTargets)
- {
- if (GetSpellInfo()->Id == SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY)
- {
- targets.sort(Trinity::HealthPctOrderPred());
- targets.resize(maxTargets);
- }
- else
- Trinity::Containers::RandomResize(targets, maxTargets);
- }
-
- _sharedTargets = targets;
- }
-
- void ShareTargets(std::list<WorldObject*>& targets)
- {
- targets = _sharedTargets;
- }
-
- void HandleScript(SpellEffIndex /*effIndex*/)
- {
- if (Unit* initialTarget = ObjectAccessor::GetUnit(*GetCaster(), _targetGUID))
- initialTarget->CastSpell(GetHitUnit(), SPELL_PALADIN_HOLY_PRISM_AREA_BEAM_VISUAL, true);
- }
-
- void Register() override
- {
- if (m_scriptSpellId == SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY)
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::FilterTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ALLY);
- else if (m_scriptSpellId == SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY)
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::FilterTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ENEMY);
-
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::ShareTargets, EFFECT_2, TARGET_UNIT_DEST_AREA_ENTRY);
-
- OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism_selector::SaveTargetGuid, EFFECT_0, SPELL_EFFECT_ANY);
- OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism_selector::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
- }
-
-private:
- std::list<WorldObject*> _sharedTargets;
- ObjectGuid _targetGUID;
-};
-
// 20473 - Holy Shock
class spell_pal_holy_shock : public SpellScript
{
@@ -1175,174 +809,6 @@ class spell_pal_light_s_beacon : public AuraScript
}
};
-// 122773 - Light's Hammer
-class spell_pal_light_hammer_init_summon : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo
- ({
- SPELL_PALADIN_LIGHT_HAMMER_COSMETIC,
- SPELL_PALADIN_LIGHT_HAMMER_PERIODIC
- });
- }
-
- void InitSummon()
- {
- for (SpellLogEffectGenericVictimParams const& summonedObject : GetSpell()->GetExecuteLogEffectTargets(SPELL_EFFECT_SUMMON, &SpellLogEffect::GenericVictimTargets))
- {
- if (Unit* hammer = ObjectAccessor::GetUnit(*GetCaster(), summonedObject.Victim))
- {
- hammer->CastSpell(hammer, SPELL_PALADIN_LIGHT_HAMMER_COSMETIC,
- CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(GetSpell()));
- hammer->CastSpell(hammer, SPELL_PALADIN_LIGHT_HAMMER_PERIODIC,
- CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(GetSpell()));
- }
- }
- }
-
- void Register() override
- {
- AfterCast += SpellCastFn(spell_pal_light_hammer_init_summon::InitSummon);
- }
-};
-
-// 114918 - Light's Hammer (Periodic)
-class spell_pal_light_hammer_periodic : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo
- ({
- SPELL_PALADIN_LIGHT_HAMMER_HEALING,
- SPELL_PALADIN_LIGHT_HAMMER_DAMAGE
- });
- }
-
- void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
- {
- Unit* lightHammer = GetTarget();
- if (Unit* originalCaster = lightHammer->GetOwner())
- {
- originalCaster->CastSpell(lightHammer->GetPosition(), SPELL_PALADIN_LIGHT_HAMMER_DAMAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
- originalCaster->CastSpell(lightHammer->GetPosition(), SPELL_PALADIN_LIGHT_HAMMER_HEALING, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
- }
- }
-
- void Register() override
- {
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_pal_light_hammer_periodic::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
- }
-};
-
-// 204074 - Righteous Protector
-class spell_pal_righteous_protector : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_AVENGING_WRATH, SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS });
- }
-
- void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- int32 value = aurEff->GetAmount() * 100 * _baseHolyPowerCost->Amount;
-
- GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_AVENGING_WRATH, Milliseconds(-value));
- GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS, Milliseconds(-value));
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pal_righteous_protector::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-
- Optional<SpellPowerCost> _baseHolyPowerCost;
-};
-
-// 267610 - Righteous Verdict
-class spell_pal_righteous_verdict : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellEntry*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_RIGHTEOUS_VERDICT_AURA });
- }
-
- void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
- {
- procInfo.GetActor()->CastSpell(procInfo.GetActor(), SPELL_PALADIN_RIGHTEOUS_VERDICT_AURA, true);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pal_righteous_verdict::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
-// 85804 - Selfless Healer
-class spell_pal_selfless_healer : public AuraScript
-{
- bool CheckEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
- {
- return false;
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_selfless_healer::CheckEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
- }
-};
-
-// 184662 - Shield of Vengeance
-class spell_pal_shield_of_vengeance : public AuraScript
-{
- bool Validate(SpellInfo const* spellInfo) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_SHIELD_OF_VENGEANCE_DAMAGE }) && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
- }
-
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
- {
- amount = CalculatePct(GetUnitOwner()->GetMaxHealth(), GetEffectInfo(EFFECT_1).CalcValue());
- //if (Player const* player = GetUnitOwner()->ToPlayer())
- // AddPct(amount, player->GetRatingBonusValue(CR_VERSATILITY_DAMAGE_DONE) + player->GetTotalAuraModifier(SPELL_AURA_MOD_VERSATILITY));
-
- _initialAmount = amount;
- }
-
- void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_SHIELD_OF_VENGEANCE_DAMAGE,
- CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_BASE_POINT0, _initialAmount - aurEff->GetAmount()));
- }
-
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pal_shield_of_vengeance::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
- OnEffectRemove += AuraEffectApplyFn(spell_pal_shield_of_vengeance::HandleRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL);
- }
-
- int32 _initialAmount = 0;
-};
-
-// 85256 - Templar's Verdict
-class spell_pal_templar_s_verdict : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellEntry*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_TEMPLAR_VERDICT_DAMAGE });
- }
-
- void HandleHitTarget(SpellEffIndex /*effIndex*/)
- {
- GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_TEMPLAR_VERDICT_DAMAGE, true);
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_pal_templar_s_verdict::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY);
- }
-};
-
// 28789 - Holy Power
class spell_pal_t3_6p_bonus : public AuraScript
{
@@ -1433,109 +899,21 @@ class spell_pal_t8_2p_bonus : public AuraScript
}
};
-// 405547 - Paladin Protection 10.1 Class Set 2pc
-class spell_pal_t30_2p_protection_bonus : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE });
- }
-
- void HandleProc(AuraEffect* aurEff, ProcEventInfo& procInfo)
- {
- PreventDefaultAction();
-
- Unit* caster = procInfo.GetActor();
- uint32 ticks = sSpellMgr->AssertSpellInfo(SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE, DIFFICULTY_NONE)->GetMaxTicks();
- uint32 damage = CalculatePct(procInfo.GetDamageInfo()->GetOriginalDamage(), aurEff->GetAmount()) / ticks;
-
- caster->CastSpell(procInfo.GetActionTarget(), SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE, CastSpellExtraArgs(aurEff)
- .SetTriggeringSpell(procInfo.GetProcSpell())
- .AddSpellMod(SPELLVALUE_BASE_POINT0, damage));
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pal_t30_2p_protection_bonus::HandleProc, EFFECT_1, SPELL_AURA_DUMMY);
- }
-};
-
-// 408461 - Heartfire
-class spell_pal_t30_2p_protection_bonus_heal : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_T30_2P_HEARTFIRE_HEAL });
- }
-
- bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& procInfo)
- {
- return procInfo.GetDamageInfo() && procInfo.GetSpellInfo() && procInfo.GetSpellInfo()->HasLabel(SPELL_LABEL_PALADIN_T30_2P_HEARTFIRE);
- }
-
- void HandleProc(AuraEffect* aurEff, ProcEventInfo& procInfo)
- {
- GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_T30_2P_HEARTFIRE_HEAL, CastSpellExtraArgs(aurEff)
- .SetTriggeringSpell(procInfo.GetProcSpell())
- .AddSpellMod(SPELLVALUE_BASE_POINT0, procInfo.GetDamageInfo()->GetOriginalDamage()));
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_t30_2p_protection_bonus_heal::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_pal_t30_2p_protection_bonus_heal::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
-// 269569 - Zeal
-class spell_pal_zeal : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_PALADIN_ZEAL_AURA });
- }
-
- void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/)
- {
- Unit* target = GetTarget();
- target->CastSpell(target, SPELL_PALADIN_ZEAL_AURA, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, aurEff->GetAmount()));
-
- PreventDefaultAction();
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_pal_zeal::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
- }
-};
-
void AddSC_paladin_spell_scripts()
{
RegisterSpellScript(spell_pal_ardent_defender);
- RegisterSpellScript(spell_pal_art_of_war);
RegisterAreaTriggerAI(areatrigger_pal_ashen_hallow);
- RegisterSpellScript(spell_pal_awakening);
RegisterSpellScript(spell_pal_blessing_of_protection);
- RegisterSpellScript(spell_pal_blinding_light);
- RegisterSpellScript(spell_pal_crusader_might);
- RegisterSpellScript(spell_pal_crusading_strikes);
RegisterSpellScript(spell_pal_consecration);
RegisterAreaTriggerAI(areatrigger_pal_consecration);
- RegisterSpellScript(spell_pal_divine_purpose);
RegisterSpellScript(spell_pal_divine_shield);
- RegisterSpellScript(spell_pal_divine_steed);
RegisterSpellScript(spell_pal_divine_storm);
- RegisterSpellScript(spell_pal_eye_for_an_eye);
- RegisterSpellScript(spell_pal_fist_of_justice);
RegisterSpellScript(spell_pal_glyph_of_holy_light);
RegisterSpellScript(spell_pal_grand_crusader);
RegisterSpellScript(spell_pal_hammer_of_the_righteous);
RegisterSpellScript(spell_pal_hand_of_sacrifice);
RegisterSpellScript(spell_pal_infusion_of_light);
- RegisterSpellScript(spell_pal_moment_of_glory);
RegisterSpellScript(spell_pal_judgment);
- RegisterSpellScript(spell_pal_holy_prism);
- RegisterSpellScript(spell_pal_holy_prism_selector);
RegisterSpellScript(spell_pal_holy_shock);
RegisterSpellScript(spell_pal_holy_shock_damage_visual);
RegisterSpellScript(spell_pal_holy_shock_heal_visual);
@@ -1543,16 +921,6 @@ void AddSC_paladin_spell_scripts()
RegisterSpellScript(spell_pal_item_t6_trinket);
RegisterSpellScript(spell_pal_lay_on_hands);
RegisterSpellScript(spell_pal_light_s_beacon);
- RegisterSpellScript(spell_pal_light_hammer_init_summon);
- RegisterSpellScript(spell_pal_light_hammer_periodic);
- RegisterSpellScript(spell_pal_righteous_protector);
- RegisterSpellScript(spell_pal_righteous_verdict);
- RegisterSpellScript(spell_pal_selfless_healer);
- RegisterSpellScript(spell_pal_shield_of_vengeance);
- RegisterSpellScript(spell_pal_templar_s_verdict);
RegisterSpellScript(spell_pal_t3_6p_bonus);
RegisterSpellScript(spell_pal_t8_2p_bonus);
- RegisterSpellScript(spell_pal_t30_2p_protection_bonus);
- RegisterSpellScript(spell_pal_t30_2p_protection_bonus_heal);
- RegisterSpellScript(spell_pal_zeal);
}
diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp
index 408c3b71319..8d4bdfe0540 100644
--- a/src/server/scripts/Spells/spell_shaman.cpp
+++ b/src/server/scripts/Spells/spell_shaman.cpp
@@ -133,149 +133,6 @@ enum MiscNpcs
NPC_HEALING_RAIN_INVISIBLE_STALKER = 73400
};
-// 273221 - Aftershock
-class spell_sha_aftershock : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellEntry*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_AFTERSHOCK_ENERGIZE });
- }
-
- bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- return false;
- }
-
- void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo)
- {
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_aftershock::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_sha_aftershock::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
-// 108281 - Ancestral Guidance
-class spell_sha_ancestral_guidance : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_ANCESTRAL_GUIDANCE_HEAL });
- }
-
- bool CheckProc(ProcEventInfo& eventInfo)
- {
- if (eventInfo.GetHealInfo() && eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->Id == SPELL_SHAMAN_ANCESTRAL_GUIDANCE_HEAL)
- return false;
-
- if (!eventInfo.GetHealInfo() && !eventInfo.GetDamageInfo())
- return false;
-
- return true;
- }
-
- void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- int32 bp0 = CalculatePct(int32(eventInfo.GetDamageInfo() ? eventInfo.GetDamageInfo()->GetDamage() : eventInfo.GetHealInfo()->GetHeal()), aurEff->GetAmount());
- if (bp0)
- {
- CastSpellExtraArgs args(aurEff);
- args.AddSpellMod(SPELLVALUE_BASE_POINT0, bp0);
- eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_SHAMAN_ANCESTRAL_GUIDANCE_HEAL, args);
- }
- }
-
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_sha_ancestral_guidance::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_sha_ancestral_guidance::HandleEffectProc, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
- }
-};
-
-// 114911 - Ancestral Guidance Heal
-class spell_sha_ancestral_guidance_heal : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_ANCESTRAL_GUIDANCE });
- }
-
- static void ResizeTargets(std::list<WorldObject*>& targets)
- {
- Trinity::SelectRandomInjuredTargets(targets, 3, true);
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_ancestral_guidance_heal::ResizeTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
- }
-};
-
-// 114052 - Ascendance (Restoration)
-class spell_sha_ascendance_restoration : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_RESTORATIVE_MISTS });
- }
-
- bool CheckProc(ProcEventInfo& procInfo)
- {
- return procInfo.GetHealInfo() && procInfo.GetHealInfo()->GetOriginalHeal() && procInfo.GetSpellInfo()->Id != SPELL_SHAMAN_RESTORATIVE_MISTS_INITIAL;
- }
-
- void OnProcHeal(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
- {
- _healToDistribute += procInfo.GetHealInfo()->GetOriginalHeal();
- }
-
- void HandleEffectPeriodic(AuraEffect const* aurEff)
- {
- if (!_healToDistribute)
- return;
-
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(_healToDistribute);
- GetTarget()->CastSpell(nullptr, SPELL_SHAMAN_RESTORATIVE_MISTS, args);
- _healToDistribute = 0;
- }
-
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_sha_ascendance_restoration::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_sha_ascendance_restoration::OnProcHeal, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_ascendance_restoration::HandleEffectPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
- }
-
-private:
- uint32 _healToDistribute = 0;
-};
-
-// 188443 - Chain Lightning
-class spell_sha_chain_lightning : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_CHAIN_LIGHTNING_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER })
- && ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_4 } });
- }
-
- void HandleScript(SpellEffIndex /*effIndex*/)
- {
- if (AuraEffect const* energizeAmount = GetCaster()->GetAuraEffect(SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_4))
- GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_CHAIN_LIGHTNING_ENERGIZE, CastSpellExtraArgs(energizeAmount)
- .AddSpellMod(SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount() * GetUnitTargetCountForEffect(EFFECT_0)));
- }
-
- void Register() override
- {
- OnEffectLaunch += SpellEffectFn(spell_sha_chain_lightning::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
- }
-};
-
// 45297 - Chain Lightning Overload
class spell_sha_chain_lightning_overload : public SpellScript
{
@@ -298,203 +155,6 @@ class spell_sha_chain_lightning_overload : public SpellScript
}
};
-// 187874 - Crash Lightning
-class spell_sha_crash_lightning : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_CRASH_LIGHTNING_CLEAVE, SPELL_SHAMAN_GATHERING_STORMS, SPELL_SHAMAN_GATHERING_STORMS_BUFF });
- }
-
- void CountTargets(std::list<WorldObject*>& targets)
- {
- _targetsHit = targets.size();
- }
-
- void TriggerCleaveBuff()
- {
- if (_targetsHit >= 2)
- GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_CRASH_LIGHTNING_CLEAVE, true);
-
- if (AuraEffect const* gatheringStorms = GetCaster()->GetAuraEffect(SPELL_SHAMAN_GATHERING_STORMS, EFFECT_0))
- {
- CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
- args.AddSpellMod(SPELLVALUE_BASE_POINT0, int32(gatheringStorms->GetAmount() * _targetsHit));
- GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_GATHERING_STORMS_BUFF, args);
- }
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_crash_lightning::CountTargets, EFFECT_0, TARGET_UNIT_CONE_CASTER_TO_DEST_ENEMY);
- AfterCast += SpellCastFn(spell_sha_crash_lightning::TriggerCleaveBuff);
- }
-
- size_t _targetsHit = 0;
-};
-
-// 378270 - Deeply Rooted Elements
-class spell_sha_deeply_rooted_elements : public AuraScript
-{
- bool Validate(SpellInfo const* spellInfo) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_LAVA_BURST, SPELL_SHAMAN_STORMSTRIKE, SPELL_SHAMAN_RIPTIDE,
- SPELL_SHAMAN_ASCENDANCE_ELEMENTAL, SPELL_SHAMAN_ASCENDANCE_ENHANCEMENT, SPELL_SHAMAN_ASCENDANCE_RESTORATION })
- && ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } })
- && spellInfo->GetEffect(EFFECT_0).IsAura();
- }
-
- bool Load() override
- {
- return GetUnitOwner()->IsPlayer();
- }
-
- template<uint32 requiredSpellId>
- bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& procInfo)
- {
- if (!procInfo.GetSpellInfo())
- return false;
-
- if (procInfo.GetSpellInfo()->Id != requiredSpellId)
- return false;
-
- return roll_chance_i(_procAttempts++ - 2);
- }
-
- template<uint32 ascendanceSpellId>
- void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
- {
- _procAttempts = 0;
-
- Unit* target = eventInfo.GetActor();
-
- int32 duration = GetEffect(EFFECT_0)->GetAmount();
- if (Aura const* ascendanceAura = target->GetAura(ascendanceSpellId))
- duration += ascendanceAura->GetDuration();
-
- target->CastSpell(target, ascendanceSpellId,
- CastSpellExtraArgs(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_CAST_IN_PROGRESS)
- .SetTriggeringAura(aurEff)
- .SetTriggeringSpell(eventInfo.GetProcSpell())
- .AddSpellMod(SPELLVALUE_DURATION, duration));
- }
-
- void Register() override
- {
- if (!GetAura() || GetUnitOwner()->ToPlayer()->GetPrimarySpecialization() == ChrSpecialization::ShamanElemental)
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_deeply_rooted_elements::CheckProc<SPELL_SHAMAN_LAVA_BURST>, EFFECT_1, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_sha_deeply_rooted_elements::HandleProc<SPELL_SHAMAN_ASCENDANCE_ELEMENTAL>, EFFECT_1, SPELL_AURA_DUMMY);
- }
-
- if (!GetAura() || GetUnitOwner()->ToPlayer()->GetPrimarySpecialization() == ChrSpecialization::ShamanEnhancement)
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_deeply_rooted_elements::CheckProc<SPELL_SHAMAN_STORMSTRIKE>, EFFECT_2, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_sha_deeply_rooted_elements::HandleProc<SPELL_SHAMAN_ASCENDANCE_ENHANCEMENT>, EFFECT_2, SPELL_AURA_DUMMY);
- }
-
- if (!GetAura() || GetUnitOwner()->ToPlayer()->GetPrimarySpecialization() == ChrSpecialization::ShamanRestoration)
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_deeply_rooted_elements::CheckProc<SPELL_SHAMAN_RIPTIDE>, EFFECT_3, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_sha_deeply_rooted_elements::HandleProc<SPELL_SHAMAN_ASCENDANCE_RESTORATION>, EFFECT_3, SPELL_AURA_DUMMY);
- }
- }
-
- int32 _procAttempts = 0;
-};
-
-// 335902 - Doom Winds
-class spell_sha_doom_winds_legendary : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_DOOM_WINDS_LEGENDARY_COOLDOWN });
- }
-
- bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& procInfo)
- {
- if (GetTarget()->HasAura(SPELL_SHAMAN_DOOM_WINDS_LEGENDARY_COOLDOWN))
- return false;
-
- SpellInfo const* spellInfo = procInfo.GetSpellInfo();
- if (!spellInfo)
- return false;
-
- return spellInfo->HasLabel(SPELL_LABEL_SHAMAN_WINDFURY_TOTEM);
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_doom_winds_legendary::CheckProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
- }
-};
-
-// 207778 - Downpour
-class spell_sha_downpour : public SpellScript
-{
- bool Validate(SpellInfo const* spellInfo) override
- {
- return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
- }
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- Trinity::SelectRandomInjuredTargets(targets, 6, true);
- }
-
- void CountEffectivelyHealedTarget()
- {
- // Cooldown increased for each target effectively healed
- if (GetHitHeal())
- ++_healedTargets;
- }
-
- void HandleCooldown()
- {
- SpellHistory::Duration cooldown = Milliseconds(GetSpellInfo()->RecoveryTime) + Seconds(GetEffectInfo(EFFECT_1).CalcValue() * _healedTargets);
- GetCaster()->GetSpellHistory()->StartCooldown(GetSpellInfo(), 0, GetSpell(), false, cooldown);
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_downpour::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
- AfterHit += SpellHitFn(spell_sha_downpour::CountEffectivelyHealedTarget);
- AfterCast += SpellCastFn(spell_sha_downpour::HandleCooldown);
- }
-
- int32 _healedTargets = 0;
-};
-
-// 204288 - Earth Shield
-class spell_sha_earth_shield : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_EARTH_SHIELD_HEAL });
- }
-
- bool CheckProc(ProcEventInfo& eventInfo)
- {
- if (!eventInfo.GetDamageInfo() || !HasEffect(EFFECT_1) || eventInfo.GetDamageInfo()->GetDamage() < GetTarget()->CountPctFromMaxHealth(GetEffect(EFFECT_1)->GetAmount()))
- return false;
- return true;
- }
-
- void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- PreventDefaultAction();
-
- GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_EARTH_SHIELD_HEAL, CastSpellExtraArgs(aurEff)
- .SetOriginalCaster(GetCasterGUID()));
- }
-
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_sha_earth_shield::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_sha_earth_shield::HandleProc, EFFECT_1, SPELL_AURA_DUMMY);
- }
-};
-
// 8042 - Earth Shock
class spell_sha_earth_shock : public SpellScript
{
@@ -518,64 +178,6 @@ class spell_sha_earth_shock : public SpellScript
}
};
-// 170374 - Earthen Rage (Passive)
-class spell_sha_earthen_rage_passive : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_EARTHEN_RAGE_PERIODIC, SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE });
- }
-
- bool CheckProc(ProcEventInfo& procInfo)
- {
- return procInfo.GetSpellInfo() && procInfo.GetSpellInfo()->Id != SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE;
- }
-
- void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- _procTargetGuid = eventInfo.GetProcTarget()->GetGUID();
- eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_SHAMAN_EARTHEN_RAGE_PERIODIC, true);
- }
-
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_sha_earthen_rage_passive::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_sha_earthen_rage_passive::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-
- ObjectGuid _procTargetGuid;
-
-public:
- ObjectGuid const& GetProcTargetGuid() const
- {
- return _procTargetGuid;
- }
-};
-
-// 170377 - Earthen Rage (Proc Aura)
-class spell_sha_earthen_rage_proc_aura : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_EARTHEN_RAGE_PASSIVE, SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE });
- }
-
- void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
- {
- PreventDefaultAction();
- if (Aura const* aura = GetCaster()->GetAura(SPELL_SHAMAN_EARTHEN_RAGE_PASSIVE))
- if (spell_sha_earthen_rage_passive* script = aura->GetScript<spell_sha_earthen_rage_passive>())
- if (Unit* procTarget = ObjectAccessor::GetUnit(*GetCaster(), script->GetProcTargetGuid()))
- GetTarget()->CastSpell(procTarget, SPELL_SHAMAN_EARTHEN_RAGE_DAMAGE, true);
- }
-
- void Register() override
- {
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_earthen_rage_proc_aura::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
- }
-};
-
// 61882 - Earthquake
// 8382 - AreaTriggerId
struct areatrigger_sha_earthquake : AreaTriggerAI
@@ -691,119 +293,6 @@ class spell_sha_earthquake_tick : public SpellScript
}
};
-// 117014 - Elemental Blast
-// 120588 - Elemental Blast Overload
-class spell_sha_elemental_blast : public SpellScript
-{
- static constexpr uint32 BuffSpells[] = { SPELL_SHAMAN_ELEMENTAL_BLAST_CRIT, SPELL_SHAMAN_ELEMENTAL_BLAST_HASTE, SPELL_SHAMAN_ELEMENTAL_BLAST_MASTERY };
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo(
- {
- SPELL_SHAMAN_ELEMENTAL_BLAST_CRIT,
- SPELL_SHAMAN_ELEMENTAL_BLAST_HASTE,
- SPELL_SHAMAN_ELEMENTAL_BLAST_MASTERY,
- SPELL_SHAMAN_ELEMENTAL_BLAST_ENERGIZE,
- SPELL_SHAMAN_MAELSTROM_CONTROLLER
- }) && ValidateSpellEffect({
- { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_10 },
- { SPELL_SHAMAN_T29_2P_ELEMENTAL_DAMAGE_BUFF, EFFECT_0 }
- });
- }
-
- void HandleEnergize(SpellEffIndex /*effIndex*/)
- {
- if (AuraEffect const* energizeAmount = GetCaster()->GetAuraEffect(SPELL_SHAMAN_MAELSTROM_CONTROLLER, GetSpellInfo()->Id == SPELL_SHAMAN_ELEMENTAL_BLAST ? EFFECT_9 : EFFECT_10))
- GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_ELEMENTAL_BLAST_ENERGIZE, CastSpellExtraArgs(energizeAmount)
- .AddSpellMod(SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount()));
- }
-
- void TriggerBuff()
- {
- Unit* caster = GetCaster();
- uint32 spellId = *Trinity::Containers::SelectRandomWeightedContainerElement(BuffSpells, [caster](uint32 buffSpellId)
- {
- return !caster->HasAura(buffSpellId) ? 1.0 : 0.0;
- });
-
- GetCaster()->CastSpell(GetCaster(), spellId, TRIGGERED_FULL_MASK);
- }
-
- void AddScriptedDamageMods()
- {
- if (AuraEffect* t29 = GetCaster()->GetAuraEffect(SPELL_SHAMAN_T29_2P_ELEMENTAL_DAMAGE_BUFF, EFFECT_0))
- {
- SetHitDamage(CalculatePct(GetHitDamage(), 100 + t29->GetAmount()));
- t29->GetBase()->Remove();
- }
- }
-
- void Register() override
- {
- OnEffectLaunch += SpellEffectFn(spell_sha_elemental_blast::HandleEnergize, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
- AfterCast += SpellCastFn(spell_sha_elemental_blast::TriggerBuff);
- OnHit += SpellHitFn(spell_sha_elemental_blast::AddScriptedDamageMods);
- }
-};
-
-// 318038 - Flametongue Weapon
-class spell_sha_flametongue_weapon : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_FLAMETONGUE_WEAPON_ENCHANT });
- }
-
- bool Load() override
- {
- return GetCaster()->GetTypeId() == TYPEID_PLAYER;
- }
-
- void HandleEffectHitTarget(SpellEffIndex /*effIndex*/)
- {
- Player* player = GetCaster()->ToPlayer();
- uint8 slot = EQUIPMENT_SLOT_MAINHAND;
- if (player->GetPrimarySpecialization() == ChrSpecialization::ShamanEnhancement)
- slot = EQUIPMENT_SLOT_OFFHAND;
-
- Item* targetItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
- if (!targetItem || !targetItem->GetTemplate()->IsWeapon())
- return;
-
- player->CastSpell(targetItem, SPELL_SHAMAN_FLAMETONGUE_WEAPON_ENCHANT, true);
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_sha_flametongue_weapon::HandleEffectHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY);
- }
-};
-
-// 319778 - Flametongue - SPELL_SHAMAN_FLAMETONGUE_WEAPON_AURA
-class spell_sha_flametongue_weapon_aura : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_FLAMETONGUE_ATTACK });
- }
-
- void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
-
- Unit* attacker = eventInfo.GetActor();
- CastSpellExtraArgs args(aurEff);
- args.AddSpellMod(SPELLVALUE_BASE_POINT0, std::max(1, int32(attacker->GetTotalAttackPowerValue(BASE_ATTACK) * 0.0264f)));
- attacker->CastSpell(eventInfo.GetActionTarget(), SPELL_SHAMAN_FLAMETONGUE_ATTACK, args);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_sha_flametongue_weapon_aura::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
// 73920 - Healing Rain (Aura)
class spell_sha_healing_rain_aura : public AuraScript
{
@@ -892,26 +381,6 @@ class spell_sha_healing_stream_totem_heal : public SpellScript
}
};
-// 210714 - Icefury
-class spell_sha_icefury : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_FROST_SHOCK_ENERGIZE });
- }
-
- void HandleEffectProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
- {
- if (Unit* caster = GetCaster())
- caster->CastSpell(caster, SPELL_SHAMAN_FROST_SHOCK_ENERGIZE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_sha_icefury::HandleEffectProc, EFFECT_1, SPELL_AURA_ADD_PCT_MODIFIER);
- }
-};
-
// 23551 - Lightning Shield T2 Bonus
class spell_sha_item_lightning_shield : public AuraScript
{
@@ -1064,22 +533,6 @@ class spell_sha_item_t10_elemental_2p_bonus : public AuraScript
}
};
-// 189063 - Lightning Vortex (proc 185881 Item - Shaman T18 Elemental 4P Bonus)
-class spell_sha_item_t18_elemental_4p_bonus : public AuraScript
-{
- void DiminishHaste(AuraEffect const* aurEff)
- {
- PreventDefaultAction();
- if (AuraEffect* hasteBuff = GetEffect(EFFECT_0))
- hasteBuff->ChangeAmount(hasteBuff->GetAmount() - aurEff->GetAmount());
- }
-
- void Register() override
- {
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_item_t18_elemental_4p_bonus::DiminishHaste, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
- }
-};
-
// 51505 - Lava burst
class spell_sha_lava_burst : public SpellScript
{
@@ -1119,33 +572,6 @@ class spell_sha_lava_burst : public SpellScript
}
};
-// 285452 - Lava Burst damage
-// 285466 - Lava Burst Overload damage
-class spell_sha_lava_crit_chance : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_FLAME_SHOCK });
- }
-
- void CalcCritChance(Unit const* victim, float& chance)
- {
- Unit* caster = GetCaster();
-
- if (!caster || !victim)
- return;
-
- if (victim->HasAura(SPELL_SHAMAN_FLAME_SHOCK, caster->GetGUID()))
- if (victim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE) > -100)
- chance = 100.f;
- }
-
- void Register() override
- {
- OnCalcCritChance += SpellOnCalcCritChanceFn(spell_sha_lava_crit_chance::CalcCritChance);
- }
-};
-
// 77756 - Lava Surge
class spell_sha_lava_surge : public AuraScript
{
@@ -1200,28 +626,6 @@ class spell_sha_lava_surge_proc : public SpellScript
}
};
-// 188196 - Lightning Bolt
-class spell_sha_lightning_bolt : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_LIGHTNING_BOLT_ENERGIZE, SPELL_SHAMAN_MAELSTROM_CONTROLLER })
- && ValidateSpellEffect({ { SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_0 } });
- }
-
- void HandleScript(SpellEffIndex /*effIndex*/)
- {
- if (AuraEffect const* energizeAmount = GetCaster()->GetAuraEffect(SPELL_SHAMAN_MAELSTROM_CONTROLLER, EFFECT_0))
- GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_LIGHTNING_BOLT_ENERGIZE, CastSpellExtraArgs(energizeAmount)
- .AddSpellMod(SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount()));
- }
-
- void Register() override
- {
- OnEffectLaunch += SpellEffectFn(spell_sha_lightning_bolt::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
- }
-};
-
// 45284 - Lightning Bolt Overload
class spell_sha_lightning_bolt_overload : public SpellScript
{
@@ -1244,133 +648,8 @@ class spell_sha_lightning_bolt_overload : public SpellScript
}
};
-// 192223 - Liquid Magma Totem (erupting hit spell)
-class spell_sha_liquid_magma_totem : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_LIQUID_MAGMA_HIT });
- }
-
- void HandleEffectHitTarget(SpellEffIndex /*effIndex*/)
- {
- if (Unit* hitUnit = GetHitUnit())
- GetCaster()->CastSpell(hitUnit, SPELL_SHAMAN_LIQUID_MAGMA_HIT, true);
- }
-
- void HandleTargetSelect(std::list<WorldObject*>& targets)
- {
- // choose one random target from targets
- if (targets.size() > 1)
- {
- WorldObject* selected = Trinity::Containers::SelectRandomContainerElement(targets);
- targets.clear();
- targets.push_back(selected);
- }
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_liquid_magma_totem::HandleTargetSelect, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
- OnEffectHitTarget += SpellEffectFn(spell_sha_liquid_magma_totem::HandleEffectHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY);
- }
-};
-
-// 168534 - Mastery: Elemental Overload (passive)
-class spell_sha_mastery_elemental_overload : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo
- ({
- SPELL_SHAMAN_LIGHTNING_BOLT,
- SPELL_SHAMAN_LIGHTNING_BOLT_OVERLOAD,
- SPELL_SHAMAN_ELEMENTAL_BLAST,
- SPELL_SHAMAN_ELEMENTAL_BLAST_OVERLOAD,
- SPELL_SHAMAN_ICEFURY,
- SPELL_SHAMAN_ICEFURY_OVERLOAD,
- SPELL_SHAMAN_LAVA_BURST,
- SPELL_SHAMAN_LAVA_BURST_OVERLOAD,
- SPELL_SHAMAN_CHAIN_LIGHTNING,
- SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD,
- SPELL_SHAMAN_LAVA_BEAM,
- SPELL_SHAMAN_LAVA_BEAM_OVERLOAD,
- SPELL_SHAMAN_STORMKEEPER
- });
- }
-
- bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- SpellInfo const* spellInfo = eventInfo.GetSpellInfo();
- if (!spellInfo || !eventInfo.GetProcSpell())
- return false;
-
- if (!GetTriggeredSpellId(spellInfo->Id))
- return false;
-
- float chance = aurEff->GetAmount(); // Mastery % amount
-
- if (spellInfo->Id == SPELL_SHAMAN_CHAIN_LIGHTNING)
- chance /= 3.0f;
-
- if (Aura* stormkeeper = eventInfo.GetActor()->GetAura(SPELL_SHAMAN_STORMKEEPER))
- if (eventInfo.GetProcSpell()->m_appliedMods.find(stormkeeper) != eventInfo.GetProcSpell()->m_appliedMods.end())
- chance = 100.0f;
-
- return roll_chance_f(chance);
- }
-
- void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
- {
- PreventDefaultAction();
-
- Unit* caster = procInfo.GetActor();
-
- caster->m_Events.AddEventAtOffset([caster,
- targets = CastSpellTargetArg(procInfo.GetProcTarget()),
- overloadSpellId = GetTriggeredSpellId(procInfo.GetSpellInfo()->Id),
- originalCastId = procInfo.GetProcSpell()->m_castId]() mutable
- {
- if (!targets.Targets)
- return;
-
- targets.Targets->Update(caster);
-
- CastSpellExtraArgs args;
- args.OriginalCastId = originalCastId;
- caster->CastSpell(targets, overloadSpellId, args);
- }, 400ms);
- }
-
- void Register() override
- {
- DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_mastery_elemental_overload::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_sha_mastery_elemental_overload::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-
- uint32 GetTriggeredSpellId(uint32 triggeringSpellId)
- {
- switch (triggeringSpellId)
- {
- case SPELL_SHAMAN_LIGHTNING_BOLT: return SPELL_SHAMAN_LIGHTNING_BOLT_OVERLOAD;
- case SPELL_SHAMAN_ELEMENTAL_BLAST: return SPELL_SHAMAN_ELEMENTAL_BLAST_OVERLOAD;
- case SPELL_SHAMAN_ICEFURY: return SPELL_SHAMAN_ICEFURY_OVERLOAD;
- case SPELL_SHAMAN_LAVA_BURST: return SPELL_SHAMAN_LAVA_BURST_OVERLOAD;
- case SPELL_SHAMAN_CHAIN_LIGHTNING: return SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD;
- case SPELL_SHAMAN_LAVA_BEAM: return SPELL_SHAMAN_LAVA_BEAM_OVERLOAD;
- default:
- break;
- }
- return 0;
- }
-};
-
// 45284 - Lightning Bolt Overload
// 45297 - Chain Lightning Overload
-// 114738 - Lava Beam Overload
-// 120588 - Elemental Blast Overload
-// 219271 - Icefury Overload
-// 285466 - Lava Burst Overload
class spell_sha_mastery_elemental_overload_proc : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
@@ -1404,72 +683,7 @@ class spell_sha_natures_guardian : public AuraScript
}
};
-// 210621 - Path of Flames Spread
-class spell_sha_path_of_flames_spread : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_FLAME_SHOCK });
- }
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove(GetExplTargetUnit());
- Trinity::Containers::RandomResize(targets, [this](WorldObject* target)
- {
- return target->GetTypeId() == TYPEID_UNIT && !target->ToUnit()->HasAura(SPELL_SHAMAN_FLAME_SHOCK, GetCaster()->GetGUID());
- }, 1);
- }
-
- void HandleScript(SpellEffIndex /*effIndex*/)
- {
- if (Unit* mainTarget = GetExplTargetUnit())
- {
- if (Aura* flameShock = mainTarget->GetAura(SPELL_SHAMAN_FLAME_SHOCK, GetCaster()->GetGUID()))
- {
- if (Aura* newAura = GetCaster()->AddAura(SPELL_SHAMAN_FLAME_SHOCK, GetHitUnit()))
- {
- newAura->SetDuration(flameShock->GetDuration());
- newAura->SetMaxDuration(flameShock->GetDuration());
- }
- }
- }
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_path_of_flames_spread::FilterTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ENEMY);
- OnEffectHitTarget += SpellEffectFn(spell_sha_path_of_flames_spread::HandleScript, EFFECT_1, SPELL_EFFECT_DUMMY);
- }
-};
-
-// 114083 - Restorative Mists
-// 294020 - Restorative Mists
-class spell_sha_restorative_mists : public SpellScript
-{
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- _targetCount = uint32(targets.size());
- }
-
- void HandleHeal(SpellEffIndex /*effIndex*/)
- {
- if (_targetCount)
- SetHitHeal(GetHitHeal() / _targetCount);
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_restorative_mists::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY);
- OnEffectHitTarget += SpellEffectFn(spell_sha_restorative_mists::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL);
- }
-
-private:
- uint32 _targetCount = 0;
-};
-
// 2645 - Ghost Wolf
-// 260878 - Spirit Wolf
class spell_sha_spirit_wolf : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
@@ -1733,54 +947,6 @@ class spell_sha_t10_restoration_4p_bonus : public AuraScript
}
};
-// 260895 - Unlimited Power
-class spell_sha_unlimited_power : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_UNLIMITED_POWER_BUFF });
- }
-
- void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& procInfo)
- {
- Unit* caster = procInfo.GetActor();
- if (Aura* aura = caster->GetAura(SPELL_SHAMAN_UNLIMITED_POWER_BUFF))
- aura->SetStackAmount(aura->GetStackAmount() + 1);
- else
- caster->CastSpell(caster, SPELL_SHAMAN_UNLIMITED_POWER_BUFF, procInfo.GetProcSpell());
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_sha_unlimited_power::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
-// 200071 - Undulation
-class spell_sha_undulation_passive : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_UNDULATION_PROC });
- }
-
- void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
- {
- if (++_castCounter == 3)
- {
- GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_UNDULATION_PROC, true);
- _castCounter = 0;
- }
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_sha_undulation_passive::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-
- uint8 _castCounter = 1; // first proc happens after two casts, then one every 3 casts
-};
-
// 33757 - Windfury Weapon
class spell_sha_windfury_weapon : public SpellScript
{
@@ -1808,56 +974,6 @@ class spell_sha_windfury_weapon : public SpellScript
}
};
-// 319773 - Windfury Weapon (proc)
-class spell_sha_windfury_weapon_proc : public AuraScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_WINDFURY_ATTACK });
- }
-
- void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
-
- for (uint32 i = 0; i < 2; ++i)
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_SHAMAN_WINDFURY_ATTACK, aurEff);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_sha_windfury_weapon_proc::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
-};
-
-// 378269 - Windspeaker's Lava Resurgence
-class spell_sha_windspeakers_lava_resurgence : public SpellScript
-{
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_SHAMAN_VOLCANIC_SURGE });
- }
-
- void PreventLavaSurge(SpellEffIndex effIndex)
- {
- if (GetCaster()->HasAura(SPELL_SHAMAN_VOLCANIC_SURGE))
- PreventHitDefaultEffect(effIndex);
- }
-
- void PreventVolcanicSurge(SpellEffIndex effIndex)
- {
- if (!GetCaster()->HasAura(SPELL_SHAMAN_VOLCANIC_SURGE))
- PreventHitDefaultEffect(effIndex);
- }
-
- void Register() override
- {
- OnEffectLaunch += SpellEffectFn(spell_sha_windspeakers_lava_resurgence::PreventLavaSurge, EFFECT_1, SPELL_EFFECT_TRIGGER_SPELL);
- OnEffectLaunch += SpellEffectFn(spell_sha_windspeakers_lava_resurgence::PreventVolcanicSurge, EFFECT_2, SPELL_EFFECT_TRIGGER_SPELL);
- }
-};
-
-// 192078 - Wind Rush Totem (Spell)
// 12676 - AreaTriggerId
struct areatrigger_sha_wind_rush_totem : AreaTriggerAI
{
@@ -1903,48 +1019,25 @@ private:
void AddSC_shaman_spell_scripts()
{
- RegisterSpellScript(spell_sha_aftershock);
- RegisterSpellScript(spell_sha_ancestral_guidance);
- RegisterSpellScript(spell_sha_ancestral_guidance_heal);
- RegisterSpellScript(spell_sha_ascendance_restoration);
- RegisterSpellScript(spell_sha_chain_lightning);
RegisterSpellScript(spell_sha_chain_lightning_overload);
- RegisterSpellScript(spell_sha_crash_lightning);
- RegisterSpellScript(spell_sha_deeply_rooted_elements);
- RegisterSpellScript(spell_sha_doom_winds_legendary);
- RegisterSpellScript(spell_sha_downpour);
- RegisterSpellScript(spell_sha_earth_shield);
RegisterSpellScript(spell_sha_earth_shock);
- RegisterSpellScript(spell_sha_earthen_rage_passive);
- RegisterSpellScript(spell_sha_earthen_rage_proc_aura);
RegisterAreaTriggerAI(areatrigger_sha_earthquake);
RegisterSpellScript(spell_sha_earthquake);
RegisterSpellScript(spell_sha_earthquake_tick);
- RegisterSpellScript(spell_sha_elemental_blast);
- RegisterSpellScript(spell_sha_flametongue_weapon);
- RegisterSpellScript(spell_sha_flametongue_weapon_aura);
RegisterSpellAndAuraScriptPair(spell_sha_healing_rain, spell_sha_healing_rain_aura);
RegisterSpellScript(spell_sha_healing_rain_target_limit);
RegisterSpellScript(spell_sha_healing_stream_totem_heal);
- RegisterSpellScript(spell_sha_icefury);
RegisterSpellScript(spell_sha_item_lightning_shield);
RegisterSpellScript(spell_sha_item_lightning_shield_trigger);
RegisterSpellScript(spell_sha_item_mana_surge);
RegisterSpellScript(spell_sha_item_t6_trinket);
RegisterSpellScript(spell_sha_item_t10_elemental_2p_bonus);
- RegisterSpellScript(spell_sha_item_t18_elemental_4p_bonus);
RegisterSpellScript(spell_sha_lava_burst);
- RegisterSpellScript(spell_sha_lava_crit_chance);
RegisterSpellScript(spell_sha_lava_surge);
RegisterSpellScript(spell_sha_lava_surge_proc);
- RegisterSpellScript(spell_sha_lightning_bolt);
RegisterSpellScript(spell_sha_lightning_bolt_overload);
- RegisterSpellScript(spell_sha_liquid_magma_totem);
- RegisterSpellScript(spell_sha_mastery_elemental_overload);
RegisterSpellScript(spell_sha_mastery_elemental_overload_proc);
RegisterSpellScript(spell_sha_natures_guardian);
- RegisterSpellScript(spell_sha_path_of_flames_spread);
- RegisterSpellScript(spell_sha_restorative_mists);
RegisterSpellScript(spell_sha_spirit_wolf);
RegisterSpellScript(spell_sha_tidal_waves);
RegisterSpellScript(spell_sha_t3_6p_bonus);
@@ -1953,10 +1046,6 @@ void AddSC_shaman_spell_scripts()
RegisterSpellScript(spell_sha_t9_elemental_4p_bonus);
RegisterSpellScript(spell_sha_t10_elemental_4p_bonus);
RegisterSpellScript(spell_sha_t10_restoration_4p_bonus);
- RegisterSpellScript(spell_sha_unlimited_power);
- RegisterSpellScript(spell_sha_undulation_passive);
RegisterSpellScript(spell_sha_windfury_weapon);
- RegisterSpellScript(spell_sha_windfury_weapon_proc);
- RegisterSpellScript(spell_sha_windspeakers_lava_resurgence);
RegisterAreaTriggerAI(areatrigger_sha_wind_rush_totem);
}