diff options
| author | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-07-17 00:42:46 +0200 |
|---|---|---|
| committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-07-17 00:42:46 +0200 |
| commit | 187878f9c4da4fcc9fc373e72c7aa6c55d40c0e2 (patch) | |
| tree | acd714d7da948001627d83c49a9558ba64543d1c /src/server/scripts/Northrend | |
| parent | 8edbc2152e6f8afa7c98e3b836948b280609b63b (diff) | |
Core/Spells: Update warrior/utgarde keep "Second Wind" for 4.3.4
Diffstat (limited to 'src/server/scripts/Northrend')
| -rw-r--r-- | src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp index 9c086d8bd81..1cd0fde4107 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp @@ -21,6 +21,11 @@ #include "SpellScript.h" #include "SpellAuraEffects.h" +enum Spells +{ + SPELL_UK_SECOUND_WIND_TRIGGER = 42771 +}; + uint32 entry_search[3] = { 186609, @@ -337,10 +342,56 @@ public: } }; +class spell_uk_second_wind_proc : public SpellScriptLoader +{ + public: + spell_uk_second_wind_proc() : SpellScriptLoader("spell_uk_second_wind_proc") { } + + class spell_uk_second_wind_proc_AuraScript : public AuraScript + { + PrepareAuraScript(spell_uk_second_wind_proc_AuraScript); + + bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE + { + if (!sSpellMgr->GetSpellInfo(SPELL_UK_SECOUND_WIND_TRIGGER)) + return false; + return true; + } + + bool CheckProc(ProcEventInfo& eventInfo) + { + if (eventInfo.GetProcTarget() == GetTarget()) + return false; + if (!(eventInfo.GetDamageInfo() || eventInfo.GetDamageInfo()->GetSpellInfo()->GetAllEffectsMechanicMask() & ((1 << MECHANIC_ROOT) | (1 << MECHANIC_STUN)))) + return false; + return true; + } + + void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + GetTarget()->CastCustomSpell(SPELL_UK_SECOUND_WIND_TRIGGER, SPELLVALUE_BASE_POINT0, 5, GetTarget(), true, NULL, aurEff); + } + + void Register() OVERRIDE + { + DoCheckProc += AuraCheckProcFn(spell_uk_second_wind_proc_AuraScript::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_uk_second_wind_proc_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } + + }; + + AuraScript* GetAuraScript() const OVERRIDE + { + return new spell_uk_second_wind_proc_AuraScript(); + } +}; + void AddSC_utgarde_keep() { new npc_dragonflayer_forge_master(); new npc_enslaved_proto_drake(); new spell_ticking_time_bomb(); new spell_fixate(); + new spell_uk_second_wind_proc(); } |
