diff options
Diffstat (limited to 'src/server')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 8 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 44 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 02c90810574..683e5e79751 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8543,6 +8543,14 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig // Maelstrom Weapon case 53817: { + // Item - Shaman T10 Enhancement 4P Bonus + if (AuraEffect * aurEff = ToPlayer()->GetAuraEffect(70832, 0)) + { + if (Aura *maelstrom = GetAura(53817)) + if ((maelstrom->GetStackAmount() == maelstrom->GetSpellProto()->StackAmount) && roll_chance_i(aurEff->GetAmount())) + CastSpell(this, 70831, true, castItem, triggeredByAura); + } + // have rank dependent proc chance, ignore too often cases // PPM = 2.5 * (rank of talent), uint32 rank = sSpellMgr->GetSpellRank(auraSpellInfo->Id); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 95a93b65b4c..c9b8f75b5fb 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -595,6 +595,49 @@ class spell_gen_shroud_of_death : public SpellScriptLoader } }; +enum DivineStormSpell +{ + SPELL_DIVINE_STORM = 53385, +}; + +// 70769 Divine Storm! +class spell_gen_divine_storm_cd_reset : public SpellScriptLoader +{ +public: + spell_gen_divine_storm_cd_reset() : SpellScriptLoader("spell_gen_divine_storm_cd_reset") {} + + class spell_gen_divine_storm_cd_reset_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_divine_storm_cd_reset_SpellScript) + bool Validate(SpellEntry const * /*spellEntry*/) + { + if (!sSpellStore.LookupEntry(SPELL_DIVINE_STORM)) + return false; + return true; + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Player *caster = GetCaster()->ToPlayer(); + if (caster->GetTypeId() != TYPEID_PLAYER) + return; + + if (caster->HasSpellCooldown(SPELL_DIVINE_STORM)) + caster->RemoveSpellCooldown(SPELL_DIVINE_STORM, true); + } + + void Register() + { + OnEffect += SpellEffectFn(spell_gen_divine_storm_cd_reset_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_gen_divine_storm_cd_reset_SpellScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -610,4 +653,5 @@ void AddSC_generic_spell_scripts() new spell_pvp_trinket_wotf_shared_cd(); new spell_gen_animal_blood(); new spell_gen_shroud_of_death(); + new spell_gen_divine_storm_cd_reset(); } |