diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index a3ff906e..277d32fe 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -303,7 +303,7 @@ public class InventoryHelper( /// Item to add to grid /// Id of the container we're fitting item into /// Slot id value to use, default is "hideout" - public void PlaceItemInContainer( + public FindSlotResult PlaceItemInContainer( int[,] containerFS2D, List itemWithChildren, string containerId, @@ -338,7 +338,7 @@ public class InventoryHelper( serverLocalisationService.GetText("inventory-fill_container_failed", ex.Message) ); - return; + return findSlotResult; } // Store details for object, including container item will be placed in @@ -354,8 +354,10 @@ public class InventoryHelper( Rotation = findSlotResult.Rotation, }; - // Success! exit + // Success! } + + return findSlotResult; } /// @@ -1041,7 +1043,7 @@ public class InventoryHelper( /// /// Container to get data for /// blank two-dimensional array - public int[,] GetContainerSlotMap(string containerTpl) + public int[,] GetContainerSlotMap(MongoId containerTpl) { var containerTemplate = itemHelper.GetItem(containerTpl).Value; diff --git a/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs b/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs index 04219258..06601561 100644 --- a/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/CircleOfCultistService.cs @@ -128,7 +128,7 @@ public class CircleOfCultistService( } var rewards = hasDirectReward - ? GetDirectRewards(sessionId, directRewardSettings, cultistCircleStashId) + ? GetDirectRewards(sessionId, directRewardSettings, cultistCircleStashId.Value) : GetRewardsWithinBudget( GetCultistCircleRewardPool( sessionId, @@ -161,7 +161,7 @@ public class CircleOfCultistService( } /// - /// Get the reward amount multiple value based on players hideout management skill + configs rewardPriceMultiplerMinMax values + /// Get the reward amount multiple value based on players hideout management skill + configs rewardPriceMultiplierMinMax values /// /// Player profile /// Circle config settings @@ -198,7 +198,7 @@ public class CircleOfCultistService( protected void RegisterCircleOfCultistProduction( MongoId sessionId, PmcData pmcData, - string recipeId, + MongoId recipeId, List sacrificedItems, double craftingTime ) @@ -459,7 +459,7 @@ public class CircleOfCultistService( protected List> GetDirectRewards( MongoId sessionId, DirectRewardSettings directReward, - string cultistCircleStashId + MongoId cultistCircleStashId ) { // Prep rewards array (reward can be item with children, hence array of arrays) @@ -1023,12 +1023,19 @@ public class CircleOfCultistService( foreach (var itemToAdd in rewards) { - inventoryHelper.PlaceItemInContainer( + var result = inventoryHelper.PlaceItemInContainer( containerGrid, itemToAdd, cultistCircleStashId, CircleOfCultistSlotId ); + + if (!result.Success.GetValueOrDefault()) + { + logger.Warning("Failed to place sacrifice reward"); + continue; + } + // Add item + mods to output and profile inventory pmcData.Inventory.Items.AddRange(itemToAdd); }