Made use of AddUpd extension

This commit is contained in:
Chomp
2025-08-05 15:56:23 +01:00
parent c7e40deb90
commit 3b4bcaf910
10 changed files with 33 additions and 23 deletions
@@ -1,4 +1,5 @@
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Extensions;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common;
@@ -48,8 +49,8 @@ public class HealthController(
return httpResponseUtil.AppendErrorToOutput(output, errorMessage);
}
// Ensure item has a upd object
itemHelper.AddUpdObjectToItem(healingItemToUse);
// Ensure item has an upd object
healingItemToUse.AddUpd();
if (healingItemToUse.Upd.MedKit is not null)
{
@@ -125,7 +126,7 @@ public class HealthController(
/// <summary>
/// Handle Eat event
/// Consume food/water outside of a raid
/// Consume food/water outside a raid
/// </summary>
/// <param name="pmcData">Player profile</param>
/// <param name="request">Eat request</param>
@@ -138,19 +139,20 @@ public class HealthController(
var itemToConsume = pmcData.Inventory.Items.FirstOrDefault(item => item.Id == request.Item);
if (itemToConsume is null)
// Item not found, very bad
{
// Item not found, very bad
return httpResponseUtil.AppendErrorToOutput(
output,
serverLocalisationService.GetText("health-unable_to_find_item_to_consume", request.Item)
);
}
var consumedItemMaxResource = itemHelper.GetItem(itemToConsume.Template).Value.Properties.MaxResource;
var foodItemDbDetails = itemHelper.GetItem(itemToConsume.Template).Value;
var consumedItemMaxResource = foodItemDbDetails.Properties.MaxResource;
if (consumedItemMaxResource > 1)
{
// Ensure item has a upd object
itemHelper.AddUpdObjectToItem(itemToConsume);
// Ensure item has an upd object
itemToConsume.AddUpd();
if (itemToConsume.Upd.FoodDrink is null)
{
@@ -171,7 +173,7 @@ public class HealthController(
}
// Check what effect eating item has and handle
var foodItemDbDetails = itemHelper.GetItem(itemToConsume.Template).Value;
var foodItemEffectDetails = foodItemDbDetails.Properties.EffectsHealth;
var foodIsSingleUse = foodItemDbDetails.Properties.MaxResource == 1;
@@ -831,11 +831,11 @@ public class HideoutController(
// Recipe has an `isEncoded` requirement for reward(s), Add `RecodableComponent` property
if (recipe.IsEncoded ?? false)
{
foreach (var reward in itemAndChildrenToSendToPlayer)
foreach (var rewardItems in itemAndChildrenToSendToPlayer)
{
itemHelper.AddUpdObjectToItem(reward.FirstOrDefault());
rewardItems.FirstOrDefault()?.AddUpd();
reward.FirstOrDefault().Upd.RecodableComponent = new UpdRecodableComponent { IsEncoded = true };
rewardItems.FirstOrDefault().Upd.RecodableComponent = new UpdRecodableComponent { IsEncoded = true };
}
}
@@ -1,4 +1,5 @@
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Extensions;
using SPTarkov.Server.Core.Generators;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Common;
@@ -685,7 +686,7 @@ public class InventoryController(
}
// Item may not have upd object
itemHelper.AddUpdObjectToItem(itemToFold);
itemToFold.AddUpd();
itemToFold.Upd.Foldable = new UpdFoldable { Folded = request.Value };
@@ -780,7 +780,7 @@ public class BotLootGenerator(
var currencyWeight = currencyWeights[moneyItem.Template];
itemHelper.AddUpdObjectToItem(moneyItem);
moneyItem.AddUpd();
moneyItem.Upd.StackObjectsCount = int.Parse(weightedRandomHelper.GetWeightedValue(currencyWeight));
}
@@ -794,7 +794,7 @@ public class BotLootGenerator(
public void RandomiseAmmoStackSize(bool isPmc, TemplateItem itemTemplate, Item ammoItem)
{
var randomSize = itemHelper.GetRandomisedAmmoStackSize(itemTemplate);
itemHelper.AddUpdObjectToItem(ammoItem);
ammoItem.AddUpd();
ammoItem.Upd.StackObjectsCount = randomSize;
}
@@ -1,6 +1,7 @@
using System.Diagnostics;
using SPTarkov.Common.Extensions;
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Extensions;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
@@ -695,7 +696,7 @@ public class RagfairOfferGenerator(
);
if (randomUtil.GetChance100(25) && visorMod != null)
{
itemHelper.AddUpdObjectToItem(visorMod);
visorMod.AddUpd();
visorMod.Upd.FaceShield = new UpdFaceShield { Hits = randomUtil.GetInt(1, 3) };
}
@@ -787,7 +788,7 @@ public class RagfairOfferGenerator(
var itemDbDetails = itemHelper.GetItem(armorItem.Template).Value;
if (itemDbDetails.Properties.ArmorClass > 1)
{
itemHelper.AddUpdObjectToItem(armorItem);
armorItem.AddUpd();
var baseMaxDurability = itemDbDetails.Properties.MaxDurability;
var lowestMaxDurability = randomUtil.GetDouble(maxMultiplier, 1) * baseMaxDurability;
@@ -72,9 +72,15 @@ public class HideoutHelper(
foreach (var tool in productionRequest.Tools)
{
var toolItem = cloner.Clone(pmcData.Inventory.Items.FirstOrDefault(x => x.Id == tool.Id));
if (toolItem is null)
{
logger.Warning($"Unable to find tool item: {tool.Id}");
continue;
}
// Make sure we only return as many as we took
itemHelper.AddUpdObjectToItem(toolItem);
toolItem.AddUpd();
toolItem.Upd.StackObjectsCount = tool.Count;
@@ -159,7 +159,7 @@ public class InventoryHelper(
foreach (var item in itemWithChildren)
{
// Ensure item has upd object
itemHelper.AddUpdObjectToItem(item);
item.AddUpd();
// Ammo / currency can NEVER be FiR or have a 'SpawnedInSession' property
item.Upd.SpawnedInSession = itemHelper.IsOfBaseclass(item.Template, BaseClasses.AMMO) ? null : foundInRaid;
@@ -559,7 +559,7 @@ public class QuestHelper(
if (newStackSize > 0)
{
var item = pmcData.Inventory.Items[inventoryItemIndex];
itemHelper.AddUpdObjectToItem(item);
item.AddUpd();
item.Upd.StackObjectsCount = newStackSize;
@@ -293,7 +293,7 @@ public class RewardHelper(
foreach (var rewardItem in reward.Items)
{
itemHelper.AddUpdObjectToItem(rewardItem);
rewardItem.AddUpd();
// Reward items are granted Found in Raid status
itemHelper.SetFoundInRaid(rewardItem);
@@ -386,7 +386,7 @@ public class RewardHelper(
reward.Target = rootItem.Id;
// Copy over stack count otherwise reward shows as missing in client
itemHelper.AddUpdObjectToItem(rootItem);
rootItem.AddUpd();
rootItem.Upd.StackObjectsCount = originalRewardRootItem.Upd.StackObjectsCount;
return;
}
@@ -1167,7 +1167,7 @@ public class FenceService(
string.Equals(mod.SlotId, requiredSlot.Name.ToLowerInvariant(), StringComparison.OrdinalIgnoreCase)
);
itemHelper.AddUpdObjectToItem(modItemToAdjust);
modItemToAdjust.AddUpd();
// Fence assorts can be null, ensure they have defaults
modItemToAdjust.Upd.Repairable ??= new UpdRepairable
@@ -1241,7 +1241,7 @@ public class FenceService(
continue;
}
itemHelper.AddUpdObjectToItem(modItemToAdjust);
modItemToAdjust.AddUpd();
if (modItemToAdjust?.Upd?.Repairable == null)
{