diff --git a/Libraries/SPTarkov.Server.Core/Extensions/ContainerExtensions.cs b/Libraries/SPTarkov.Server.Core/Extensions/ContainerExtensions.cs
index daee912b..47fd23e2 100644
--- a/Libraries/SPTarkov.Server.Core/Extensions/ContainerExtensions.cs
+++ b/Libraries/SPTarkov.Server.Core/Extensions/ContainerExtensions.cs
@@ -91,15 +91,15 @@ namespace SPTarkov.Server.Core.Extensions
/// Find a free slot for an item to be placed at
///
/// Container to place item in
- /// Container y size
- /// Container x size
+ /// Container y size
+ /// Container x size
/// Items width
/// Items height
/// is item rotated
public static void FillContainerMapWithItem(
this int[,] container2D,
- int desiredColumnPositionX,
- int desiredRowPositionY,
+ int columnStartPositionX,
+ int rowStartPositionY,
int? itemXWidth,
int? itemYHeight,
bool isRotated
@@ -112,14 +112,17 @@ namespace SPTarkov.Server.Core.Extensions
var itemWidth = isRotated ? itemYHeight : itemXWidth;
var itemHeight = isRotated ? itemXWidth : itemYHeight;
- for (var tmpY = desiredRowPositionY; tmpY < itemHeight; tmpY++)
+ var itemRowEndPosition = rowStartPositionY + itemHeight;
+ var itemColumnEndPosition = columnStartPositionX + itemWidth;
+
+ for (var y = rowStartPositionY; y < itemRowEndPosition; y++)
{
- for (var tmpX = desiredColumnPositionX; tmpX < itemWidth; tmpX++)
+ for (var x = columnStartPositionX; x < itemColumnEndPosition; x++)
{
- if (container2D[tmpY, tmpX] == 0)
+ if (container2D[y, x] == 0)
{
// Flag slot as used
- container2D[tmpY, tmpX] = 1;
+ container2D[y, x] = 1;
}
else
{
@@ -202,8 +205,8 @@ namespace SPTarkov.Server.Core.Extensions
/// Items width
/// Items height
/// True - slot found
- private static bool CanItemBePlacedInContainerAtPosition(
- int[,] container,
+ public static bool CanItemBePlacedInContainerAtPosition(
+ this int[,] container,
int startXPos,
int startYPos,
int itemXWidth,
@@ -229,12 +232,13 @@ namespace SPTarkov.Server.Core.Extensions
return container[startXPos, startYPos] == 0;
}
- // Check each slot, is any filled
- for (var checkY = startYPos; checkY < startYPos + itemYHeight; checkY++)
+ var itemEndColPosition = startXPos + itemXWidth;
+ var itemEndRowPosition = startYPos + itemYHeight;
+ for (var y = startYPos; y < itemEndColPosition; y++)
{
- for (var checkX = startXPos; checkX < startXPos + itemXWidth; checkX++)
+ for (var x = startXPos; x < itemEndRowPosition; x++)
{
- if (container[checkY, checkX] == 1)
+ if (container[y, x] == 1)
{
// Occupied by something
return false;
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs
index 46898095..c3380c0e 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/BotGeneratorHelper.cs
@@ -669,7 +669,7 @@ public class BotGeneratorHelper(
}
// Get x/y grid size of item
- var (width, height) = _inventoryHelper.GetItemSize(
+ var (itemWidth, itemHeight) = _inventoryHelper.GetItemSize(
rootItemTplId,
rootItemId,
itemWithChildren
@@ -684,7 +684,7 @@ public class BotGeneratorHelper(
if (
slotGrid.Props?.CellsH == 0
|| slotGrid.Props?.CellsV == 0
- || width * height > slotGrid.Props?.CellsV * slotGrid.Props?.CellsH
+ || itemWidth * itemHeight > slotGrid.Props?.CellsV * slotGrid.Props?.CellsH
)
{
continue;
@@ -722,7 +722,7 @@ public class BotGeneratorHelper(
);
// Try to fit item into grid
- var findSlotResult = slotGridMap.FindSlotForItem(width, height);
+ var findSlotResult = slotGridMap.FindSlotForItem(itemWidth, itemHeight);
// Free slot found, add item
if (findSlotResult.Success ?? false)
@@ -768,7 +768,7 @@ public class BotGeneratorHelper(
}
// if the item was a one by one, we know it must be full. Or if the maps cant find a slot for a one by one
- if (width == 1 && height == 1)
+ if (itemWidth == 1 && itemHeight == 1)
{
containersIdFull.Add(equipmentSlotId.ToString());
}
@@ -796,7 +796,7 @@ public class BotGeneratorHelper(
}
// Filter out all items without location prop, (child items)
- var itemsWithoutLocation = inventoryItems.Where(item => item.Location is null).ToList();
+ var itemsWithoutLocation = inventoryItems.Where(item => item.Location is null);
foreach (var rootItem in containerRootItems)
{
// Check item in container for children, store for later insertion into `containerItemsToCheck`