aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Spells
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2011-11-28 15:42:32 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2011-11-28 15:42:32 +0100
commit059d4f52a3efd8695ec1e10c31959e24e50185c4 (patch)
tree64fbe879c99c031aca1fbcae26d3ac0feeae8abc /src/server/scripts/Spells
parent487da95a924458acf323e8d99b4c87b15f6d0ed5 (diff)
parent0b4b853a0530be6c2557dbc9f46ab61c0767f0cc (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.x
Diffstat (limited to 'src/server/scripts/Spells')
-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();
}