diff options
author | Trond B Krokli <tkrokli@gmail.com> | 2015-01-27 06:31:44 +0100 |
---|---|---|
committer | tkrokli <tkrokli@hotmail.com> | 2015-02-06 17:42:22 +0100 |
commit | 073c14eb4e5080f229661278b1be09e2f39179cc (patch) | |
tree | 66f042a1051cf38c88909d6437f63c8114638bfb /src | |
parent | 4adf31ce0ac5e41e80a61c107fd2c8cee64985eb (diff) |
Fix Cooldown for Raise Dead (Ghoul)
@joschiwald: Fix written on 31 Jan 2014.
@Nyeriah: suggested null pointer check.
@ariel-: supplied code for null pointer check.
@ccrs: supplied code (cat && spellInfo->CategoryRecoveryTime) to replace (cat && catRec)
@Dduarte: cleanup of bad edit based on my misinterpretation
Fixes issue #11538
Replaces #13941 and #13924
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 63580b355a4..b5e6e865531 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22138,6 +22138,34 @@ void Player::SendCooldownEvent(SpellInfo const* spellInfo, uint32 itemId /*= 0*/ data << uint32(spellInfo->Id); data << uint64(GetGUID()); SendDirectMessage(&data); + + uint32 cat = spellInfo->GetCategory(); + if (cat && spellInfo->CategoryRecoveryTime) + { + SpellCategoryStore::const_iterator ct = sSpellsByCategoryStore.find(cat); + if (ct != sSpellsByCategoryStore.end()) + { + SpellCategorySet const& catSet = ct->second; + for (SpellCooldowns::const_iterator i = m_spellCooldowns.begin(); i != m_spellCooldowns.end(); ++i) + { + if (i->first == spellInfo->Id) // skip main spell, already handled above + continue; + + SpellInfo const* spellInfo2 = sSpellMgr->GetSpellInfo(i->first); + if (!spellInfo2 || !spellInfo2->IsCooldownStartedOnEvent()) + continue; + + if (catSet.find(i->first) != catSet.end()) + { + // Send activate cooldown timer (possible 0) at client side + WorldPacket data(SMSG_COOLDOWN_EVENT, 4 + 8); + data << uint32(i->first); + data << uint64(GetGUID()); + SendDirectMessage(&data); + } + } + } + } } void Player::UpdatePotionCooldown(Spell* spell) |