From 58e3316c4562772a486e54cfe31d9976c97653a3 Mon Sep 17 00:00:00 2001 From: bashermens <31279994+hermensbas@users.noreply.github.com> Date: Wed, 24 Dec 2025 21:22:31 +0100 Subject: [PATCH] fix crashlog --- src/server/game/Entities/Item/Item.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 6258b57c8..bbe1ebb3d 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1277,11 +1277,16 @@ void Item::ClearSoulboundTradeable(Player* currentOwner) bool Item::CheckSoulboundTradeExpire() { - // called from owner's update - GetOwner() MUST be valid + // we have to check the owner for mod_playerbots since bots programically call methods like DestroyItem, + // MoveItemToMail, DestroyItemCount which do not handle soulboundTradeable clearing. + Player* owner = GetOwner(); + if (!owner) + return true; // expired + if (GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME) + 2 * HOUR < GetOwner()->GetTotalPlayedTime()) { ClearSoulboundTradeable(GetOwner()); - return true; // remove from tradeable list + return true; // expired } return false;