From 19619ec0617c7866682576686495029f34042ded Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Jan 2025 13:56:47 +0000 Subject: [PATCH] partial fixes --- .../Generators/FenceBaseAssortGenerator.cs | 13 +++++++++---- Libraries/Core/Helpers/ItemHelper.cs | 4 ++-- Libraries/Core/Helpers/PresetHelper.cs | 2 +- Libraries/Core/Services/FenceService.cs | 19 +++++++------------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Libraries/Core/Generators/FenceBaseAssortGenerator.cs b/Libraries/Core/Generators/FenceBaseAssortGenerator.cs index 19ba0be1..9bf1a7e4 100644 --- a/Libraries/Core/Generators/FenceBaseAssortGenerator.cs +++ b/Libraries/Core/Generators/FenceBaseAssortGenerator.cs @@ -179,11 +179,16 @@ public class FenceBaseAssortGenerator( var itemQualityModifier = itemHelper.GetItemQualityModifierForItems(itemAndChildren); // Multiply weapon+mods rouble price by quality modifier - baseFenceAssort.BarterScheme[itemAndChildren[0].Id] = [[]]; - baseFenceAssort.BarterScheme[itemAndChildren[0].Id][0][0] = new BarterScheme() + baseFenceAssort.BarterScheme[itemAndChildren[0].Id] = new() { - Template = Money.ROUBLES, - Count = Math.Round(price * itemQualityModifier), + new() + { + new BarterScheme + { + Template = Money.ROUBLES, + Count = Math.Round(price * itemQualityModifier), + } + } }; baseFenceAssort.LoyalLevelItems[itemAndChildren[0].Id] = 1; diff --git a/Libraries/Core/Helpers/ItemHelper.cs b/Libraries/Core/Helpers/ItemHelper.cs index 1dc7a259..dc011626 100644 --- a/Libraries/Core/Helpers/ItemHelper.cs +++ b/Libraries/Core/Helpers/ItemHelper.cs @@ -470,7 +470,7 @@ public class ItemHelper( /// List of TemplateItem objects public List GetItems() { - return _cloner.Clone(_databaseService.GetItems().Values).ToList(); + return _cloner.Clone(_databaseService.GetItems().Values.ToList()); } /** @@ -1822,7 +1822,7 @@ public class ItemHelper( } // Has parentId + no remapping exists for its parent - if (mod.ParentId is not null && idMappings[mod.ParentId] is null) + if (mod.ParentId is not null && (!idMappings.ContainsKey(mod.ParentId) || idMappings?[mod.ParentId] is null)) { // Make remapping for items parentId idMappings[mod.ParentId] = _hashUtil.Generate(); diff --git a/Libraries/Core/Helpers/PresetHelper.cs b/Libraries/Core/Helpers/PresetHelper.cs index 133a22f3..73707766 100644 --- a/Libraries/Core/Helpers/PresetHelper.cs +++ b/Libraries/Core/Helpers/PresetHelper.cs @@ -63,7 +63,7 @@ public class PresetHelper( if (_defaultEquipmentPresets == null) { var tempPresets = _databaseService.GetGlobals().ItemPresets; - tempPresets = tempPresets.Where( + _defaultEquipmentPresets = tempPresets.Where( p => p.Value.Encyclopedia != null && _itemHelper.ArmorItemCanHoldMods(p.Value.Encyclopedia) diff --git a/Libraries/Core/Services/FenceService.cs b/Libraries/Core/Services/FenceService.cs index efc3a5be..292f7061 100644 --- a/Libraries/Core/Services/FenceService.cs +++ b/Libraries/Core/Services/FenceService.cs @@ -756,7 +756,7 @@ public class FenceService( continue; } - if (price > priceLimits[itemDbDetails.Parent]) + if (priceLimits.ContainsKey(itemDbDetails.Parent) && price > priceLimits[itemDbDetails.Parent]) { // Too expensive for fence, try another item i--; @@ -1024,11 +1024,9 @@ public class FenceService( RemoveRandomModsOfItem(presetWithChildrenClone); // Check chosen item is below price cap - var priceLimitRouble = traderConfig.Fence.ItemCategoryRoublePriceLimit[rootItemDb.Parent]; - var itemPrice = - handbookHelper.GetTemplatePriceForItems(presetWithChildrenClone) * - itemHelper.GetItemQualityModifierForItems(presetWithChildrenClone); - if (priceLimitRouble != null) + var itemPrice = handbookHelper.GetTemplatePriceForItems(presetWithChildrenClone) * + itemHelper.GetItemQualityModifierForItems(presetWithChildrenClone); + if (traderConfig.Fence.ItemCategoryRoublePriceLimit.TryGetValue(rootItemDb.Parent, out var priceLimitRouble)) { if (itemPrice > priceLimitRouble) { @@ -1305,15 +1303,13 @@ public class FenceService( } // Check for override in config, use values if exists - overrideValues = traderConfig.Fence.ItemStackSizeOverrideMinMax[itemDbDetails.Id]; - if (overrideValues != null) + if (traderConfig.Fence.ItemStackSizeOverrideMinMax.TryGetValue(itemDbDetails.Id, out overrideValues)) { return randomUtil.GetInt((int)overrideValues.Min, (int)overrideValues.Max); } // Check for parent override - overrideValues = traderConfig.Fence.ItemStackSizeOverrideMinMax[itemDbDetails.Parent]; - if (overrideValues != null) + if (traderConfig.Fence.ItemStackSizeOverrideMinMax.TryGetValue(itemDbDetails.Parent, out overrideValues)) { return randomUtil.GetInt((int)overrideValues.Min, (int)overrideValues.Max); } @@ -1366,8 +1362,7 @@ public class FenceService( protected bool PresetModItemWillBeRemoved(Item weaponMod, List itemsBeingDeleted) { var slotIdsThatCanFail = traderConfig.Fence.PresetSlotsToRemoveChancePercent; - var removalChance = slotIdsThatCanFail[weaponMod.SlotId]; - if (removalChance is null or 0.0) + if (!slotIdsThatCanFail.TryGetValue(weaponMod.SlotId, out var removalChance) || removalChance == 0.0) { return false; }