aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShocker <none@none>2010-09-08 16:00:10 +0300
committerShocker <none@none>2010-09-08 16:00:10 +0300
commitcbc7ca8655916c85b34d73830f5d035aea9507c5 (patch)
tree0b7ab1a28796c199a92b9b3a8bf255aae1ede4dc /src
parenta5d628ef3ec56e0a5f311e87db2c62c6de6689bd (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.cpp50
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();
}