aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShocker <shocker@freakz.ro>2011-11-26 14:36:55 -0800
committerShocker <shocker@freakz.ro>2011-11-26 14:36:55 -0800
commit6cd61ce730dd37ef96c94b8d56c6959b5354cb29 (patch)
tree69d0eb5fa0485cd408a79d7b31ef4b98c169e686 /src
parent9bea8708a77c0d8b23c4040d6d03a3479dec0c07 (diff)
parent61866831caca9f2c980e518bf6b0b8b8691ad151 (diff)
Merge pull request #4093 from PKX/fix_damage_taken_buffs
Core/Spells: Fix Damage Taken for Blessing of Sanctuary, Renewed Hope and Vigilance
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index f0b48a5ad90..90abf2073ee 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1359,6 +1359,69 @@ public:
}
};
+enum DamageReductionAura
+{
+ SPELL_BLESSING_OF_SANCTUARY = 20911,
+ SPELL_GREATER_BLESSING_OF_SANCTUARY = 25899,
+ SPELL_RENEWED_HOPE = 63944,
+ SPELL_VIGILANCE = 50720,
+ SPELL_DAMAGE_REDUCTION_AURA = 68066,
+};
+
+class spell_gen_damage_reduction_aura : public SpellScriptLoader
+{
+public:
+ spell_gen_damage_reduction_aura() : SpellScriptLoader("spell_gen_damage_reduction_aura") { }
+
+ class spell_gen_damage_reduction_auraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_gen_damage_reduction_auraScript);
+
+ bool Validate(SpellInfo const* /*SpellEntry*/)
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_DAMAGE_REDUCTION_AURA))
+ return false;
+ return true;
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ if (!target || target->HasAura(SPELL_DAMAGE_REDUCTION_AURA))
+ return;
+
+ target->CastSpell(target, SPELL_DAMAGE_REDUCTION_AURA, true);
+ }
+
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ if (!target || !target->HasAura(SPELL_DAMAGE_REDUCTION_AURA))
+ return;
+
+ if (target->HasAura(SPELL_BLESSING_OF_SANCTUARY) ||
+ target->HasAura(SPELL_GREATER_BLESSING_OF_SANCTUARY) ||
+ target->HasAura(SPELL_RENEWED_HOPE) ||
+ target->HasAura(SPELL_VIGILANCE))
+ return;
+
+ target->RemoveAurasDueToSpell(SPELL_DAMAGE_REDUCTION_AURA);
+ }
+
+ void Register()
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_gen_damage_reduction_auraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ OnEffectRemove += AuraEffectRemoveFn(spell_gen_damage_reduction_auraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_gen_damage_reduction_auraScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -1390,4 +1453,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_launch();
new spell_gen_vehicle_scaling();
new spell_gen_oracle_wolvar_reputation();
+ new spell_gen_damage_reduction_aura();
}