From a0002afe07363c8ae4b4cb0bd4d79fb748df85f9 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 23 Nov 2021 13:25:29 +0100 Subject: [PATCH] fix(Core/Spells): properly handle item cooldowns (#9176) - Closes #8918 --- src/server/game/Entities/Player/Player.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 031b17883..035b1c81b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -10139,6 +10139,7 @@ void Player::AddSpellAndCategoryCooldowns(SpellInfo const* spellInfo, uint32 ite // cooldown information stored in item prototype // This used in same way in WorldSession::HandleItemQuerySingleOpcode data sending to client. + bool useSpellCooldown = false; if (itemId) { if (ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemId)) @@ -10150,6 +10151,12 @@ void Player::AddSpellAndCategoryCooldowns(SpellInfo const* spellInfo, uint32 ite cat = proto->Spells[idx].SpellCategory; rec = proto->Spells[idx].SpellCooldown; catrec = proto->Spells[idx].SpellCategoryCooldown; + + if (static_cast(cat) != catrec) + { + useSpellCooldown = true; + } + break; } } @@ -10168,7 +10175,6 @@ void Player::AddSpellAndCategoryCooldowns(SpellInfo const* spellInfo, uint32 ite time_t recTime; bool needsCooldownPacket = false; - bool useSpellCooldown = false; // overwrite time for selected category if (infinityCooldown)