From d6f344c8e80868bcd5d441fc917fe002304c402e Mon Sep 17 00:00:00 2001 From: therenderman1337 Date: Tue, 29 Sep 2026 18:28:32 -0400 Subject: [PATCH] Fshard/turn in quest crash fixes --- src/game/server/monsters/msmonsterserver.cpp | 20 ++++++++++---------- src/game/shared/ms/msmonstershared.cpp | 5 +++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/game/server/monsters/msmonsterserver.cpp b/src/game/server/monsters/msmonsterserver.cpp index 8d07556d..91bd9b46 100644 --- a/src/game/server/monsters/msmonsterserver.cpp +++ b/src/game/server/monsters/msmonsterserver.cpp @@ -2998,15 +2998,15 @@ void CMSMonster::UseMenuOption(CBasePlayer* pPlayer, int Option) FoundItems.clearitems(); while ((pItem = pPlayer->GetItemInInventory(LastItem, false, true, true)) && ((signed)FoundItems.size() < Amount)) { + if (FirstItem == 0) + FirstItem = pItem->m_iId; + else if (pItem->m_iId == FirstItem) + break; + if (pItem->ItemName == ItemName) FoundItems.add(pItem); LastItem = pItem->m_iId; - - if (FirstItem == 0) - FirstItem = LastItem; - else if (LastItem == FirstItem) - break; } if ((signed)FoundItems.size() < Amount) @@ -3156,15 +3156,15 @@ void CMSMonster::UseMenuOption(CBasePlayer* pPlayer, int Option) FoundItems.clearitems(); while ((pItem = pPlayer->GetItemInInventory(LastItem, false, true, true)) && ((signed)FoundItems.size() < Amount)) { + if (FirstItem == 0) + FirstItem = pItem->m_iId; + else if (pItem->m_iId == FirstItem) + break; + if (pItem->ItemName == ItemName) FoundItems.add(pItem); LastItem = pItem->m_iId; - - if (FirstItem == 0) - FirstItem = LastItem; - else if (LastItem == FirstItem) - break; } if ((signed)FoundItems.size() < Amount) diff --git a/src/game/shared/ms/msmonstershared.cpp b/src/game/shared/ms/msmonstershared.cpp index 40c837d8..ee90fea1 100644 --- a/src/game/shared/ms/msmonstershared.cpp +++ b/src/game/shared/ms/msmonstershared.cpp @@ -252,8 +252,9 @@ CGenericItem *CMSMonster::GetItemInInventory(uint StartID, bool WeaponOnly, bool if (pPack->m_Location > ITEMPOS_HANDS && !CheckWorn) continue; - if (!SearchName.len() || msstring(pPack->m_Name).starts_with(SearchName)) - Items.add(pPack); + if (pPack->m_Location != ITEMPOS_HANDS || Hand(pPack->m_Hand) != pPack) + if (!SearchName.len() || msstring(pPack->m_Name).starts_with(SearchName)) + Items.add(pPack); if (!FBitSet(pPack->MSProperties(), ITEM_CONTAINER)) continue;