From 187878f9c4da4fcc9fc373e72c7aa6c55d40c0e2 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Wed, 17 Jul 2013 00:42:46 +0200 Subject: Core/Spells: Update warrior/utgarde keep "Second Wind" for 4.3.4 --- .../UtgardeKeep/UtgardeKeep/utgarde_keep.cpp | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'src/server/scripts/Northrend') 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(); } -- cgit v1.2.3