partial fixes
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -470,7 +470,7 @@ public class ItemHelper(
|
||||
/// <returns>List of TemplateItem objects</returns>
|
||||
public List<TemplateItem> 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();
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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<string> 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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user