aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp5
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp74
2 files changed, 73 insertions, 6 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 1c1db83fb62..d1b4ba664af 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2918,12 +2918,7 @@ float Unit::GetUnitCriticalChance(WeaponAttackType attackType, Unit const* victi
// reduce crit chance from Rating for players
if (attackType != RANGED_ATTACK)
- {
ApplyResilience(victim, &crit, NULL, false, CR_CRIT_TAKEN_MELEE);
- // Glyph of barkskin
- if (victim->HasAura(63057) && victim->HasAura(22812))
- crit -= 25.0f;
- }
else
ApplyResilience(victim, &crit, NULL, false, CR_CRIT_TAKEN_RANGED);
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index fc75b6d7972..3e03316d9e4 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -83,7 +83,42 @@ enum DruidSpells
SPELL_DRUID_LANGUISH = 71023,
SPELL_DRUID_REJUVENATION_T10_PROC = 70691,
SPELL_DRUID_BALANCE_T10_BONUS = 70718,
- SPELL_DRUID_BALANCE_T10_BONUS_PROC = 70721
+ SPELL_DRUID_BALANCE_T10_BONUS_PROC = 70721,
+ SPELL_DRUID_BARKSKIN_01 = 63058
+};
+
+// 22812 - Barkskin
+class spell_dru_barkskin : public SpellScriptLoader
+{
+ public:
+ spell_dru_barkskin() : SpellScriptLoader("spell_dru_barkskin") { }
+
+ class spell_dru_barkskin_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_barkskin_AuraScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_BARKSKIN_01))
+ return false;
+ return true;
+ }
+
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_BARKSKIN_01);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dru_barkskin_AuraScript::OnRemove, EFFECT_1, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_barkskin_AuraScript();
+ }
};
// 1178 - Bear Form (Passive)
@@ -412,6 +447,41 @@ class spell_dru_flight_form : public SpellScriptLoader
}
};
+// 63057 - Glyph of Barkskin
+class spell_dru_glyph_of_barkskin : public SpellScriptLoader
+{
+ public:
+ spell_dru_glyph_of_barkskin() : SpellScriptLoader("spell_dru_glyph_of_barkskin") { }
+
+ class spell_dru_glyph_of_barkskin_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_dru_glyph_of_barkskin_AuraScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_BARKSKIN_01))
+ return false;
+ return true;
+ }
+
+ void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
+ {
+ PreventDefaultAction();
+ eventInfo.GetActor()->CastSpell((Unit*)nullptr, SPELL_DRUID_BARKSKIN_01, true);
+ }
+
+ void Register() override
+ {
+ OnEffectProc += AuraEffectProcFn(spell_dru_glyph_of_barkskin_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_dru_glyph_of_barkskin_AuraScript();
+ }
+};
+
// 54832 - Glyph of Innervate
class spell_dru_glyph_of_innervate : public SpellScriptLoader
{
@@ -2181,12 +2251,14 @@ class spell_dru_wild_growth : public SpellScriptLoader
void AddSC_druid_spell_scripts()
{
+ new spell_dru_barkskin();
new spell_dru_bear_form_passive();
new spell_dru_dash();
new spell_dru_eclipse();
new spell_dru_enrage();
new spell_dru_forms_trinket();
new spell_dru_flight_form();
+ new spell_dru_glyph_of_barkskin();
new spell_dru_glyph_of_innervate();
new spell_dru_glyph_of_rake();
new spell_dru_glyph_of_rejuvenation();