From 9b7a65535b7242f55770e0f0f4e80e9ff96dd479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind?= Date: Fri, 11 Sep 2026 23:40:21 +0200 Subject: [PATCH] fix(Core/Item): unlock openable item on the client when opened while dead (#27431) Co-authored-by: Claude Fable 5.1 --- src/server/game/Handlers/SpellHandler.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index a69c150455..3189ccd829 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -211,13 +211,6 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) if (pUser->m_mover != pUser) return; - // xinef: additional check, client outputs message on its own - if (!pUser->IsAlive()) - { - pUser->SendEquipError(EQUIP_ERR_YOU_ARE_DEAD, nullptr, nullptr); - return; - } - uint8 bagIndex, slot; recvPacket >> bagIndex >> slot; @@ -231,6 +224,15 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) return; } + // The client locks the item when it sends CMSG_OPEN_ITEM and only unlocks it on a loot + // response for that item's guid, so a plain equip error would leave it grayed out until /reload. + if (!pUser->IsAlive()) + { + pUser->SendEquipError(EQUIP_ERR_YOU_ARE_DEAD, item, nullptr); + pUser->SendLootRelease(item->GetGUID()); + return; + } + ItemTemplate const* proto = item->GetTemplate(); if (!proto) {