diff options
-rw-r--r-- | sql/updates/world/2014_08_24_01_world_spell_script_names_434.sql | 2 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 39 |
2 files changed, 40 insertions, 1 deletions
diff --git a/sql/updates/world/2014_08_24_01_world_spell_script_names_434.sql b/sql/updates/world/2014_08_24_01_world_spell_script_names_434.sql new file mode 100644 index 00000000000..cd7ff43fd89 --- /dev/null +++ b/sql/updates/world/2014_08_24_01_world_spell_script_names_434.sql @@ -0,0 +1,2 @@ +DELETE FROM spell_script_names WHERE spell_id = 2098 AND ScriptName = 'spell_rog_serrated_blades'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES ('2098', 'spell_rog_serrated_blades'); diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 1ae01daa5f5..e8546c4214e 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -48,7 +48,9 @@ enum RogueSpells SPELL_ROGUE_SHIV_TRIGGERED = 5940, SPELL_ROGUE_SILCE_AND_DICE = 5171, SPELL_ROGUE_TRICKS_OF_THE_TRADE_DMG_BOOST = 57933, - SPELL_ROGUE_TRICKS_OF_THE_TRADE_PROC = 59628 + SPELL_ROGUE_TRICKS_OF_THE_TRADE_PROC = 59628, + SPELL_ROGUE_SERRATED_BLADES_R1 = 14171, + SPELL_ROGUE_RUPTURE = 1943, }; enum RogueSpellIcons @@ -961,6 +963,40 @@ class spell_rog_tricks_of_the_trade_proc : public SpellScriptLoader } }; +class spell_rog_serrated_blades : public SpellScriptLoader +{ +public: + spell_rog_serrated_blades() : SpellScriptLoader("spell_rog_serrated_blades") { } + + class spell_rog_serrated_blades_SpellScript : public SpellScript + { + PrepareSpellScript(spell_rog_serrated_blades_SpellScript); + + void HandleHit() + { + if (AuraEffect* blade = GetCaster()->GetAuraEffectOfRankedSpell(SPELL_ROGUE_SERRATED_BLADES_R1, EFFECT_0)) + { + uint8 combo = GetCaster()->ToPlayer()->GetComboPoints(); + + if (roll_chance_i(blade->GetAmount() * combo)) + if (Aura* dot = GetHitUnit()->GetAura(SPELL_ROGUE_RUPTURE, GetCaster()->GetGUID())) + dot->RefreshDuration(); + + } + } + + void Register() + { + OnHit += SpellHitFn(spell_rog_serrated_blades_SpellScript::HandleHit); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_rog_serrated_blades_SpellScript(); + } +}; + void AddSC_rogue_spell_scripts() { new spell_rog_blade_flurry(); @@ -980,4 +1016,5 @@ void AddSC_rogue_spell_scripts() new spell_rog_stealth(); new spell_rog_tricks_of_the_trade(); new spell_rog_tricks_of_the_trade_proc(); + new spell_rog_serrated_blades(); } |