aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Holiver <root@server.linebr.com>2010-12-31 18:31:16 -0200
committerleak <leakzx@googlemail.com>2011-01-02 12:40:07 +0100
commit2b42dcadf7ca01b48be2fceef5288b5f0b28e61f (patch)
tree31d0952b2dab9288e6edbefe3b8a2189ea28672a /src
parenta1d185cc442f6b3042c79f27db8db6017271a896 (diff)
Fix T10 Bonus for:
- Paladin 2P Retribution - Shaman 4P Enhancement
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp8
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp44
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();
}