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;
}