aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2017_03_18_03_world.sql5
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp1515
2 files changed, 612 insertions, 908 deletions
diff --git a/sql/updates/world/master/2017_03_18_03_world.sql b/sql/updates/world/master/2017_03_18_03_world.sql
new file mode 100644
index 00000000000..28248359eca
--- /dev/null
+++ b/sql/updates/world/master/2017_03_18_03_world.sql
@@ -0,0 +1,5 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_eclipse_lunar','spell_dru_eclipse_solar','spell_dru_eclipse_energize','spell_dru_glyph_of_innervate','spell_dru_glyph_of_starfire','spell_dru_glyph_of_starfire_proc','spell_dru_insect_swarm','spell_dru_typhoon');
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dru_moonfire','spell_dru_sunfire');
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(8921,'spell_dru_moonfire'),
+(93402,'spell_dru_sunfire');
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index 1c030039c6b..37bafe3da48 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -30,15 +30,6 @@
enum DruidSpells
{
- SPELL_DRUID_WRATH = 5176,
- SPELL_DRUID_STARFIRE = 2912,
- SPELL_DRUID_STARSURGE = 78674,
- SPELL_DRUID_ECLIPSE_GENERAL_ENERGIZE = 89265,
- SPELL_DRUID_STARSURGE_ENERGIZE = 86605,
- SPELL_DRUID_LUNAR_ECLIPSE_MARKER = 67484, // Will make the yellow arrow on eclipse bar point to the blue side (lunar)
- SPELL_DRUID_SOLAR_ECLIPSE_MARKER = 67483, // Will make the yellow arrow on eclipse bar point to the yellow side (solar)
- SPELL_DRUID_SOLAR_ECLIPSE = 48517,
- SPELL_DRUID_LUNAR_ECLIPSE = 48518,
SPELL_DRUID_FERAL_CHARGE_BEAR = 16979,
SPELL_DRUID_FERAL_CHARGE_CAT = 49376,
SPELL_DRUID_FORMS_TRINKET_BEAR = 37340,
@@ -46,205 +37,79 @@ enum DruidSpells
SPELL_DRUID_FORMS_TRINKET_MOONKIN = 37343,
SPELL_DRUID_FORMS_TRINKET_NONE = 37344,
SPELL_DRUID_FORMS_TRINKET_TREE = 37342,
- SPELL_DRUID_GLYPH_OF_INNERVATE = 54833,
- SPELL_DRUID_GLYPH_OF_STARFIRE = 54846,
- SPELL_DRUID_GLYPH_OF_TYPHOON = 62135,
SPELL_DRUID_IDOL_OF_FERAL_SHADOWS = 34241,
SPELL_DRUID_IDOL_OF_WORSHIP = 60774,
- SPELL_DRUID_INCREASED_MOONFIRE_DURATION = 38414,
- SPELL_DRUID_ITEM_T8_BALANCE_RELIC = 64950,
SPELL_DRUID_LIFEBLOOM_ENERGIZE = 64372,
SPELL_DRUID_LIFEBLOOM_FINAL_HEAL = 33778,
SPELL_DRUID_LIVING_SEED_HEAL = 48503,
SPELL_DRUID_LIVING_SEED_PROC = 48504,
- SPELL_DRUID_NATURES_GRACE = 16880,
- SPELL_DRUID_NATURES_GRACE_TRIGGER = 16886,
- SPELL_DRUID_SURVIVAL_INSTINCTS = 50322,
+ SPELL_DRUID_MOONFIRE_DAMAGE = 164812,
SPELL_DRUID_SAVAGE_ROAR = 62071,
SPELL_DRUID_STAMPEDE_BAER_RANK_1 = 81016,
SPELL_DRUID_STAMPEDE_CAT_RANK_1 = 81021,
- SPELL_DRUID_STAMPEDE_CAT_STATE = 109881
+ SPELL_DRUID_STAMPEDE_CAT_STATE = 109881,
+ SPELL_DRUID_SUNFIRE_DAMAGE = 164815,
+ SPELL_DRUID_SURVIVAL_INSTINCTS = 50322
};
// 1850 - Dash
class spell_dru_dash : public SpellScriptLoader
{
- public:
- spell_dru_dash() : SpellScriptLoader("spell_dru_dash") { }
-
- class spell_dru_dash_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_dash_AuraScript);
-
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
- {
- // do not set speed if not in cat form
- if (GetUnitOwner()->GetShapeshiftForm() != FORM_CAT_FORM)
- amount = 0;
- }
+public:
+ spell_dru_dash() : SpellScriptLoader("spell_dru_dash") { }
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_dash_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_MOD_INCREASE_SPEED);
- }
- };
+ class spell_dru_dash_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_dash_AuraScript);
- AuraScript* GetAuraScript() const override
+ void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
{
- return new spell_dru_dash_AuraScript();
+ // do not set speed if not in cat form
+ if (GetUnitOwner()->GetShapeshiftForm() != FORM_CAT_FORM)
+ amount = 0;
}
-};
-
-// 48517 - Eclipse (Solar)
-// 48518 - Eclipse (Lunar)
-class spell_dru_eclipse : public SpellScriptLoader
-{
- public:
- spell_dru_eclipse(char const* scriptName) : SpellScriptLoader(scriptName) { }
-
- class spell_dru_eclipse_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_eclipse_AuraScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_NATURES_GRACE) ||
- !sSpellMgr->GetSpellInfo(SPELL_DRUID_NATURES_GRACE_TRIGGER))
- return false;
- return true;
- }
-
- bool Load() override
- {
- return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER;
- }
-
- void ApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- Unit* caster = GetCaster();
- if (!caster)
- return;
-
- if (caster->GetAuraOfRankedSpell(SPELL_DRUID_NATURES_GRACE))
- caster->GetSpellHistory()->ResetCooldown(SPELL_DRUID_NATURES_GRACE_TRIGGER, true);
- }
-
- void Register() override
- {
- OnEffectApply += AuraEffectApplyFn(spell_dru_eclipse_AuraScript::ApplyEffect, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, AURA_EFFECT_HANDLE_REAL);
- }
- };
-
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_eclipse_AuraScript();
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_dash_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_MOD_INCREASE_SPEED);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_dash_AuraScript();
+ }
};
-// 2912, 5176, 78674 - Starfire, Wrath, and Starsurge
-class spell_dru_eclipse_energize : public SpellScriptLoader
+// -33943 - Flight Form
+class spell_dru_flight_form : public SpellScriptLoader
{
- public:
- spell_dru_eclipse_energize() : SpellScriptLoader("spell_dru_eclipse_energize") { }
-
- class spell_dru_eclipse_energize_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_dru_eclipse_energize_SpellScript);
-
- bool Load() override
- {
- if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
- return false;
-
- if (GetCaster()->ToPlayer()->getClass() != CLASS_DRUID)
- return false;
-
- return true;
- }
-
- void HandleEnergize(SpellEffIndex /*effIndex*/)
- {
- Player* caster = GetCaster()->ToPlayer();
-
- // No boomy, no deal.
- if (caster->GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID) != TALENT_SPEC_DRUID_BALANCE)
- return;
+public:
+ spell_dru_flight_form() : SpellScriptLoader("spell_dru_flight_form") { }
- switch (GetSpellInfo()->Id)
- {
- case SPELL_DRUID_WRATH:
- {
- int32 energizeAmount = -GetEffectValue(); // -13
- // If we are set to fill the lunar side or we've just logged in with 0 power..
- if ((!caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER))
- || caster->GetPower(POWER_LUNAR_POWER) == 0)
- {
- caster->CastCustomSpell(caster, SPELL_DRUID_ECLIPSE_GENERAL_ENERGIZE, &energizeAmount, 0, 0, true);
- // If the energize was due to 0 power, cast the eclipse marker aura
- if (!caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER))
- caster->CastSpell(caster, SPELL_DRUID_LUNAR_ECLIPSE_MARKER, true);
- }
- // The energizing effect brought us out of the solar eclipse, remove the aura
- if (caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE) && caster->GetPower(POWER_LUNAR_POWER) <= 0)
- caster->RemoveAurasDueToSpell(SPELL_DRUID_SOLAR_ECLIPSE);
- break;
- }
- case SPELL_DRUID_STARFIRE:
- {
- int32 energizeAmount = GetEffectValue(); // 20
- // If we are set to fill the solar side or we've just logged in with 0 power..
- if ((!caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER))
- || caster->GetPower(POWER_LUNAR_POWER) == 0)
- {
- caster->CastCustomSpell(caster, SPELL_DRUID_ECLIPSE_GENERAL_ENERGIZE, &energizeAmount, 0, 0, true);
- // If the energize was due to 0 power, cast the eclipse marker aura
- if (!caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER))
- caster->CastSpell(caster, SPELL_DRUID_SOLAR_ECLIPSE_MARKER, true);
- }
- // The energizing effect brought us out of the lunar eclipse, remove the aura
- if (caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE) && caster->GetPower(POWER_LUNAR_POWER) >= 0)
- caster->RemoveAura(SPELL_DRUID_LUNAR_ECLIPSE);
- break;
- }
- case SPELL_DRUID_STARSURGE:
- {
- // If we are set to fill the solar side or we've just logged in with 0 power (confirmed with sniffs)
- if ((!caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER))
- || caster->GetPower(POWER_LUNAR_POWER) == 0)
- {
- int32 energizeAmount = GetEffectValue(); // 15
- caster->CastCustomSpell(caster, SPELL_DRUID_STARSURGE_ENERGIZE, &energizeAmount, 0, 0, true);
+ class spell_dru_flight_form_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_flight_form_SpellScript);
- // If the energize was due to 0 power, cast the eclipse marker aura
- if (!caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER))
- caster->CastSpell(caster, SPELL_DRUID_SOLAR_ECLIPSE_MARKER, true);
- }
- else if (!caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE_MARKER) && caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE_MARKER))
- {
- int32 energizeAmount = -GetEffectValue(); // -15
- caster->CastCustomSpell(caster, SPELL_DRUID_STARSURGE_ENERGIZE, &energizeAmount, 0, 0, true);
- }
- // The energizing effect brought us out of the lunar eclipse, remove the aura
- if (caster->HasAura(SPELL_DRUID_LUNAR_ECLIPSE) && caster->GetPower(POWER_LUNAR_POWER) >= 0)
- caster->RemoveAura(SPELL_DRUID_LUNAR_ECLIPSE);
- // The energizing effect brought us out of the solar eclipse, remove the aura
- else if (caster->HasAura(SPELL_DRUID_SOLAR_ECLIPSE) && caster->GetPower(POWER_LUNAR_POWER) <= 0)
- caster->RemoveAura(SPELL_DRUID_SOLAR_ECLIPSE);
- break;
- }
- }
- }
+ SpellCastResult CheckCast()
+ {
+ Unit* caster = GetCaster();
+ if (caster->IsInDisallowedMountForm())
+ return SPELL_FAILED_NOT_SHAPESHIFT;
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_dru_eclipse_energize_SpellScript::HandleEnergize, EFFECT_1, SPELL_EFFECT_DUMMY);
- }
- };
+ return SPELL_CAST_OK;
+ }
- SpellScript* GetSpellScript() const override
+ void Register() override
{
- return new spell_dru_eclipse_energize_SpellScript;
+ OnCheckCast += SpellCheckCastFn(spell_dru_flight_form_SpellScript::CheckCast);
}
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_flight_form_SpellScript();
+ }
};
// 37336 - Druid Forms Trinket
@@ -332,993 +197,827 @@ public:
}
};
-// 54832 - Glyph of Innervate
-class spell_dru_glyph_of_innervate : public SpellScriptLoader
-{
- public:
- spell_dru_glyph_of_innervate() : SpellScriptLoader("spell_dru_glyph_of_innervate") { }
-
- class spell_dru_glyph_of_innervate_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_glyph_of_innervate_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_GLYPH_OF_INNERVATE))
- return false;
- return true;
- }
-
- bool CheckProc(ProcEventInfo& eventInfo)
- {
- // Not proc from self Innervate
- return GetTarget() != eventInfo.GetProcTarget();
- }
-
- void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_DRUID_GLYPH_OF_INNERVATE, true, NULL, aurEff);
- }
-
- void Register() override
- {
- DoCheckProc += AuraCheckProcFn(spell_dru_glyph_of_innervate_AuraScript::CheckProc);
- OnEffectProc += AuraEffectProcFn(spell_dru_glyph_of_innervate_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
-
- AuraScript* GetAuraScript() const override
- {
- return new spell_dru_glyph_of_innervate_AuraScript();
- }
-};
-
-// 54846 - Glyph of Starfire
-class spell_dru_glyph_of_starfire : public SpellScriptLoader
-{
- public:
- spell_dru_glyph_of_starfire() : SpellScriptLoader("spell_dru_glyph_of_starfire") { }
-
- class spell_dru_glyph_of_starfire_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_dru_glyph_of_starfire_SpellScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_INCREASED_MOONFIRE_DURATION))
- return false;
- return true;
- }
-
- void HandleScriptEffect(SpellEffIndex /*effIndex*/)
- {
- Unit* caster = GetCaster();
- if (Unit* unitTarget = GetHitUnit())
- if (AuraEffect const* aurEff = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_DRUID, flag128(0x2, 0, 0), caster->GetGUID()))
- {
- Aura* aura = aurEff->GetBase();
-
- uint32 countMin = aura->GetMaxDuration();
- uint32 countMax = aura->GetSpellInfo()->GetMaxDuration() + 9000;
- if (caster->HasAura(SPELL_DRUID_INCREASED_MOONFIRE_DURATION))
- countMax += 3000;
-
- if (countMin < countMax)
- {
- aura->SetDuration(uint32(aura->GetDuration() + 3000));
- aura->SetMaxDuration(countMin + 3000);
- }
- }
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_dru_glyph_of_starfire_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
- }
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_dru_glyph_of_starfire_SpellScript();
- }
-};
-
-// 54845 - Glyph of Starfire
-class spell_dru_glyph_of_starfire_proc : public SpellScriptLoader
-{
- public:
- spell_dru_glyph_of_starfire_proc() : SpellScriptLoader("spell_dru_glyph_of_starfire_proc") { }
-
- class spell_dru_glyph_of_starfire_proc_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_glyph_of_starfire_proc_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_GLYPH_OF_STARFIRE))
- return false;
- return true;
- }
-
- void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_GLYPH_OF_STARFIRE, true, NULL, aurEff);
- }
-
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_dru_glyph_of_starfire_proc_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
-
- AuraScript* GetAuraScript() const override
- {
- return new spell_dru_glyph_of_starfire_proc_AuraScript();
- }
-};
-
// 34246 - Idol of the Emerald Queen
// 60779 - Idol of Lush Moss
class spell_dru_idol_lifebloom : public SpellScriptLoader
{
- public:
- spell_dru_idol_lifebloom() : SpellScriptLoader("spell_dru_idol_lifebloom") { }
-
- class spell_dru_idol_lifebloom_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_idol_lifebloom_AuraScript);
+public:
+ spell_dru_idol_lifebloom() : SpellScriptLoader("spell_dru_idol_lifebloom") { }
- void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod)
- {
- if (!spellMod)
- {
- spellMod = new SpellModifier(GetAura());
- spellMod->op = SPELLMOD_DOT;
- spellMod->type = SPELLMOD_FLAT;
- spellMod->spellId = GetId();
- spellMod->mask = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->SpellClassMask;
- }
- spellMod->value = aurEff->GetAmount() / 7;
- }
+ class spell_dru_idol_lifebloom_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_idol_lifebloom_AuraScript);
- void Register() override
+ void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod)
+ {
+ if (!spellMod)
{
- DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_dru_idol_lifebloom_AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY);
+ spellMod = new SpellModifier(GetAura());
+ spellMod->op = SPELLMOD_DOT;
+ spellMod->type = SPELLMOD_FLAT;
+ spellMod->spellId = GetId();
+ spellMod->mask = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->SpellClassMask;
}
- };
+ spellMod->value = aurEff->GetAmount() / 7;
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_idol_lifebloom_AuraScript();
+ DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_dru_idol_lifebloom_AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_idol_lifebloom_AuraScript();
+ }
};
// 29166 - Innervate
class spell_dru_innervate : public SpellScriptLoader
{
- public:
- spell_dru_innervate() : SpellScriptLoader("spell_dru_innervate") { }
-
- class spell_dru_innervate_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_innervate_AuraScript);
-
- void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)
- {
- if (Unit* caster = GetCaster())
- amount = int32(CalculatePct(caster->GetCreatePowers(POWER_MANA), amount) / aurEff->GetTotalTicks());
- else
- amount = 0;
- }
+public:
+ spell_dru_innervate() : SpellScriptLoader("spell_dru_innervate") { }
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_innervate_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_ENERGIZE);
- }
- };
+ class spell_dru_innervate_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_innervate_AuraScript);
- AuraScript* GetAuraScript() const override
+ void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)
{
- return new spell_dru_innervate_AuraScript();
+ if (Unit* caster = GetCaster())
+ amount = int32(CalculatePct(caster->GetCreatePowers(POWER_MANA), amount) / aurEff->GetTotalTicks());
+ else
+ amount = 0;
}
-};
-
-// 5570 - Insect Swarm
-class spell_dru_insect_swarm : public SpellScriptLoader
-{
- public:
- spell_dru_insect_swarm() : SpellScriptLoader("spell_dru_insect_swarm") { }
-
- class spell_dru_insect_swarm_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_insect_swarm_AuraScript);
- void CalculateAmount(AuraEffect const* aurEff, int32 & amount, bool & /*canBeRecalculated*/)
- {
- if (Unit* caster = GetCaster())
- if (AuraEffect const* relicAurEff = caster->GetAuraEffect(SPELL_DRUID_ITEM_T8_BALANCE_RELIC, EFFECT_0))
- amount += relicAurEff->GetAmount() / aurEff->GetTotalTicks();
- }
-
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_insect_swarm_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE);
- }
- };
-
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_insect_swarm_AuraScript();
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_innervate_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_ENERGIZE);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_innervate_AuraScript();
+ }
};
// 33763 - Lifebloom
class spell_dru_lifebloom : public SpellScriptLoader
{
- public:
- spell_dru_lifebloom() : SpellScriptLoader("spell_dru_lifebloom") { }
+public:
+ spell_dru_lifebloom() : SpellScriptLoader("spell_dru_lifebloom") { }
- class spell_dru_lifebloom_AuraScript : public AuraScript
+ class spell_dru_lifebloom_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_lifebloom_AuraScript);
+
+ bool Validate(SpellInfo const* /*spell*/) override
{
- PrepareAuraScript(spell_dru_lifebloom_AuraScript);
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_FINAL_HEAL))
+ return false;
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_ENERGIZE))
+ return false;
+ return true;
+ }
- bool Validate(SpellInfo const* /*spell*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_FINAL_HEAL))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_ENERGIZE))
- return false;
- return true;
- }
+ void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ // Final heal only on duration end
+ if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
+ return;
- void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ // final heal
+ int32 stack = GetStackAmount();
+ int32 healAmount = aurEff->GetAmount();
+ if (Unit* caster = GetCaster())
{
- // Final heal only on duration end
- if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
- return;
+ healAmount = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), stack);
+ healAmount = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), stack);
- // final heal
- int32 stack = GetStackAmount();
- int32 healAmount = aurEff->GetAmount();
- if (Unit* caster = GetCaster())
- {
- healAmount = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), stack);
- healAmount = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), stack);
-
- GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID());
+ GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, aurEff, GetCasterGUID());
- // restore mana
- std::vector<SpellInfo::CostData> costs = GetSpellInfo()->CalcPowerCost(caster, GetSpellInfo()->GetSchoolMask());
- auto m = std::find_if(costs.begin(), costs.end(), [](SpellInfo::CostData const& cost) { return cost.Power == POWER_MANA; });
- if (m != costs.end())
- {
- int32 returnMana = m->Amount * stack / 2;
- caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, aurEff, GetCasterGUID());
- }
- return;
+ // restore mana
+ std::vector<SpellInfo::CostData> costs = GetSpellInfo()->CalcPowerCost(caster, GetSpellInfo()->GetSchoolMask());
+ auto m = std::find_if(costs.begin(), costs.end(), [](SpellInfo::CostData const& cost) { return cost.Power == POWER_MANA; });
+ if (m != costs.end())
+ {
+ int32 returnMana = m->Amount * stack / 2;
+ caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, nullptr, nullptr, true, nullptr, aurEff, GetCasterGUID());
}
-
- GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID());
+ return;
}
- void HandleDispel(DispelInfo* dispelInfo)
+ GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, aurEff, GetCasterGUID());
+ }
+
+ void HandleDispel(DispelInfo* dispelInfo)
+ {
+ if (Unit* target = GetUnitOwner())
{
- if (Unit* target = GetUnitOwner())
+ if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
{
- if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
+ // final heal
+ int32 healAmount = aurEff->GetAmount();
+ if (Unit* caster = GetCaster())
{
- // final heal
- int32 healAmount = aurEff->GetAmount();
- if (Unit* caster = GetCaster())
+ healAmount = caster->SpellHealingBonusDone(target, GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), dispelInfo->GetRemovedCharges());
+ healAmount = target->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), dispelInfo->GetRemovedCharges());
+ target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, nullptr, GetCasterGUID());
+
+ // restore mana
+ std::vector<SpellInfo::CostData> costs = GetSpellInfo()->CalcPowerCost(caster, GetSpellInfo()->GetSchoolMask());
+ auto m = std::find_if(costs.begin(), costs.end(), [](SpellInfo::CostData const& cost) { return cost.Power == POWER_MANA; });
+ if (m != costs.end())
{
- healAmount = caster->SpellHealingBonusDone(target, GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), dispelInfo->GetRemovedCharges());
- healAmount = target->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, aurEff->GetSpellEffectInfo(), dispelInfo->GetRemovedCharges());
- target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID());
-
- // restore mana
- std::vector<SpellInfo::CostData> costs = GetSpellInfo()->CalcPowerCost(caster, GetSpellInfo()->GetSchoolMask());
- auto m = std::find_if(costs.begin(), costs.end(), [](SpellInfo::CostData const& cost) { return cost.Power == POWER_MANA; });
- if (m != costs.end())
- {
- int32 returnMana = m->Amount * dispelInfo->GetRemovedCharges() / 2;
- caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, NULL, GetCasterGUID());
- }
- return;
+ int32 returnMana = m->Amount * dispelInfo->GetRemovedCharges() / 2;
+ caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, nullptr, nullptr, true, nullptr, nullptr, GetCasterGUID());
}
-
- target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID());
+ return;
}
- }
- }
- void Register() override
- {
- AfterEffectRemove += AuraEffectRemoveFn(spell_dru_lifebloom_AuraScript::AfterRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
- AfterDispel += AuraDispelFn(spell_dru_lifebloom_AuraScript::HandleDispel);
+ target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, nullptr, GetCasterGUID());
+ }
}
- };
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_lifebloom_AuraScript();
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dru_lifebloom_AuraScript::AfterRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ AfterDispel += AuraDispelFn(spell_dru_lifebloom_AuraScript::HandleDispel);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_lifebloom_AuraScript();
+ }
};
// -48496 - Living Seed
class spell_dru_living_seed : public SpellScriptLoader
{
- public:
- spell_dru_living_seed() : SpellScriptLoader("spell_dru_living_seed") { }
-
- class spell_dru_living_seed_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_living_seed_AuraScript);
+public:
+ spell_dru_living_seed() : SpellScriptLoader("spell_dru_living_seed") { }
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIVING_SEED_PROC))
- return false;
- return true;
- }
+ class spell_dru_living_seed_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_living_seed_AuraScript);
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- int32 amount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_DRUID_LIVING_SEED_PROC, SPELLVALUE_BASE_POINT0, amount, eventInfo.GetProcTarget(), true, NULL, aurEff);
- }
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIVING_SEED_PROC))
+ return false;
+ return true;
+ }
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_dru_living_seed_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ int32 amount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount());
+ GetTarget()->CastCustomSpell(SPELL_DRUID_LIVING_SEED_PROC, SPELLVALUE_BASE_POINT0, amount, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_living_seed_AuraScript();
+ OnEffectProc += AuraEffectProcFn(spell_dru_living_seed_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_living_seed_AuraScript();
+ }
};
// 48504 - Living Seed (Proc)
class spell_dru_living_seed_proc : public SpellScriptLoader
{
- public:
- spell_dru_living_seed_proc() : SpellScriptLoader("spell_dru_living_seed_proc") { }
+public:
+ spell_dru_living_seed_proc() : SpellScriptLoader("spell_dru_living_seed_proc") { }
+
+ class spell_dru_living_seed_proc_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_living_seed_proc_AuraScript);
- class spell_dru_living_seed_proc_AuraScript : public AuraScript
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- PrepareAuraScript(spell_dru_living_seed_proc_AuraScript);
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIVING_SEED_HEAL))
+ return false;
+ return true;
+ }
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIVING_SEED_HEAL))
- return false;
- return true;
- }
+ void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
+ {
+ PreventDefaultAction();
+ GetTarget()->CastCustomSpell(SPELL_DRUID_LIVING_SEED_HEAL, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff);
+ }
- void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
- {
- PreventDefaultAction();
- GetTarget()->CastCustomSpell(SPELL_DRUID_LIVING_SEED_HEAL, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, NULL, aurEff);
- }
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_dru_living_seed_proc_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
+ };
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_dru_living_seed_proc_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
- }
- };
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_living_seed_proc_AuraScript();
+ }
+};
+
+// 8921 - Moonfire
+class spell_dru_moonfire : public SpellScriptLoader
+{
+public:
+ spell_dru_moonfire() : SpellScriptLoader("spell_dru_moonfire") { }
- AuraScript* GetAuraScript() const override
+ class spell_dru_moonfire_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_moonfire_SpellScript);
+
+ void HandleOnHit(SpellEffIndex /*effIndex*/)
{
- return new spell_dru_living_seed_proc_AuraScript();
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_DRUID_MOONFIRE_DAMAGE, true);
}
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_dru_moonfire_SpellScript::HandleOnHit, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_moonfire_SpellScript();
+ }
};
// -16972 - Predatory Strikes
class spell_dru_predatory_strikes : public SpellScriptLoader
{
- public:
- spell_dru_predatory_strikes() : SpellScriptLoader("spell_dru_predatory_strikes") { }
-
- class spell_dru_predatory_strikes_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_predatory_strikes_AuraScript);
+public:
+ spell_dru_predatory_strikes() : SpellScriptLoader("spell_dru_predatory_strikes") { }
- void UpdateAmount(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- if (Player* target = GetTarget()->ToPlayer())
- target->UpdateAttackPowerAndDamage();
- }
+ class spell_dru_predatory_strikes_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_predatory_strikes_AuraScript);
- void Register() override
- {
- AfterEffectApply += AuraEffectApplyFn(spell_dru_predatory_strikes_AuraScript::UpdateAmount, EFFECT_ALL, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
- AfterEffectRemove += AuraEffectRemoveFn(spell_dru_predatory_strikes_AuraScript::UpdateAmount, EFFECT_ALL, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
- }
- };
+ void UpdateAmount(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Player* target = GetTarget()->ToPlayer())
+ target->UpdateAttackPowerAndDamage();
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_predatory_strikes_AuraScript();
+ AfterEffectApply += AuraEffectApplyFn(spell_dru_predatory_strikes_AuraScript::UpdateAmount, EFFECT_ALL, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dru_predatory_strikes_AuraScript::UpdateAmount, EFFECT_ALL, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_predatory_strikes_AuraScript();
+ }
};
// 1079 - Rip
class spell_dru_rip : public SpellScriptLoader
{
- public:
- spell_dru_rip() : SpellScriptLoader("spell_dru_rip") { }
+public:
+ spell_dru_rip() : SpellScriptLoader("spell_dru_rip") { }
- class spell_dru_rip_AuraScript : public AuraScript
+ class spell_dru_rip_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_rip_AuraScript);
+
+ bool Load() override
{
- PrepareAuraScript(spell_dru_rip_AuraScript);
+ Unit* caster = GetCaster();
+ return caster && caster->GetTypeId() == TYPEID_PLAYER;
+ }
- bool Load() override
- {
- Unit* caster = GetCaster();
- return caster && caster->GetTypeId() == TYPEID_PLAYER;
- }
+ void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
+ {
+ canBeRecalculated = false;
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
+ if (Unit* caster = GetCaster())
{
- canBeRecalculated = false;
-
- if (Unit* caster = GetCaster())
- {
- // 0.01 * $AP * cp
- uint32 cp = caster->ToPlayer()->GetComboPoints();
-
- // Idol of Feral Shadows. Can't be handled as SpellMod due its dependency from CPs
- if (AuraEffect const* auraEffIdolOfFeralShadows = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_FERAL_SHADOWS, EFFECT_0))
- amount += cp * auraEffIdolOfFeralShadows->GetAmount();
- // Idol of Worship. Can't be handled as SpellMod due its dependency from CPs
- else if (AuraEffect const* auraEffIdolOfWorship = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_WORSHIP, EFFECT_0))
- amount += cp * auraEffIdolOfWorship->GetAmount();
+ // 0.01 * $AP * cp
+ uint32 cp = caster->ToPlayer()->GetComboPoints();
- amount += int32(CalculatePct(caster->GetTotalAttackPowerValue(BASE_ATTACK), cp));
- }
- }
+ // Idol of Feral Shadows. Can't be handled as SpellMod due its dependency from CPs
+ if (AuraEffect const* auraEffIdolOfFeralShadows = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_FERAL_SHADOWS, EFFECT_0))
+ amount += cp * auraEffIdolOfFeralShadows->GetAmount();
+ // Idol of Worship. Can't be handled as SpellMod due its dependency from CPs
+ else if (AuraEffect const* auraEffIdolOfWorship = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_WORSHIP, EFFECT_0))
+ amount += cp * auraEffIdolOfWorship->GetAmount();
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_rip_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE);
+ amount += int32(CalculatePct(caster->GetTotalAttackPowerValue(BASE_ATTACK), cp));
}
- };
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_rip_AuraScript();
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_rip_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_rip_AuraScript();
+ }
};
// 62606 - Savage Defense
class spell_dru_savage_defense : public SpellScriptLoader
{
- public:
- spell_dru_savage_defense() : SpellScriptLoader("spell_dru_savage_defense") { }
-
- class spell_dru_savage_defense_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_savage_defense_AuraScript);
+public:
+ spell_dru_savage_defense() : SpellScriptLoader("spell_dru_savage_defense") { }
- public:
- spell_dru_savage_defense_AuraScript()
- {
- absorbPct = 0;
- }
+ class spell_dru_savage_defense_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_savage_defense_AuraScript);
- private:
- uint32 absorbPct;
+ public:
+ spell_dru_savage_defense_AuraScript()
+ {
+ absorbPct = 0;
+ }
- bool Load() override
- {
- absorbPct = GetSpellInfo()->GetEffect(EFFECT_0)->CalcValue(GetCaster());
- return true;
- }
+ private:
+ uint32 absorbPct;
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
- {
- // Set absorbtion amount to unlimited
- amount = -1;
- }
+ bool Load() override
+ {
+ absorbPct = GetSpellInfo()->GetEffect(EFFECT_0)->CalcValue(GetCaster());
+ return true;
+ }
- void Absorb(AuraEffect* aurEff, DamageInfo & /*dmgInfo*/, uint32 & absorbAmount)
- {
- absorbAmount = uint32(CalculatePct(GetTarget()->GetTotalAttackPowerValue(BASE_ATTACK), absorbPct));
- aurEff->SetAmount(0);
- }
+ void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
+ {
+ // Set absorbtion amount to unlimited
+ amount = -1;
+ }
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_savage_defense_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
- OnEffectAbsorb += AuraEffectAbsorbFn(spell_dru_savage_defense_AuraScript::Absorb, EFFECT_0);
- }
- };
+ void Absorb(AuraEffect* aurEff, DamageInfo & /*dmgInfo*/, uint32 & absorbAmount)
+ {
+ absorbAmount = uint32(CalculatePct(GetTarget()->GetTotalAttackPowerValue(BASE_ATTACK), absorbPct));
+ aurEff->SetAmount(0);
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_savage_defense_AuraScript();
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_savage_defense_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
+ OnEffectAbsorb += AuraEffectAbsorbFn(spell_dru_savage_defense_AuraScript::Absorb, EFFECT_0);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_savage_defense_AuraScript();
+ }
};
// 52610 - Savage Roar
class spell_dru_savage_roar : public SpellScriptLoader
{
- 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_FORM)
- return SPELL_FAILED_ONLY_SHAPESHIFT;
-
- return SPELL_CAST_OK;
- }
+public:
+ spell_dru_savage_roar() : SpellScriptLoader("spell_dru_savage_roar") { }
- void Register() override
- {
- OnCheckCast += SpellCheckCastFn(spell_dru_savage_roar_SpellScript::CheckCast);
- }
- };
+ class spell_dru_savage_roar_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_savage_roar_SpellScript);
- class spell_dru_savage_roar_AuraScript : public AuraScript
+ SpellCastResult CheckCast()
{
- PrepareAuraScript(spell_dru_savage_roar_AuraScript);
+ Unit* caster = GetCaster();
+ if (caster->GetShapeshiftForm() != FORM_CAT_FORM)
+ return SPELL_FAILED_ONLY_SHAPESHIFT;
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SAVAGE_ROAR))
- return false;
- return true;
- }
-
- void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- Unit* target = GetTarget();
- target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, true, NULL, aurEff, GetCasterGUID());
- }
+ return SPELL_CAST_OK;
+ }
- void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SAVAGE_ROAR);
- }
+ void Register() override
+ {
+ OnCheckCast += SpellCheckCastFn(spell_dru_savage_roar_SpellScript::CheckCast);
+ }
+ };
- 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);
- }
- };
+ class spell_dru_savage_roar_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_savage_roar_AuraScript);
- SpellScript* GetSpellScript() const override
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- return new spell_dru_savage_roar_SpellScript();
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SAVAGE_ROAR))
+ return false;
+ return true;
}
- AuraScript* GetAuraScript() const override
+ void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
- return new spell_dru_savage_roar_AuraScript();
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, true, nullptr, aurEff, GetCasterGUID());
}
-};
-// 50286 - Starfall (Dummy)
-class spell_dru_starfall_dummy : public SpellScriptLoader
-{
- public:
- spell_dru_starfall_dummy() : SpellScriptLoader("spell_dru_starfall_dummy") { }
-
- class spell_dru_starfall_dummy_SpellScript : public SpellScript
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- PrepareSpellScript(spell_dru_starfall_dummy_SpellScript);
-
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- Trinity::Containers::RandomResizeList(targets, 2);
- }
-
- void HandleDummy(SpellEffIndex /*effIndex*/)
- {
- Unit* caster = GetCaster();
- // Shapeshifting into an animal form or mounting cancels the effect
- if (caster->GetCreatureType() == CREATURE_TYPE_BEAST || caster->IsMounted())
- {
- if (SpellInfo const* spellInfo = GetTriggeringSpell())
- caster->RemoveAurasDueToSpell(spellInfo->Id);
- return;
- }
-
- // Any effect which causes you to lose control of your character will supress the starfall effect.
- if (caster->HasUnitState(UNIT_STATE_CONTROLLED))
- return;
-
- caster->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true);
- }
-
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_starfall_dummy_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
- OnEffectHitTarget += SpellEffectFn(spell_dru_starfall_dummy_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
- }
- };
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SAVAGE_ROAR);
+ }
- SpellScript* GetSpellScript() const override
+ void Register() override
{
- return new spell_dru_starfall_dummy_SpellScript();
+ 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);
}
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_savage_roar_SpellScript();
+ }
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_savage_roar_AuraScript();
+ }
};
// -78892 - Stampede
class spell_dru_stampede : public SpellScriptLoader
{
- public:
- spell_dru_stampede() : SpellScriptLoader("spell_dru_stampede") { }
-
- class spell_dru_stampede_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_stampede_AuraScript);
+public:
+ spell_dru_stampede() : SpellScriptLoader("spell_dru_stampede") { }
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_BAER_RANK_1) ||
- !sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_CAT_RANK_1) ||
- !sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_CAT_STATE) ||
- !sSpellMgr->GetSpellInfo(SPELL_DRUID_FERAL_CHARGE_CAT) ||
- !sSpellMgr->GetSpellInfo(SPELL_DRUID_FERAL_CHARGE_BEAR))
- return false;
- return true;
- }
+ class spell_dru_stampede_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_stampede_AuraScript);
- void HandleEffectCatProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- if (GetTarget()->GetShapeshiftForm() != FORM_CAT_FORM || eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_DRUID_FERAL_CHARGE_CAT)
- return;
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_BAER_RANK_1) ||
+ !sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_CAT_RANK_1) ||
+ !sSpellMgr->GetSpellInfo(SPELL_DRUID_STAMPEDE_CAT_STATE) ||
+ !sSpellMgr->GetSpellInfo(SPELL_DRUID_FERAL_CHARGE_CAT) ||
+ !sSpellMgr->GetSpellInfo(SPELL_DRUID_FERAL_CHARGE_BEAR))
+ return false;
+ return true;
+ }
- GetTarget()->CastSpell(GetTarget(), sSpellMgr->GetSpellWithRank(SPELL_DRUID_STAMPEDE_CAT_RANK_1, GetSpellInfo()->GetRank()), true, NULL, aurEff);
- GetTarget()->CastSpell(GetTarget(), SPELL_DRUID_STAMPEDE_CAT_STATE, true, NULL, aurEff);
- }
+ void HandleEffectCatProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ if (GetTarget()->GetShapeshiftForm() != FORM_CAT_FORM || eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_DRUID_FERAL_CHARGE_CAT)
+ return;
- void HandleEffectBearProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
- {
- PreventDefaultAction();
- if (GetTarget()->GetShapeshiftForm() != FORM_BEAR_FORM || eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_DRUID_FERAL_CHARGE_BEAR)
- return;
+ GetTarget()->CastSpell(GetTarget(), sSpellMgr->GetSpellWithRank(SPELL_DRUID_STAMPEDE_CAT_RANK_1, GetSpellInfo()->GetRank()), true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_DRUID_STAMPEDE_CAT_STATE, true, nullptr, aurEff);
+ }
- GetTarget()->CastSpell(GetTarget(), sSpellMgr->GetSpellWithRank(SPELL_DRUID_STAMPEDE_BAER_RANK_1, GetSpellInfo()->GetRank()), true, NULL, aurEff);
- }
+ void HandleEffectBearProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ if (GetTarget()->GetShapeshiftForm() != FORM_BEAR_FORM || eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_DRUID_FERAL_CHARGE_BEAR)
+ return;
- void Register() override
- {
- OnEffectProc += AuraEffectProcFn(spell_dru_stampede_AuraScript::HandleEffectCatProc, EFFECT_0, SPELL_AURA_DUMMY);
- OnEffectProc += AuraEffectProcFn(spell_dru_stampede_AuraScript::HandleEffectBearProc, EFFECT_1, SPELL_AURA_DUMMY);
- }
- };
+ GetTarget()->CastSpell(GetTarget(), sSpellMgr->GetSpellWithRank(SPELL_DRUID_STAMPEDE_BAER_RANK_1, GetSpellInfo()->GetRank()), true, nullptr, aurEff);
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_stampede_AuraScript();
+ OnEffectProc += AuraEffectProcFn(spell_dru_stampede_AuraScript::HandleEffectCatProc, EFFECT_0, SPELL_AURA_DUMMY);
+ OnEffectProc += AuraEffectProcFn(spell_dru_stampede_AuraScript::HandleEffectBearProc, EFFECT_1, SPELL_AURA_DUMMY);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_stampede_AuraScript();
+ }
};
-// 61336 - Survival Instincts
-class spell_dru_survival_instincts : public SpellScriptLoader
+// 50286 - Starfall (Dummy)
+class spell_dru_starfall_dummy : public SpellScriptLoader
{
- public:
- spell_dru_survival_instincts() : SpellScriptLoader("spell_dru_survival_instincts") { }
+public:
+ spell_dru_starfall_dummy() : SpellScriptLoader("spell_dru_starfall_dummy") { }
- class spell_dru_survival_instincts_SpellScript : public SpellScript
+ class spell_dru_starfall_dummy_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_starfall_dummy_SpellScript);
+
+ void FilterTargets(std::list<WorldObject*>& targets)
{
- PrepareSpellScript(spell_dru_survival_instincts_SpellScript);
+ Trinity::Containers::RandomResizeList(targets, 2);
+ }
- SpellCastResult CheckCast()
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ // Shapeshifting into an animal form or mounting cancels the effect
+ if (caster->GetCreatureType() == CREATURE_TYPE_BEAST || caster->IsMounted())
{
- Unit* caster = GetCaster();
- if (!caster->IsInFeralForm())
- return SPELL_FAILED_ONLY_SHAPESHIFT;
-
- return SPELL_CAST_OK;
+ if (SpellInfo const* spellInfo = GetTriggeringSpell())
+ caster->RemoveAurasDueToSpell(spellInfo->Id);
+ return;
}
- void Register() override
- {
- OnCheckCast += SpellCheckCastFn(spell_dru_survival_instincts_SpellScript::CheckCast);
- }
- };
+ // Any effect which causes you to lose control of your character will supress the starfall effect.
+ if (caster->HasUnitState(UNIT_STATE_CONTROLLED))
+ return;
+
+ caster->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true);
+ }
- class spell_dru_survival_instincts_AuraScript : public AuraScript
+ void Register() override
{
- PrepareAuraScript(spell_dru_survival_instincts_AuraScript);
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_starfall_dummy_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
+ OnEffectHitTarget += SpellEffectFn(spell_dru_starfall_dummy_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+ };
- bool Validate(SpellInfo const* /*spell*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SURVIVAL_INSTINCTS))
- return false;
- return true;
- }
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_starfall_dummy_SpellScript();
+ }
+};
- void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
- {
- Unit* target = GetTarget();
- int32 bp0 = target->CountPctFromMaxHealth(aurEff->GetAmount());
- target->CastCustomSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, &bp0, NULL, NULL, true);
- }
+// 93402 - Sunfire
+class spell_dru_sunfire : public SpellScriptLoader
+{
+public:
+ spell_dru_sunfire() : SpellScriptLoader("spell_dru_sunfire") { }
- void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
- {
- GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS);
- }
+ class spell_dru_sunfire_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_sunfire_SpellScript);
- 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);
- }
- };
- SpellScript* GetSpellScript() const override
+ void HandleOnHit(SpellEffIndex /*effIndex*/)
{
- return new spell_dru_survival_instincts_SpellScript();
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_DRUID_SUNFIRE_DAMAGE, true);
}
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_survival_instincts_AuraScript();
+ OnEffectHitTarget += SpellEffectFn(spell_dru_sunfire_SpellScript::HandleOnHit, EFFECT_0, SPELL_EFFECT_DUMMY);
}
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_sunfire_SpellScript();
+ }
};
-// 40121 - Swift Flight Form (Passive)
-class spell_dru_swift_flight_passive : public SpellScriptLoader
+// 61336 - Survival Instincts
+class spell_dru_survival_instincts : public SpellScriptLoader
{
- public:
- spell_dru_swift_flight_passive() : SpellScriptLoader("spell_dru_swift_flight_passive") { }
-
- class spell_dru_swift_flight_passive_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_dru_swift_flight_passive_AuraScript);
+public:
+ spell_dru_survival_instincts() : SpellScriptLoader("spell_dru_survival_instincts") { }
- bool Load() override
- {
- return GetCaster()->GetTypeId() == TYPEID_PLAYER;
- }
+ class spell_dru_survival_instincts_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_survival_instincts_SpellScript);
- void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
- {
- if (Player* caster = GetCaster()->ToPlayer())
- if (caster->GetSkillValue(SKILL_RIDING) >= 375)
- amount = 310;
- }
+ SpellCastResult CheckCast()
+ {
+ Unit* caster = GetCaster();
+ if (!caster->IsInFeralForm())
+ return SPELL_FAILED_ONLY_SHAPESHIFT;
- void Register() override
- {
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_swift_flight_passive_AuraScript::CalculateAmount, EFFECT_1, SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED);
- }
- };
+ return SPELL_CAST_OK;
+ }
- AuraScript* GetAuraScript() const override
+ void Register() override
{
- return new spell_dru_swift_flight_passive_AuraScript();
+ OnCheckCast += SpellCheckCastFn(spell_dru_survival_instincts_SpellScript::CheckCast);
}
-};
+ };
-// -33943 - Flight Form
-class spell_dru_flight_form : public SpellScriptLoader
-{
- public:
- spell_dru_flight_form() : SpellScriptLoader("spell_dru_flight_form") { }
+ class spell_dru_survival_instincts_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_survival_instincts_AuraScript);
- class spell_dru_flight_form_SpellScript : public SpellScript
+ bool Validate(SpellInfo const* /*spell*/) override
{
- PrepareSpellScript(spell_dru_flight_form_SpellScript);
-
- SpellCastResult CheckCast()
- {
- Unit* caster = GetCaster();
- if (caster->IsInDisallowedMountForm())
- return SPELL_FAILED_NOT_SHAPESHIFT;
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SURVIVAL_INSTINCTS))
+ return false;
+ return true;
+ }
- return SPELL_CAST_OK;
- }
+ void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ int32 bp0 = target->CountPctFromMaxHealth(aurEff->GetAmount());
+ target->CastCustomSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, &bp0, nullptr, nullptr, true);
+ }
- void Register() override
- {
- OnCheckCast += SpellCheckCastFn(spell_dru_flight_form_SpellScript::CheckCast);
- }
- };
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS);
+ }
- SpellScript* GetSpellScript() const override
+ void Register() override
{
- return new spell_dru_flight_form_SpellScript();
+ 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);
}
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_survival_instincts_SpellScript();
+ }
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_survival_instincts_AuraScript();
+ }
};
-// 61391 - Typhoon
-class spell_dru_typhoon : public SpellScriptLoader
+// 40121 - Swift Flight Form (Passive)
+class spell_dru_swift_flight_passive : public SpellScriptLoader
{
- public:
- spell_dru_typhoon() : SpellScriptLoader("spell_dru_typhoon") { }
+public:
+ spell_dru_swift_flight_passive() : SpellScriptLoader("spell_dru_swift_flight_passive") { }
- class spell_dru_typhoon_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_dru_typhoon_SpellScript);
+ class spell_dru_swift_flight_passive_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_swift_flight_passive_AuraScript);
- void HandleKnockBack(SpellEffIndex effIndex)
- {
- // Glyph of Typhoon
- if (GetCaster()->HasAura(SPELL_DRUID_GLYPH_OF_TYPHOON))
- PreventHitDefaultEffect(effIndex);
- }
+ bool Load() override
+ {
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_dru_typhoon_SpellScript::HandleKnockBack, EFFECT_0, SPELL_EFFECT_KNOCK_BACK);
- }
- };
+ void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
+ {
+ if (Player* caster = GetCaster()->ToPlayer())
+ if (caster->GetSkillValue(SKILL_RIDING) >= 375)
+ amount = 310;
+ }
- SpellScript* GetSpellScript() const override
+ void Register() override
{
- return new spell_dru_typhoon_SpellScript();
+ DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_swift_flight_passive_AuraScript::CalculateAmount, EFFECT_1, SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED);
}
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_swift_flight_passive_AuraScript();
+ }
};
// 70691 - Item T10 Restoration 4P Bonus
class spell_dru_t10_restoration_4p_bonus : public SpellScriptLoader
{
- public:
- spell_dru_t10_restoration_4p_bonus() : SpellScriptLoader("spell_dru_t10_restoration_4p_bonus") { }
+public:
+ spell_dru_t10_restoration_4p_bonus() : SpellScriptLoader("spell_dru_t10_restoration_4p_bonus") { }
+
+ class spell_dru_t10_restoration_4p_bonus_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_t10_restoration_4p_bonus_SpellScript);
- class spell_dru_t10_restoration_4p_bonus_SpellScript : public SpellScript
+ bool Load() override
{
- PrepareSpellScript(spell_dru_t10_restoration_4p_bonus_SpellScript);
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
- bool Load() override
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ if (!GetCaster()->ToPlayer()->GetGroup())
{
- return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ targets.clear();
+ targets.push_back(GetCaster());
}
-
- void FilterTargets(std::list<WorldObject*>& targets)
+ else
{
- if (!GetCaster()->ToPlayer()->GetGroup())
- {
- targets.clear();
- targets.push_back(GetCaster());
- }
- else
- {
- targets.remove(GetExplTargetUnit());
- std::list<Unit*> tempTargets;
- for (std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
- if ((*itr)->GetTypeId() == TYPEID_PLAYER && GetCaster()->IsInRaidWith((*itr)->ToUnit()))
- tempTargets.push_back((*itr)->ToUnit());
-
- if (tempTargets.empty())
- {
- targets.clear();
- FinishCast(SPELL_FAILED_DONT_REPORT);
- return;
- }
+ targets.remove(GetExplTargetUnit());
+ std::list<Unit*> tempTargets;
+ for (std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
+ if ((*itr)->GetTypeId() == TYPEID_PLAYER && GetCaster()->IsInRaidWith((*itr)->ToUnit()))
+ tempTargets.push_back((*itr)->ToUnit());
- Unit* target = Trinity::Containers::SelectRandomContainerElement(tempTargets);
+ if (tempTargets.empty())
+ {
targets.clear();
- targets.push_back(target);
+ FinishCast(SPELL_FAILED_DONT_REPORT);
+ return;
}
- }
- void Register() override
- {
- OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_t10_restoration_4p_bonus_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
+ Unit* target = Trinity::Containers::SelectRandomContainerElement(tempTargets);
+ targets.clear();
+ targets.push_back(target);
}
- };
+ }
- SpellScript* GetSpellScript() const override
+ void Register() override
{
- return new spell_dru_t10_restoration_4p_bonus_SpellScript();
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_dru_t10_restoration_4p_bonus_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
}
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_t10_restoration_4p_bonus_SpellScript();
+ }
};
class RaidCheck
{
- public:
- explicit RaidCheck(Unit const* caster) : _caster(caster) { }
+public:
+ explicit RaidCheck(Unit const* caster) : _caster(caster) { }
- bool operator()(WorldObject* obj) const
- {
- if (Unit* target = obj->ToUnit())
- return !_caster->IsInRaidWith(target);
+ bool operator()(WorldObject* obj) const
+ {
+ if (Unit* target = obj->ToUnit())
+ return !_caster->IsInRaidWith(target);
- return true;
- }
+ return true;
+ }
- private:
- Unit const* _caster;
+private:
+ Unit const* _caster;
};
// 48438 - Wild Growth
class spell_dru_wild_growth : public SpellScriptLoader
{
- public:
- spell_dru_wild_growth() : SpellScriptLoader("spell_dru_wild_growth") { }
-
- class spell_dru_wild_growth_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_dru_wild_growth_SpellScript);
-
- bool Validate(SpellInfo const* spellInfo) override
- {
- if (spellInfo->GetEffect(EFFECT_2)->IsEffect() || spellInfo->GetEffect(EFFECT_2)->CalcValue() <= 0)
- return false;
- return true;
- }
+public:
+ spell_dru_wild_growth() : SpellScriptLoader("spell_dru_wild_growth") { }
- void FilterTargets(std::list<WorldObject*>& targets)
- {
- targets.remove_if(RaidCheck(GetCaster()));
+ class spell_dru_wild_growth_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_dru_wild_growth_SpellScript);
- uint32 const maxTargets = uint32(GetSpellInfo()->GetEffect(EFFECT_2)->CalcValue(GetCaster()));
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ SpellEffectInfo const* effect2 = spellInfo->GetEffect(EFFECT_2);
+ if (!effect2 || effect2->IsEffect() || effect2->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()->GetEffect(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;
+ }
- private:
- std::list<WorldObject*> _targets;
- };
+ void SetTargets(std::list<WorldObject*>& targets)
+ {
+ targets = _targets;
+ }
- SpellScript* GetSpellScript() const override
+ void Register() override
{
- return new spell_dru_wild_growth_SpellScript();
+ 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);
}
+
+ private:
+ std::list<WorldObject*> _targets;
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_dru_wild_growth_SpellScript();
+ }
};
void AddSC_druid_spell_scripts()
{
new spell_dru_dash();
- new spell_dru_eclipse("spell_dru_eclipse_lunar");
- new spell_dru_eclipse("spell_dru_eclipse_solar");
- new spell_dru_eclipse_energize();
+ new spell_dru_flight_form();
new spell_dru_forms_trinket();
- new spell_dru_glyph_of_innervate();
- new spell_dru_glyph_of_starfire();
- new spell_dru_glyph_of_starfire_proc();
new spell_dru_idol_lifebloom();
new spell_dru_innervate();
- new spell_dru_insect_swarm();
new spell_dru_lifebloom();
new spell_dru_living_seed();
new spell_dru_living_seed_proc();
+ new spell_dru_moonfire();
new spell_dru_predatory_strikes();
new spell_dru_rip();
new spell_dru_savage_defense();
new spell_dru_savage_roar();
- new spell_dru_starfall_dummy();
new spell_dru_stampede();
+ new spell_dru_starfall_dummy();
+ new spell_dru_sunfire();
new spell_dru_survival_instincts();
new spell_dru_swift_flight_passive();
- new spell_dru_flight_form();
- new spell_dru_typhoon();
new spell_dru_t10_restoration_4p_bonus();
new spell_dru_wild_growth();
}