aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp320
1 files changed, 136 insertions, 184 deletions
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index c26f9dadc17..7d8451a1331 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -1250,66 +1250,50 @@ class spell_dru_savage_defense : public SpellScriptLoader
};
// 52610 - Savage Roar
-class spell_dru_savage_roar : public SpellScriptLoader
+class spell_dru_savage_roar : public SpellScript
{
- public:
- spell_dru_savage_roar() : SpellScriptLoader("spell_dru_savage_roar") { }
-
- class spell_dru_savage_roar_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_dru_savage_roar_SpellScript);
-
- SpellCastResult CheckCast()
- {
- Unit* caster = GetCaster();
- if (caster->GetShapeshiftForm() != FORM_CAT)
- return SPELL_FAILED_ONLY_SHAPESHIFT;
+ PrepareSpellScript(spell_dru_savage_roar);
- return SPELL_CAST_OK;
- }
-
- void Register() override
- {
- OnCheckCast += SpellCheckCastFn(spell_dru_savage_roar_SpellScript::CheckCast);
- }
- };
+ SpellCastResult CheckCast()
+ {
+ Unit* caster = GetCaster();
+ if (caster->GetShapeshiftForm() != FORM_CAT)
+ return SPELL_FAILED_ONLY_SHAPESHIFT;
- class spell_dru_savage_roar_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_savage_roar_AuraScript);
+ return SPELL_CAST_OK;
+ }
- bool Validate(SpellInfo const* /*spell*/) override
- {
- return ValidateSpellInfo({ SPELL_DRUID_SAVAGE_ROAR });
- }
+ void Register() override
+ {
+ OnCheckCast += SpellCheckCastFn(spell_dru_savage_roar::CheckCast);
+ }
+};
- void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- Unit* target = GetTarget();
- target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, { aurEff, GetCasterGUID() });
- }
+class spell_dru_savage_roar_aura : public AuraScript
+{
+ PrepareAuraScript(spell_dru_savage_roar_aura);
- void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SAVAGE_ROAR);
- }
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DRUID_SAVAGE_ROAR });
+ }
- void Register() override
- {
- AfterEffectApply += AuraEffectApplyFn(spell_dru_savage_roar_AuraScript::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
- AfterEffectRemove += AuraEffectRemoveFn(spell_dru_savage_roar_AuraScript::AfterRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
- }
- };
+ void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, { aurEff, GetCasterGUID() });
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_dru_savage_roar_SpellScript();
- }
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SAVAGE_ROAR);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_dru_savage_roar_AuraScript();
- }
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_dru_savage_roar_aura::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dru_savage_roar_aura::AfterRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
};
// -50294 - Starfall (AOE)
@@ -1386,68 +1370,52 @@ class spell_dru_starfall_dummy : public SpellScriptLoader
};
// 61336 - Survival Instincts
-class spell_dru_survival_instincts : public SpellScriptLoader
+class spell_dru_survival_instincts : public SpellScript
{
- public:
- spell_dru_survival_instincts() : SpellScriptLoader("spell_dru_survival_instincts") { }
-
- class spell_dru_survival_instincts_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_dru_survival_instincts_SpellScript);
+ PrepareSpellScript(spell_dru_survival_instincts);
- SpellCastResult CheckCast()
- {
- Unit* caster = GetCaster();
- if (!caster->IsInFeralForm())
- return SPELL_FAILED_ONLY_SHAPESHIFT;
-
- return SPELL_CAST_OK;
- }
-
- void Register() override
- {
- OnCheckCast += SpellCheckCastFn(spell_dru_survival_instincts_SpellScript::CheckCast);
- }
- };
+ SpellCastResult CheckCast()
+ {
+ Unit* caster = GetCaster();
+ if (!caster->IsInFeralForm())
+ return SPELL_FAILED_ONLY_SHAPESHIFT;
- class spell_dru_survival_instincts_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_survival_instincts_AuraScript);
+ return SPELL_CAST_OK;
+ }
- bool Validate(SpellInfo const* /*spell*/) override
- {
- return ValidateSpellInfo({ SPELL_DRUID_SURVIVAL_INSTINCTS });
- }
+ void Register() override
+ {
+ OnCheckCast += SpellCheckCastFn(spell_dru_survival_instincts::CheckCast);
+ }
+};
- void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- Unit* target = GetTarget();
- CastSpellExtraArgs args(aurEff);
- args.AddSpellBP0(target->CountPctFromMaxHealth(aurEff->GetAmount()));
- target->CastSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, args);
- }
+class spell_dru_survival_instincts_aura : public AuraScript
+{
+ PrepareAuraScript(spell_dru_survival_instincts_aura);
- void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS);
- }
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DRUID_SURVIVAL_INSTINCTS });
+ }
- void Register() override
- {
- AfterEffectApply += AuraEffectApplyFn(spell_dru_survival_instincts_AuraScript::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
- AfterEffectRemove += AuraEffectRemoveFn(spell_dru_survival_instincts_AuraScript::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
- }
- };
+ void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellBP0(target->CountPctFromMaxHealth(aurEff->GetAmount()));
+ target->CastSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, args);
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_dru_survival_instincts_SpellScript();
- }
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_dru_survival_instincts_AuraScript();
- }
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_dru_survival_instincts_aura::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dru_survival_instincts_aura::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
+ }
};
// 40121 - Swift Flight Form (Passive)
@@ -2031,99 +1999,83 @@ class RaidCheck
};
// -48438 - Wild Growth
-class spell_dru_wild_growth : public SpellScriptLoader
+class spell_dru_wild_growth : public SpellScript
{
- public:
- spell_dru_wild_growth() : SpellScriptLoader("spell_dru_wild_growth") { }
-
- class spell_dru_wild_growth_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_dru_wild_growth_SpellScript);
+ PrepareSpellScript(spell_dru_wild_growth);
- bool Validate(SpellInfo const* spellInfo) override
- {
- if (spellInfo->Effects[EFFECT_2].IsEffect() || spellInfo->Effects[EFFECT_2].CalcValue() <= 0)
- return false;
- return true;
- }
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if(RaidCheck(GetCaster()));
-
- uint32 const maxTargets = uint32(GetSpellInfo()->Effects[EFFECT_2].CalcValue(GetCaster()));
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ if (spellInfo->Effects[EFFECT_2].IsEffect() || spellInfo->Effects[EFFECT_2].CalcValue() <= 0)
+ return false;
+ return true;
+ }
- if (targets.size() > maxTargets)
- {
- targets.sort(Trinity::HealthPctOrderPred());
- targets.resize(maxTargets);
- }
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ targets.remove_if(RaidCheck(GetCaster()));
- _targets = targets;
- }
+ uint32 const maxTargets = uint32(GetSpellInfo()->Effects[EFFECT_2].CalcValue(GetCaster()));
- void SetTargets(std::list<WorldObject*>& targets)
- {
- targets = _targets;
- }
+ if (targets.size() > maxTargets)
+ {
+ targets.sort(Trinity::HealthPctOrderPred());
+ targets.resize(maxTargets);
+ }
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_wild_growth_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_wild_growth_SpellScript::SetTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ALLY);
- }
+ _targets = targets;
+ }
- std::list<WorldObject*> _targets;
- };
+ void SetTargets(std::list<WorldObject*>& targets)
+ {
+ targets = _targets;
+ }
- class spell_dru_wild_growth_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_wild_growth_AuraScript);
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_wild_growth::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_wild_growth::SetTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ALLY);
+ }
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_DRUID_RESTORATION_T10_2P_BONUS });
- }
+ std::list<WorldObject*> _targets;
+};
- void SetTickHeal(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
- {
- // includes caster bonuses already
- _baseTick = amount;
- if (Unit* caster = GetCaster())
- if (AuraEffect const* bonus = caster->GetAuraEffect(SPELL_DRUID_RESTORATION_T10_2P_BONUS, EFFECT_0))
- AddPct(_baseReduction, -bonus->GetAmount());
- }
+class spell_dru_wild_growth_aura : public AuraScript
+{
+ PrepareAuraScript(spell_dru_wild_growth_aura);
- void HandleTickUpdate(AuraEffect* aurEff)
- {
- // Wild Growth = first tick gains a 6% bonus, reduced by 2% each tick
- float reduction = _baseReduction;
- reduction *= (aurEff->GetTickNumber() - 1);
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DRUID_RESTORATION_T10_2P_BONUS });
+ }
- float const bonus = 6.f - reduction;
- int32 const amount = int32(_baseTick + CalculatePct(_baseTick, bonus));
- aurEff->SetAmount(amount);
- }
+ void SetTickHeal(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
+ {
+ // includes caster bonuses already
+ _baseTick = amount;
+ if (Unit* caster = GetCaster())
+ if (AuraEffect const* bonus = caster->GetAuraEffect(SPELL_DRUID_RESTORATION_T10_2P_BONUS, EFFECT_0))
+ AddPct(_baseReduction, -bonus->GetAmount());
+ }
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_wild_growth_AuraScript::SetTickHeal, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
- OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_dru_wild_growth_AuraScript::HandleTickUpdate, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
- }
+ void HandleTickUpdate(AuraEffect* aurEff)
+ {
+ // Wild Growth = first tick gains a 6% bonus, reduced by 2% each tick
+ float reduction = _baseReduction;
+ reduction *= (aurEff->GetTickNumber() - 1);
- float _baseTick = 0.f;
- float _baseReduction = 2.f;
- };
+ float const bonus = 6.f - reduction;
+ int32 const amount = int32(_baseTick + CalculatePct(_baseTick, bonus));
+ aurEff->SetAmount(amount);
+ }
- SpellScript* GetSpellScript() const override
- {
- return new spell_dru_wild_growth_SpellScript();
- }
+ void Register() override
+ {
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_wild_growth_aura::SetTickHeal, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
+ OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_dru_wild_growth_aura::HandleTickUpdate, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
+ }
- AuraScript* GetAuraScript() const override
- {
- return new spell_dru_wild_growth_AuraScript();
- }
+ float _baseTick = 0.f;
+ float _baseReduction = 2.f;
};
void AddSC_druid_spell_scripts()
@@ -2159,10 +2111,10 @@ void AddSC_druid_spell_scripts()
new spell_dru_revitalize();
new spell_dru_rip();
new spell_dru_savage_defense();
- new spell_dru_savage_roar();
+ RegisterSpellAndAuraScriptPair(spell_dru_savage_roar, spell_dru_savage_roar_aura);
new spell_dru_starfall_aoe();
new spell_dru_starfall_dummy();
- new spell_dru_survival_instincts();
+ RegisterSpellAndAuraScriptPair(spell_dru_survival_instincts, spell_dru_survival_instincts_aura);
new spell_dru_swift_flight_passive();
new spell_dru_tiger_s_fury();
new spell_dru_typhoon();
@@ -2175,5 +2127,5 @@ void AddSC_druid_spell_scripts()
new spell_dru_t10_balance_4p_bonus();
new spell_dru_t10_restoration_4p_bonus();
new spell_dru_t10_restoration_4p_bonus_dummy();
- new spell_dru_wild_growth();
+ RegisterSpellAndAuraScriptPair(spell_dru_wild_growth, spell_dru_wild_growth_aura);
}