diff options
author | Shocker <none@none> | 2010-09-08 16:00:10 +0300 |
---|---|---|
committer | Shocker <none@none> | 2010-09-08 16:00:10 +0300 |
commit | cbc7ca8655916c85b34d73830f5d035aea9507c5 (patch) | |
tree | 0b7ab1a28796c199a92b9b3a8bf255aae1ede4dc /src | |
parent | a5d628ef3ec56e0a5f311e87db2c62c6de6689bd (diff) |
Core/Spells: Fixed PvP Trinket / Every Man for Himself / Will of the Forsaken shared CD, fixes issue 1872, based on dr.tenma's patch
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index a45ebda6f2f..15b698a3bfc 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -144,9 +144,59 @@ class spell_creature_permanent_feign_death : public SpellScriptLoader } }; +enum PvPTrinketTriggeredSpells +{ + SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER = 72752, + SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER_WOTF = 72757, +}; +class spell_pvp_trinket_wotf_shared_cd : public SpellScriptLoader +{ +public: + spell_pvp_trinket_wotf_shared_cd() : SpellScriptLoader("spell_pvp_trinket_wotf_shared_cd") {} + + class spell_pvp_trinket_wotf_shared_cd_SpellScript : public SpellScript + { + bool Validate(SpellEntry const * /*spellEntry*/) + { + if (!sSpellStore.LookupEntry(SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER)) + return false; + if (!sSpellStore.LookupEntry(SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER_WOTF)) + return false; + return true; + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Player* pCaster = GetCaster()->ToPlayer(); + if (!pCaster) + return; + const SpellEntry* m_spellInfo = GetSpellInfo(); + + pCaster->AddSpellCooldown(m_spellInfo->Id, NULL, time(NULL) + GetSpellRecoveryTime(sSpellStore.LookupEntry(SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER)) / IN_MILLISECONDS); + WorldPacket data(SMSG_SPELL_COOLDOWN, 8+1+4); + data << uint64(pCaster->GetGUID()); + data << uint8(0); + data << uint32(m_spellInfo->Id); + data << uint32(0); + pCaster->GetSession()->SendPacket(&data); + } + + void Register() + { + OnEffect += SpellEffectFn(spell_pvp_trinket_wotf_shared_cd_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_pvp_trinket_wotf_shared_cd_SpellScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_pet_summoned(); new spell_gen_remove_flight_auras(); new spell_creature_permanent_feign_death(); + new spell_pvp_trinket_wotf_shared_cd(); } |