aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp245
1 files changed, 101 insertions, 144 deletions
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index 4094e99b187..a5ba07e3ccc 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -1030,66 +1030,50 @@ public:
};
// 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") { }
+ PrepareSpellScript(spell_dru_savage_roar);
- class spell_dru_savage_roar_SpellScript : public SpellScript
+ SpellCastResult CheckCast()
{
- PrepareSpellScript(spell_dru_savage_roar_SpellScript);
-
- SpellCastResult CheckCast()
- {
- Unit* caster = GetCaster();
- if (caster->GetShapeshiftForm() != FORM_CAT_FORM)
- return SPELL_FAILED_ONLY_SHAPESHIFT;
-
- return SPELL_CAST_OK;
- }
+ Unit* caster = GetCaster();
+ if (caster->GetShapeshiftForm() != FORM_CAT_FORM)
+ return SPELL_FAILED_ONLY_SHAPESHIFT;
- void Register() override
- {
- OnCheckCast += SpellCheckCastFn(spell_dru_savage_roar_SpellScript::CheckCast);
- }
- };
+ return SPELL_CAST_OK;
+ }
- class spell_dru_savage_roar_AuraScript : public AuraScript
+ void Register() override
{
- PrepareAuraScript(spell_dru_savage_roar_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_DRUID_SAVAGE_ROAR });
- }
+ OnCheckCast += SpellCheckCastFn(spell_dru_savage_roar::CheckCast);
+ }
+};
- void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- Unit* target = GetTarget();
- target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, CastSpellExtraArgs(aurEff)
- .SetOriginalCaster(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, CastSpellExtraArgs(aurEff)
+ .SetOriginalCaster(GetCasterGUID()));
+ }
- SpellScript* GetSpellScript() const override
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- return new spell_dru_savage_roar_SpellScript();
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SAVAGE_ROAR);
}
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_savage_roar_AuraScript();
+ 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);
}
};
@@ -1251,43 +1235,32 @@ public:
};
// 61336 - Survival Instincts
-class spell_dru_survival_instincts : public SpellScriptLoader
+class spell_dru_survival_instincts : public AuraScript
{
-public:
- spell_dru_survival_instincts() : SpellScriptLoader("spell_dru_survival_instincts") { }
+ PrepareAuraScript(spell_dru_survival_instincts);
- class spell_dru_survival_instincts_AuraScript : public AuraScript
+ bool Validate(SpellInfo const* /*spell*/) override
{
- PrepareAuraScript(spell_dru_survival_instincts_AuraScript);
-
- bool Validate(SpellInfo const* /*spell*/) override
- {
- return ValidateSpellInfo({ SPELL_DRUID_SURVIVAL_INSTINCTS });
- }
-
- void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- Unit* target = GetTarget();
- CastSpellExtraArgs args(aurEff);
- args.AddSpellMod(SPELLVALUE_BASE_POINT0, target->CountPctFromMaxHealth(aurEff->GetAmount()));
- target->CastSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, args);
- }
+ return ValidateSpellInfo({ SPELL_DRUID_SURVIVAL_INSTINCTS });
+ }
- void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS);
- }
+ void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ CastSpellExtraArgs args(aurEff);
+ args.AddSpellMod(SPELLVALUE_BASE_POINT0, target->CountPctFromMaxHealth(aurEff->GetAmount()));
+ target->CastSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, args);
+ }
- 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 AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS);
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_survival_instincts_AuraScript();
+ AfterEffectApply += AuraEffectApplyFn(spell_dru_survival_instincts::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dru_survival_instincts::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
}
};
@@ -1852,93 +1825,77 @@ class spell_dru_tiger_dash_aura : public AuraScript
};
// 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") { }
+ PrepareSpellScript(spell_dru_wild_growth);
- class spell_dru_wild_growth_SpellScript : public SpellScript
+ bool Validate(SpellInfo const* spellInfo) override
{
- PrepareSpellScript(spell_dru_wild_growth_SpellScript);
-
- bool Validate(SpellInfo const* spellInfo) override
- {
- if (spellInfo->GetEffects().size() <= EFFECT_2 || spellInfo->GetEffect(EFFECT_2).IsEffect() || spellInfo->GetEffect(EFFECT_2).CalcValue() <= 0)
- return false;
- return true;
- }
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if(RaidCheck(GetCaster()));
-
- uint32 const maxTargets = uint32(GetEffectInfo(EFFECT_2).CalcValue(GetCaster()));
+ if (spellInfo->GetEffects().size() <= EFFECT_2 || spellInfo->GetEffect(EFFECT_2).IsEffect() || spellInfo->GetEffect(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(GetEffectInfo(EFFECT_2).CalcValue(GetCaster()));
- void SetTargets(std::list<WorldObject*>& targets)
+ if (targets.size() > maxTargets)
{
- targets = _targets;
+ 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
+ void Register() override
{
- PrepareAuraScript(spell_dru_wild_growth_AuraScript);
+ 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 HandleTickUpdate(AuraEffect* aurEff)
- {
- Unit* caster = GetCaster();
- if (!caster)
- return;
+class spell_dru_wild_growth_aura : public AuraScript
+{
+ PrepareAuraScript(spell_dru_wild_growth_aura);
- // calculate from base damage, not from aurEff->GetAmount() (already modified)
- float damage = caster->CalculateSpellDamage(GetUnitOwner(), aurEff->GetSpellEffectInfo());
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DRUID_RESTORATION_T10_2P_BONUS });
+ }
- // Wild Growth = first tick gains a 6% bonus, reduced by 2% each tick
- float reduction = 2.f;
- if (AuraEffect* bonus = caster->GetAuraEffect(SPELL_DRUID_RESTORATION_T10_2P_BONUS, EFFECT_0))
- reduction -= CalculatePct(reduction, bonus->GetAmount());
- reduction *= (aurEff->GetTickNumber() - 1);
+ void HandleTickUpdate(AuraEffect* aurEff)
+ {
+ Unit* caster = GetCaster();
+ if (!caster)
+ return;
- AddPct(damage, 6.f - reduction);
- aurEff->SetAmount(int32(damage));
- }
+ // calculate from base damage, not from aurEff->GetAmount() (already modified)
+ float damage = caster->CalculateSpellDamage(GetUnitOwner(), aurEff->GetSpellEffectInfo());
- void Register() override
- {
- OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_dru_wild_growth_AuraScript::HandleTickUpdate, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
- }
- };
+ // Wild Growth = first tick gains a 6% bonus, reduced by 2% each tick
+ float reduction = 2.f;
+ if (AuraEffect* bonus = caster->GetAuraEffect(SPELL_DRUID_RESTORATION_T10_2P_BONUS, EFFECT_0))
+ reduction -= CalculatePct(reduction, bonus->GetAmount());
+ reduction *= (aurEff->GetTickNumber() - 1);
- SpellScript* GetSpellScript() const override
- {
- return new spell_dru_wild_growth_SpellScript();
+ AddPct(damage, 6.f - reduction);
+ aurEff->SetAmount(int32(damage));
}
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_wild_growth_AuraScript();
+ OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_dru_wild_growth_aura::HandleTickUpdate, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
}
};
@@ -1971,13 +1928,13 @@ void AddSC_druid_spell_scripts()
new spell_dru_predatory_strikes();
RegisterSpellScript(spell_dru_prowl);
new spell_dru_rip();
- new spell_dru_savage_roar();
+ RegisterSpellAndAuraScriptPair(spell_dru_savage_roar, spell_dru_savage_roar_aura);
RegisterSpellScript(spell_dru_skull_bash);
new spell_dru_stampede();
RegisterSpellScript(spell_dru_stampeding_roar);
new spell_dru_starfall_dummy();
new spell_dru_sunfire();
- new spell_dru_survival_instincts();
+ RegisterAuraScript(spell_dru_survival_instincts);
new spell_dru_swift_flight_passive();
new spell_dru_t3_6p_bonus();
new spell_dru_t3_8p_bonus();
@@ -1990,5 +1947,5 @@ void AddSC_druid_spell_scripts()
new spell_dru_travel_form();
new spell_dru_travel_form_dummy();
RegisterSpellAndAuraScriptPair(spell_dru_tiger_dash, spell_dru_tiger_dash_aura);
- new spell_dru_wild_growth();
+ RegisterSpellAndAuraScriptPair(spell_dru_wild_growth, spell_dru_wild_growth_aura);
}