From 5cf2e3cc7516dbec19d08094e05ea8fc5bc24e65 Mon Sep 17 00:00:00 2001 From: Asdow <20314541+Asdow@users.noreply.github.com> Date: Tue, 30 Jan 2024 22:52:09 +0200 Subject: [PATCH] LOBOT: enemies wear pistol holsters (by Seven) --- Tactical/Inventory Choosing.cpp | 40 +++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/Tactical/Inventory Choosing.cpp b/Tactical/Inventory Choosing.cpp index e6c1220e6..cbac1179a 100644 --- a/Tactical/Inventory Choosing.cpp +++ b/Tactical/Inventory Choosing.cpp @@ -2246,29 +2246,45 @@ void ChooseBombsForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bBombClas void ChooseLBEsForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bLBEClass ) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"ChooseLBEsForSoldierCreateStruct"); - //UINT16 i; - //INVTYPE *pItem; - //UINT16 usRandom; - UINT16 usItem = 0; // CHRISL: If we're using the old inventory system, just return if((UsingNewInventorySystem() == false)) return; - usItem = PickARandomItem( LBE, pp->ubSoldierClass, bLBEClass, FALSE ); + UINT16 usItem = PickARandomItem( LBE, pp->ubSoldierClass, bLBEClass, FALSE ); if ( usItem > 0 ) { CreateItem( usItem, (INT8)(80 + Random( 21 )), &gTempObject ); gTempObject.fFlags |= OBJECT_UNDROPPABLE; - // put backpacks into the backpack slot for LOBOT - if ((UsingNewInventorySystem()) && (Item[usItem].usItemClass & IC_LBEGEAR) && (LoadBearingEquipment[Item[usItem].ubClassIndex].lbeClass == BACKPACK)) - { - pp->Inv[BPACKPOCKPOS] = gTempObject; - } - else + + auto isLBEgear = Item[usItem].usItemClass & IC_LBEGEAR; + if (isLBEgear) { - PlaceObjectInSoldierCreateStruct( pp, &gTempObject ); + // put backpacks into the backpack slot for LOBOT + auto lbeClass = LoadBearingEquipment[Item[usItem].ubClassIndex].lbeClass; + if (lbeClass == BACKPACK && !pp->Inv[BPACKPOCKPOS].exists()) + { + pp->Inv[BPACKPOCKPOS] = gTempObject; + return; + } + // same for pistol holster + if (lbeClass == THIGH_PACK) + { + if (!pp->Inv[LTHIGHPOCKPOS].exists()) + { + pp->Inv[LTHIGHPOCKPOS] = gTempObject; + return; + } + if (!pp->Inv[RTHIGHPOCKPOS].exists()) + { + pp->Inv[RTHIGHPOCKPOS] = gTempObject; + return; + } + } } + + // Couldn't find a specific pocket, just stuff it somewhere + PlaceObjectInSoldierCreateStruct( pp, &gTempObject ); } }