From 4bb49378fc62ac89e841d2525afdd054b40b0754 Mon Sep 17 00:00:00 2001 From: Discover- Date: Sun, 4 Aug 2013 23:10:21 +0200 Subject: Core/Items: Fix an exploit where players would be able to reset the cooldown of items to the equip cooldown (30 seconds) when unequipping, equipping and then relogging. --- src/server/game/Entities/Player/Player.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8f1669910e7..37f9b0c4b21 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22678,6 +22678,11 @@ void Player::ApplyEquipCooldown(Item* pItem) if (spellData.SpellTrigger != ITEM_SPELLTRIGGER_ON_USE) continue; + //! Don't replace longer cooldowns by equip cooldown if we have any. + SpellCooldowns::iterator itr = m_spellCooldowns.find(spellData.SpellId); + if (itr != m_spellCooldowns.end() && itr->second.itemid == pItem->GetEntry() && itr->second.end > time(NULL) + 30) + break; + AddSpellCooldown(spellData.SpellId, pItem->GetEntry(), time(NULL) + 30); WorldPacket data(SMSG_ITEM_COOLDOWN, 12); -- cgit v1.2.3