diff --git a/Libraries/SPTarkov.Server.Core/Controllers/HealthController.cs b/Libraries/SPTarkov.Server.Core/Controllers/HealthController.cs index 10135df7..0a6309d5 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/HealthController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/HealthController.cs @@ -177,15 +177,15 @@ public class HealthController( var foodItemEffectDetails = foodItemDbDetails.Properties.EffectsHealth; var foodIsSingleUse = foodItemDbDetails.Properties.MaxResource == 1; - foreach (var (key, effectProps) in foodItemEffectDetails) + foreach (var (key, effectProperties) in foodItemEffectDetails) { switch (key) { case HealthFactor.Hydration: - ApplyEdibleEffect(pmcData.Health.Hydration, effectProps, foodIsSingleUse, request); + ApplyEdibleEffect(pmcData.Health.Hydration, effectProperties, foodIsSingleUse, request); break; case HealthFactor.Energy: - ApplyEdibleEffect(pmcData.Health.Energy, effectProps, foodIsSingleUse, request); + ApplyEdibleEffect(pmcData.Health.Energy, effectProperties, foodIsSingleUse, request); break; default: @@ -206,7 +206,7 @@ public class HealthController( /// Client request protected void ApplyEdibleEffect( CurrentMinMax bodyValue, - EffectsHealthProps consumptionDetails, + EffectsHealthProperties consumptionDetails, bool foodIsSingleUse, OffraidEatRequestData request ) diff --git a/Libraries/SPTarkov.Server.Core/Extensions/TemplateItemExtensions.cs b/Libraries/SPTarkov.Server.Core/Extensions/TemplateItemExtensions.cs index 344446d9..59b0a5b9 100644 --- a/Libraries/SPTarkov.Server.Core/Extensions/TemplateItemExtensions.cs +++ b/Libraries/SPTarkov.Server.Core/Extensions/TemplateItemExtensions.cs @@ -56,7 +56,7 @@ public static class TemplateItemExtensions string.Equals(slot.Name, modSlot, StringComparison.OrdinalIgnoreCase) ); - return relatedItemDbModSlot?.Props?.Filters?.FirstOrDefault()?.Plate; + return relatedItemDbModSlot?.Properties?.Filters?.FirstOrDefault()?.Plate; } /// diff --git a/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs index bf3b7d56..c01f93f8 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/BotEquipmentModGenerator.cs @@ -1137,7 +1137,7 @@ public class BotEquipmentModGenerator( } // Filter modpool to only items that appear in parents allowed list - preFilteredModPool = preFilteredModPool.Where(tpl => parentSlot.Props.Filters.First().Filter.Contains(tpl)).ToHashSet(); + preFilteredModPool = preFilteredModPool.Where(tpl => parentSlot.Properties.Filters.First().Filter.Contains(tpl)).ToHashSet(); if (preFilteredModPool.Count == 0) { return new ChooseRandomCompatibleModResult @@ -1326,7 +1326,7 @@ public class BotEquipmentModGenerator( .ParentTemplate.Properties.Slots?.FirstOrDefault(slot => string.Equals(slot.Name.ToLowerInvariant(), request.ModSlot.ToLowerInvariant(), StringComparison.Ordinal) ) - ?.Props.Filters?.First() + ?.Properties.Filters?.First() .Filter; // Mod isn't in existing pool, only add if it has no children and exists inside parent filter @@ -1476,7 +1476,7 @@ public class BotEquipmentModGenerator( public MongoId? GetRandomModTplFromItemDb(MongoId fallbackModTpl, Slot parentSlot, string modSlot, IEnumerable items) { // Find compatible mods and make an array of them - var allowedItems = parentSlot.Props.Filters.First().Filter; + var allowedItems = parentSlot.Properties.Filters.First().Filter; // Find mod item that fits slot from sorted mod array var exhaustableModPool = CreateExhaustableArray(allowedItems); @@ -1573,7 +1573,7 @@ public class BotEquipmentModGenerator( { var desiredSlotObject = modTemplate.Properties?.Slots?.FirstOrDefault(slot => slot.Name.Contains(desiredSlotName)); - var supportedSubMods = desiredSlotObject?.Props?.Filters?.FirstOrDefault()?.Filter; + var supportedSubMods = desiredSlotObject?.Properties?.Filters?.FirstOrDefault()?.Filter; if (supportedSubMods is null) { return; @@ -1689,7 +1689,7 @@ public class BotEquipmentModGenerator( modPool[cylinderMagTemplate.Id] = new Dictionary>(); foreach (var camora in camoraSlots) { - modPool[cylinderMagTemplate.Id][camora.Name] = camora.Props.Filters.First().Filter.ToHashSet(); + modPool[cylinderMagTemplate.Id][camora.Name] = camora.Properties.Filters.First().Filter.ToHashSet(); } itemModPool = modPool[cylinderMagTemplate.Id]; @@ -1818,7 +1818,7 @@ public class BotEquipmentModGenerator( // Mods scope slot found must allow ALL whitelisted scope types OR be a mount if ( scopeSlot?.All(slot => - slot.Props.Filters.FirstOrDefault() + slot.Properties.Filters.FirstOrDefault() .Filter.All(tpl => itemHelper.IsOfBaseclasses(tpl, whitelistedSightTypes) || itemHelper.IsOfBaseclass(tpl, BaseClasses.MOUNT) ) diff --git a/Libraries/SPTarkov.Server.Core/Generators/BotWeaponGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/BotWeaponGenerator.cs index b0082b73..d70fedce 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/BotWeaponGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/BotWeaponGenerator.cs @@ -204,7 +204,7 @@ public class BotWeaponGenerator( // Add cartridge(s) to gun chamber(s) if ( (weaponItemTemplate.Properties?.Chambers).Any() - && weaponItemTemplate.Properties.Chambers.FirstOrDefault().Props.Filters.FirstOrDefault().Filter.Contains(ammoTpl) + && weaponItemTemplate.Properties.Chambers.FirstOrDefault().Properties.Filters.FirstOrDefault().Filter.Contains(ammoTpl) ) { // Guns have variety of possible Chamber ids, patron_in_weapon/patron_in_weapon_000/patron_in_weapon_001 @@ -671,7 +671,7 @@ public class BotWeaponGenerator( { ArgumentNullException.ThrowIfNull(weaponTemplate); - var cartridges = weaponTemplate.Properties?.Chambers?.FirstOrDefault()?.Props?.Filters?.First().Filter; + var cartridges = weaponTemplate.Properties?.Chambers?.FirstOrDefault()?.Properties?.Filters?.First().Filter; if (cartridges is not null) { return cartridges; @@ -699,7 +699,7 @@ public class BotWeaponGenerator( } var magazineTemplate = itemHelper.GetItem( - magazineSlot.Props?.Filters.FirstOrDefault()?.Filter?.FirstOrDefault() ?? new MongoId(null) + magazineSlot.Properties?.Filters.FirstOrDefault()?.Filter?.FirstOrDefault() ?? new MongoId(null) ); if (!magazineTemplate.Key) { @@ -708,10 +708,8 @@ public class BotWeaponGenerator( // Try to get cartridges from slots array first, if none found, try Cartridges array var cartridges = - magazineTemplate.Value.Properties.Slots.FirstOrDefault()?.Props?.Filters.FirstOrDefault()?.Filter ?? magazineTemplate - .Value.Properties.Cartridges.FirstOrDefault() - ?.Props?.Filters.FirstOrDefault() - ?.Filter; + magazineTemplate.Value.Properties.Slots.FirstOrDefault()?.Properties?.Filters.FirstOrDefault()?.Filter + ?? magazineTemplate.Value.Properties.Cartridges.FirstOrDefault()?.Properties?.Filters.FirstOrDefault()?.Filter; return cartridges ?? []; } @@ -737,7 +735,7 @@ public class BotWeaponGenerator( if (!string.IsNullOrEmpty(weaponTemplate.Properties.LinkedWeapon)) { var ammoInChamber = itemHelper.GetItem( - weaponTemplate.Properties.Chambers.First().Props.Filters.First().Filter.FirstOrDefault() + weaponTemplate.Properties.Chambers.First().Properties.Filters.First().Filter.FirstOrDefault() ); return !ammoInChamber.Key ? null : ammoInChamber.Value.Properties.Caliber; } diff --git a/Libraries/SPTarkov.Server.Core/Generators/FenceBaseAssortGenerator.cs b/Libraries/SPTarkov.Server.Core/Generators/FenceBaseAssortGenerator.cs index 40f5b4ca..bebfa273 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/FenceBaseAssortGenerator.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/FenceBaseAssortGenerator.cs @@ -209,7 +209,7 @@ public class FenceBaseAssortGenerator( if (itemHelper.IsOfBaseclass(rootItemDb.Id, BaseClasses.AMMO_BOX)) { // Get the cartridge tpl found inside ammo box - var cartridgeTplInBox = rootItemDb.Properties.StackSlots.First().Props.Filters.First().Filter.FirstOrDefault(); + var cartridgeTplInBox = rootItemDb.Properties.StackSlots.First().Properties.Filters.First().Filter.FirstOrDefault(); // Look up cartridge tpl in db var ammoItemDb = itemHelper.GetItem(cartridgeTplInBox); @@ -253,8 +253,8 @@ public class FenceBaseAssortGenerator( { foreach (var requiredSlot in requiredSlots) { - var modItemDbDetails = itemHelper.GetItem(requiredSlot.Props.Filters.First().Plate.Value).Value; - var plateTpl = requiredSlot.Props.Filters.First().Plate; // `Plate` property appears to be the 'default' item for slot + var modItemDbDetails = itemHelper.GetItem(requiredSlot.Properties.Filters.First().Plate.Value).Value; + var plateTpl = requiredSlot.Properties.Filters.First().Plate; // `Plate` property appears to be the 'default' item for slot if (plateTpl is null || plateTpl.Value.IsEmpty) // Some bsg plate properties are empty, skip mod { @@ -287,7 +287,7 @@ public class FenceBaseAssortGenerator( { foreach (var plateSlot in plateSlots) { - var plateTpl = plateSlot.Props.Filters.First().Plate; + var plateTpl = plateSlot.Properties.Filters.First().Plate; if (string.IsNullOrEmpty(plateTpl)) // Bsg data lacks a default plate, skip adding mod { @@ -299,7 +299,7 @@ public class FenceBaseAssortGenerator( new Item { Id = new MongoId(), - Template = plateSlot.Props.Filters.First().Plate.Value, // `Plate` property appears to be the 'default' item for slot + Template = plateSlot.Properties.Filters.First().Plate.Value, // `Plate` property appears to be the 'default' item for slot ParentId = armor[0].Id, SlotId = plateSlot.Name, Upd = new Upd diff --git a/Libraries/SPTarkov.Server.Core/Generators/WeaponGen/Implementations/ExternalInventoryMagGen.cs b/Libraries/SPTarkov.Server.Core/Generators/WeaponGen/Implementations/ExternalInventoryMagGen.cs index 566ae17a..d3609888 100644 --- a/Libraries/SPTarkov.Server.Core/Generators/WeaponGen/Implementations/ExternalInventoryMagGen.cs +++ b/Libraries/SPTarkov.Server.Core/Generators/WeaponGen/Implementations/ExternalInventoryMagGen.cs @@ -177,7 +177,7 @@ public class ExternalInventoryMagGen( // All possible mags that fit into the weapon excluding blacklisted var magazinePool = magSlot - .Props.Filters.First() + .Properties.Filters.First() .Filter.Where(x => !magazineBlacklist.Contains(x)) .Select(x => itemHelper.GetItem(x).Value); if (magazinePool is null) diff --git a/Libraries/SPTarkov.Server.Core/Helpers/BotWeaponGeneratorHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/BotWeaponGeneratorHelper.cs index 04727e88..8faf762f 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/BotWeaponGeneratorHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/BotWeaponGeneratorHelper.cs @@ -38,7 +38,8 @@ public class BotWeaponGeneratorHelper( if (MagazineIsCylinderRelated(parentItem.Name ?? string.Empty)) { var firstSlotAmmoTpl = - magTemplate.Properties?.Cartridges?.FirstOrDefault()?.Props?.Filters?.First().Filter?.FirstOrDefault() ?? new MongoId(null); + magTemplate.Properties?.Cartridges?.FirstOrDefault()?.Properties?.Filters?.First().Filter?.FirstOrDefault() + ?? new MongoId(null); var ammoMaxStackSize = itemHelper.GetItem(firstSlotAmmoTpl).Value?.Properties?.StackMaxSize ?? 1; chamberBulletCount = ammoMaxStackSize == 1 diff --git a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs index 870b1e33..52e4488d 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/InventoryHelper.cs @@ -913,8 +913,8 @@ public class InventoryHelper( var containerTemplate = itemHelper.GetItem(containerTpl).Value; var firstContainerGrid = containerTemplate.Properties.Grids.FirstOrDefault(); - var containerRowCount = firstContainerGrid.Props.CellsH; - var containerColumnCount = firstContainerGrid.Props.CellsV; + var containerRowCount = firstContainerGrid.Properties.CellsH; + var containerColumnCount = firstContainerGrid.Properties.CellsV; return itemHelper.GetBlankContainerMap(containerColumnCount.Value, containerRowCount.Value); } @@ -959,8 +959,8 @@ public class InventoryHelper( var firstStashItemGrid = stashItemDbItem?.Properties?.Grids?.FirstOrDefault(); // Get horizontal and vertical size - var stashH = firstStashItemGrid.Props.CellsH != 0 ? firstStashItemGrid.Props.CellsH : 10; - var stashV = firstStashItemGrid.Props.CellsV != 0 ? firstStashItemGrid.Props.CellsV : 66; + var stashH = firstStashItemGrid.Properties.CellsH != 0 ? firstStashItemGrid.Properties.CellsH : 10; + var stashV = firstStashItemGrid.Properties.CellsV != 0 ? firstStashItemGrid.Properties.CellsV : 66; // Player has a bonus, apply to vertical size var stashRowBonus = pmcData.Bonuses.FirstOrDefault(bonus => bonus.Type == BonusType.StashRows); diff --git a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs index ced82616..af534bbd 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/ItemHelper.cs @@ -1306,7 +1306,7 @@ public class ItemHelper( /// Valid caliber for cartridge public MongoId? GetRandomCompatibleCaliberTemplateId(TemplateItem item) { - var cartridges = item.Properties?.Cartridges?.FirstOrDefault()?.Props?.Filters?.FirstOrDefault()?.Filter; + var cartridges = item.Properties?.Cartridges?.FirstOrDefault()?.Properties?.Filters?.FirstOrDefault()?.Filter; if (cartridges is null) { logger.Warning($"Failed to find cartridge for item: {item.Id} {item.Name}"); @@ -1324,7 +1324,7 @@ public class ItemHelper( public void AddCartridgesToAmmoBox(List ammoBox, TemplateItem ammoBoxDetails) { var ammoBoxMaxCartridgeCount = ammoBoxDetails.Properties?.StackSlots?.First().MaxCount; - var cartridgeTpl = ammoBoxDetails.Properties?.StackSlots?.First().Props?.Filters?.First().Filter?.FirstOrDefault(); + var cartridgeTpl = ammoBoxDetails.Properties?.StackSlots?.First().Properties?.Filters?.First().Filter?.FirstOrDefault(); var cartridgeDetails = GetItem(cartridgeTpl!.Value); var cartridgeMaxStackSize = cartridgeDetails.Value?.Properties?.StackMaxSize; @@ -1369,7 +1369,7 @@ public class ItemHelper( public void AddSingleStackCartridgesToAmmoBox(List ammoBox, TemplateItem ammoBoxDetails) { var ammoBoxMaxCartridgeCount = ammoBoxDetails.Properties?.StackSlots?.First().MaxCount ?? 0; - var cartridgeTpl = ammoBoxDetails.Properties?.StackSlots?.First().Props?.Filters?.First().Filter?.FirstOrDefault(); + var cartridgeTpl = ammoBoxDetails.Properties?.StackSlots?.First().Properties?.Filters?.First().Filter?.FirstOrDefault(); ammoBox.Add(CreateCartridges(ammoBox[0].Id, cartridgeTpl!.Value, (int)ammoBoxMaxCartridgeCount, 0)); } @@ -1409,7 +1409,7 @@ public class ItemHelper( chosenCaliber, staticAmmoDist, defaultCartridgeTpl, - weapon?.Properties?.Chambers?.FirstOrDefault()?.Props?.Filters?.FirstOrDefault()?.Filter ?? null + weapon?.Properties?.Chambers?.FirstOrDefault()?.Properties?.Filters?.FirstOrDefault()?.Filter ?? null ); if (cartridgeTpl is null) { @@ -1459,10 +1459,10 @@ public class ItemHelper( } // Get max number of cartridges in magazine, choose random value between min/max - var magProps = magTemplate.Properties; + var magProperties = magTemplate.Properties; var magazineCartridgeMaxCount = IsOfBaseclass(magTemplate.Id, BaseClasses.SPRING_DRIVEN_CYLINDER) - ? magProps?.Slots?.Count() // Edge case for rotating grenade launcher magazine - : magProps?.Cartridges?.FirstOrDefault()?.MaxCount; + ? magProperties?.Slots?.Count() // Edge case for rotating grenade launcher magazine + : magProperties?.Cartridges?.FirstOrDefault()?.MaxCount; if (magazineCartridgeMaxCount is null) { @@ -1519,7 +1519,7 @@ public class ItemHelper( /// Tpl of cartridge protected string? GetRandomValidCaliber(TemplateItem magTemplate) { - var ammoTpls = magTemplate.Properties?.Cartridges?.First().Props?.Filters?.First().Filter; + var ammoTpls = magTemplate.Properties?.Cartridges?.First().Properties?.Filters?.First().Filter; var calibers = ammoTpls?.Where(x => GetItem(x).Key).Select(x => GetItem(x).Value?.Properties?.Caliber).ToList(); if (calibers is null) @@ -1679,7 +1679,7 @@ public class ItemHelper( } } - var itemPool = slot.Props?.Filters?.FirstOrDefault()?.Filter ?? []; + var itemPool = slot.Properties?.Filters?.FirstOrDefault()?.Filter ?? []; if (itemPool.Count == 0) { if (logger.IsLogEnabled(LogLevel.Debug)) @@ -1869,8 +1869,8 @@ public class ItemHelper( var containerTemplate = GetItem(containerTpl).Value; // Get height/width - var height = containerTemplate?.Properties?.Grids?.First().Props?.CellsV; - var width = containerTemplate?.Properties?.Grids?.First().Props?.CellsH; + var height = containerTemplate?.Properties?.Grids?.First().Properties?.CellsV; + var width = containerTemplate?.Properties?.Grids?.First().Properties?.CellsH; if (height is null || width is null) { diff --git a/Libraries/SPTarkov.Server.Core/Helpers/RepairHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/RepairHelper.cs index 8ebb407f..bab40c9a 100644 --- a/Libraries/SPTarkov.Server.Core/Helpers/RepairHelper.cs +++ b/Libraries/SPTarkov.Server.Core/Helpers/RepairHelper.cs @@ -137,25 +137,25 @@ public class RepairHelper( /// /// Repairing weapons reduces the total durability value slightly, get a randomised (to 2dp) amount /// - /// Weapon properties + /// Weapon properties /// Was a repair kit used /// Max amount of durability item can have /// Different traders produce different loss values /// Amount to reduce max durability by protected double GetRandomisedWeaponRepairDegradationValue( - Props itemProps, + TemplateItemProperties itemProperties, bool isRepairKit, double weaponMax, double traderQualityMultiplier ) { - var minRepairDeg = isRepairKit ? itemProps.MinRepairKitDegradation : itemProps.MinRepairDegradation; - var maxRepairDeg = isRepairKit ? itemProps.MaxRepairKitDegradation : itemProps.MaxRepairDegradation; + var minRepairDeg = isRepairKit ? itemProperties.MinRepairKitDegradation : itemProperties.MinRepairDegradation; + var maxRepairDeg = isRepairKit ? itemProperties.MaxRepairKitDegradation : itemProperties.MaxRepairDegradation; // WORKAROUND: Some items are always 0 when repairkit is true if (maxRepairDeg == 0) { - maxRepairDeg = itemProps.MaxRepairDegradation; + maxRepairDeg = itemProperties.MaxRepairDegradation; } var duraLossPercent = randomUtil.GetDouble((double)minRepairDeg, (double)maxRepairDeg); diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs index 42d462ee..b86660b9 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/LocationBase.cs @@ -790,10 +790,10 @@ public record ColliderParams } [JsonPropertyName("_props")] - public ColliderProps? Props { get; set; } + public ColliderProperties? Properties { get; set; } } -public record ColliderProps +public record ColliderProperties { [JsonPropertyName("Center")] public XYZ? Center { get; set; } diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomizationItem.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomizationItem.cs index 8d784135..de0cb0d2 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomizationItem.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/CustomizationItem.cs @@ -18,13 +18,13 @@ public record CustomizationItem public string Type { get; set; } [JsonPropertyName("_props")] - public CustomizationProps Properties { get; set; } + public CustomizationProperties Properties { get; set; } [JsonPropertyName("_proto")] public string Proto { get; set; } } -public class CustomizationProps +public class CustomizationProperties { [JsonPropertyName("Prefab")] public object? Prefab { get; set; } // Prefab object or string diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/TemplateItem.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/TemplateItem.cs index 5abbf539..8b00ccb5 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/TemplateItem.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Common/Tables/TemplateItem.cs @@ -37,7 +37,7 @@ public record TemplateItem } [JsonPropertyName("_props")] - public Props? Properties { get; set; } + public TemplateItemProperties? Properties { get; set; } [JsonPropertyName("_proto")] public string? Prototype @@ -68,7 +68,7 @@ public record TemplateItem } } -public record Props +public record TemplateItemProperties { private string? _backgroundColor; @@ -1108,12 +1108,12 @@ public record Props [JsonPropertyName("effects_health")] [JsonConverter(typeof(ArrayToObjectFactoryConverter))] [JsonIgnore(Condition = JsonIgnoreCondition.Never)] - public Dictionary? EffectsHealth { get; set; } + public Dictionary? EffectsHealth { get; set; } [JsonPropertyName("effects_damage")] [JsonConverter(typeof(ArrayToObjectFactoryConverter))] [JsonIgnore(Condition = JsonIgnoreCondition.Never)] - public Dictionary? EffectsDamage { get; set; } + public Dictionary? EffectsDamage { get; set; } // Confirmed in client [JsonPropertyName("MaximumNumberOfUsage")] @@ -1666,13 +1666,13 @@ public record Grid public string? Parent { get; set; } [JsonPropertyName("_props")] - public GridProps? Props { get; set; } + public GridProperties? Properties { get; set; } [JsonPropertyName("_proto")] public string? Proto { get; set; } } -public record GridProps +public record GridProperties { [JsonPropertyName("filters")] public IEnumerable? Filters { get; set; } @@ -1728,7 +1728,7 @@ public record Slot public string? Parent { get; set; } [JsonPropertyName("_props")] - public SlotProps? Props { get; set; } + public SlotProperties? Properties { get; set; } [JsonPropertyName("_max_count")] public double? MaxCount { get; set; } @@ -1747,7 +1747,7 @@ public record Slot } } -public record SlotProps +public record SlotProperties { [JsonPropertyName("filters")] public IEnumerable? Filters { get; set; } @@ -1801,7 +1801,7 @@ public record StackSlot public double? MaxCount { get; set; } [JsonPropertyName("_props")] - public StackSlotProps? Props { get; set; } + public StackSlotProperties? Properties { get; set; } [JsonPropertyName("_proto")] public string? Proto { get; set; } @@ -1810,7 +1810,7 @@ public record StackSlot public object? Upd { get; set; } // TODO: object here } -public record StackSlotProps +public record StackSlotProperties { [JsonPropertyName("filters")] public IEnumerable? Filters { get; set; } @@ -1858,13 +1858,13 @@ public record RandomLootExcluded public record EffectsHealth { [JsonPropertyName("Energy")] - public EffectsHealthProps? Energy { get; set; } + public EffectsHealthProperties? Energy { get; set; } [JsonPropertyName("Hydration")] - public EffectsHealthProps? Hydration { get; set; } + public EffectsHealthProperties? Hydration { get; set; } } -public record EffectsHealthProps +public record EffectsHealthProperties { [JsonPropertyName("value")] public double? Value { get; set; } @@ -1879,28 +1879,28 @@ public record EffectsHealthProps public record EffectsDamage { [JsonPropertyName("Pain")] - public EffectDamageProps? Pain { get; set; } + public EffectsDamageProperties? Pain { get; set; } [JsonPropertyName("LightBleeding")] - public EffectDamageProps? LightBleeding { get; set; } + public EffectsDamageProperties? LightBleeding { get; set; } [JsonPropertyName("HeavyBleeding")] - public EffectDamageProps? HeavyBleeding { get; set; } + public EffectsDamageProperties? HeavyBleeding { get; set; } [JsonPropertyName("Contusion")] - public EffectDamageProps? Contusion { get; set; } + public EffectsDamageProperties? Contusion { get; set; } [JsonPropertyName("RadExposure")] - public EffectDamageProps? RadExposure { get; set; } + public EffectsDamageProperties? RadExposure { get; set; } [JsonPropertyName("Fracture")] - public EffectDamageProps? Fracture { get; set; } + public EffectsDamageProperties? Fracture { get; set; } [JsonPropertyName("DestroyedPart")] - public EffectDamageProps? DestroyedPart { get; set; } + public EffectsDamageProperties? DestroyedPart { get; set; } } -public record EffectDamageProps +public record EffectsDamageProperties { [JsonPropertyName("value")] public double? Value { get; set; } diff --git a/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs b/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs index 69c924c8..1056d490 100644 --- a/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs +++ b/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/NewItemDetails.cs @@ -22,7 +22,7 @@ public record NewItemFromCloneDetails : NewItemDetailsBase /// Item properties that should be applied over the top of the cloned base /// [JsonPropertyName("overrideProperties")] - public Props? OverrideProperties { get; set; } + public TemplateItemProperties? OverrideProperties { get; set; } /// /// ParentId for the new item (item type) diff --git a/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs b/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs index fae40144..f2c6ba23 100644 --- a/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/BotEquipmentModPoolService.cs @@ -83,7 +83,7 @@ public class BotEquipmentModPoolService( foreach (var slot in item.Properties.Slots) { // Get mods that fit into the current mod slot - var itemsThatFit = slot.Props.Filters.FirstOrDefault().Filter; + var itemsThatFit = slot.Properties.Filters.FirstOrDefault().Filter; // Get weapon/armor pool to add mod slots + mod tpls to @@ -208,7 +208,7 @@ public class BotEquipmentModPoolService( result.TryAdd(slot.Name, []); // Add compatible tpls to dicts hashset - foreach (var compatibleItemTpl in slot.Props.Filters.FirstOrDefault().Filter) + foreach (var compatibleItemTpl in slot.Properties.Filters.FirstOrDefault().Filter) { result[slot.Name].Add(compatibleItemTpl); } diff --git a/Libraries/SPTarkov.Server.Core/Services/BotInventoryContainerService.cs b/Libraries/SPTarkov.Server.Core/Services/BotInventoryContainerService.cs index 67d6836c..243d5263 100644 --- a/Libraries/SPTarkov.Server.Core/Services/BotInventoryContainerService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/BotInventoryContainerService.cs @@ -333,7 +333,7 @@ public class BotInventoryContainerService(ISptLogger logger, { // Assume all grids have same limitations var firstSlotGrid = containerDetails.ContainerDbItem.Properties.Grids.FirstOrDefault(); - var propFilters = firstSlotGrid?.Props?.Filters; + var propFilters = firstSlotGrid?.Properties?.Filters; if (propFilters is null || !propFilters.Any()) // No filters, item is fine to add { @@ -425,7 +425,7 @@ public class BotInventoryContainerService(ISptLogger logger, ContainerGridDetails.Add( new ContainerMapDetails { - GridMap = new int[grid.Props.CellsV.GetValueOrDefault(), grid.Props.CellsH.GetValueOrDefault()], + GridMap = new int[grid.Properties.CellsV.GetValueOrDefault(), grid.Properties.CellsH.GetValueOrDefault()], GridFull = false, } ); diff --git a/Libraries/SPTarkov.Server.Core/Services/BotLootCacheService.cs b/Libraries/SPTarkov.Server.Core/Services/BotLootCacheService.cs index 2e4f2b22..cf96674b 100644 --- a/Libraries/SPTarkov.Server.Core/Services/BotLootCacheService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/BotLootCacheService.cs @@ -492,41 +492,41 @@ public class BotLootCacheService( /// /// Ammo/grenades have this property /// - /// + /// /// - protected bool IsBulletOrGrenade(Props props) + protected bool IsBulletOrGrenade(TemplateItemProperties properties) { - return props.AmmoType is not null; + return properties.AmmoType is not null; } /// /// Internal and external magazine have this property /// - /// + /// /// - protected bool IsMagazine(Props props) + protected bool IsMagazine(TemplateItemProperties properties) { - return props.ReloadMagType is not null; + return properties.ReloadMagType is not null; } /// /// Medical use items (e.g. morphine/lip balm/grizzly) /// - /// + /// /// - protected bool IsMedicalItem(Props props) + protected bool IsMedicalItem(TemplateItemProperties properties) { - return props.MedUseTime is not null; + return properties.MedUseTime is not null; } /// /// Grenades have this property (e.g. smoke/frag/flash grenades) /// - /// + /// /// - protected bool IsGrenade(Props props) + protected bool IsGrenade(TemplateItemProperties properties) { - return props.ThrowType is not null; + return properties.ThrowType is not null; } protected bool IsFood(MongoId tpl) diff --git a/Libraries/SPTarkov.Server.Core/Services/FenceService.cs b/Libraries/SPTarkov.Server.Core/Services/FenceService.cs index d823c147..40ebef4e 100644 --- a/Libraries/SPTarkov.Server.Core/Services/FenceService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/FenceService.cs @@ -1154,10 +1154,10 @@ public class FenceService( { foreach (var requiredSlot in softInsertSlots) { - var modItemDbDetails = itemHelper.GetItem(requiredSlot.Props.Filters.First().Plate.Value).Value; + var modItemDbDetails = itemHelper.GetItem(requiredSlot.Properties.Filters.First().Plate.Value).Value; var durabilityValues = GetRandomisedArmorDurabilityValues(modItemDbDetails, traderConfig.Fence.ArmorMaxDurabilityPercentMinMax); - var plateTpl = requiredSlot.Props.Filters.First().Plate ?? string.Empty; // "Plate" property appears to be the 'default' item for slot + var plateTpl = requiredSlot.Properties.Filters.First().Plate ?? string.Empty; // "Plate" property appears to be the 'default' item for slot if (plateTpl.IsEmpty) // Some bsg plate properties are empty, skip mod { @@ -1205,7 +1205,7 @@ public class FenceService( { foreach (var plateSlot in plateSlots) { - var plateTpl = plateSlot.Props.Filters.First().Plate; + var plateTpl = plateSlot.Properties.Filters.First().Plate; if (plateTpl == null || plateTpl.Value.IsEmpty) // Bsg data lacks a default plate, skip randomising for this mod { diff --git a/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs b/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs index 05a36a03..a6ac5646 100644 --- a/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs @@ -137,7 +137,7 @@ public class CustomItemService( /// /// New properties to apply /// Item to update - protected void UpdateBaseItemPropertiesWithOverrides(Props? overrideProperties, TemplateItem itemClone) + protected void UpdateBaseItemPropertiesWithOverrides(TemplateItemProperties? overrideProperties, TemplateItem itemClone) { if (overrideProperties is null || itemClone?.Properties is null) return; @@ -285,7 +285,7 @@ public class CustomItemService( var wall = itemHelper.GetItem(wallId); if (wall.Key) { - wall.Value.Properties.Grids.First().Props.Filters.First().Filter.Add(newItemId); + wall.Value.Properties.Grids.First().Properties.Filters.First().Filter.Add(newItemId); } } } @@ -312,7 +312,7 @@ public class CustomItemService( var weaponSlots = weapon.Value.Properties.Slots; foreach (var slot in weaponSlots) { - baseWeaponModObject[slot.Name] = [.. slot.Props.Filters.First().Filter]; + baseWeaponModObject[slot.Name] = [.. slot.Properties.Filters.First().Filter]; } // Get PMCs diff --git a/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs b/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs index ffc60785..36a8dd2a 100644 --- a/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/RagfairLinkedItemService.cs @@ -121,7 +121,7 @@ public class RagfairLinkedItemService(DatabaseService databaseService, ItemHelpe } // Get the first cylinder filter tpl - var cylinderTpl = cylinderMod.Props?.Filters?.First().Filter?.FirstOrDefault() ?? new MongoId(null); + var cylinderTpl = cylinderMod.Properties?.Filters?.First().Filter?.FirstOrDefault() ?? new MongoId(null); if (!cylinderTpl.IsValidMongoId()) { @@ -153,12 +153,12 @@ public class RagfairLinkedItemService(DatabaseService databaseService, ItemHelpe // Check each slot and merge contents together into result set foreach (var slot in slots) { - if (slot.Props?.Filters is null) + if (slot.Properties?.Filters is null) { continue; } - foreach (var slotFilters in slot.Props.Filters) + foreach (var slotFilters in slot.Properties.Filters) { result.UnionWith(slotFilters.Filter); } @@ -179,12 +179,12 @@ public class RagfairLinkedItemService(DatabaseService databaseService, ItemHelpe foreach (var chamber in chambers) { - if (chamber.Props?.Filters is null) + if (chamber.Properties?.Filters is null) { continue; } - foreach (var slotFilters in chamber.Props.Filters) + foreach (var slotFilters in chamber.Properties.Filters) { result.UnionWith(slotFilters.Filter); } @@ -205,12 +205,12 @@ public class RagfairLinkedItemService(DatabaseService databaseService, ItemHelpe foreach (var cartridge in cartridges) { - if (cartridge.Props?.Filters is null) + if (cartridge.Properties?.Filters is null) { continue; } - foreach (var slotFilters in cartridge.Props.Filters) + foreach (var slotFilters in cartridge.Properties.Filters) { result.UnionWith(slotFilters.Filter); } diff --git a/Libraries/SPTarkov.Server.Core/Services/ServerLocalisationService.cs b/Libraries/SPTarkov.Server.Core/Services/ServerLocalisationService.cs index 87fe7969..575a1014 100644 --- a/Libraries/SPTarkov.Server.Core/Services/ServerLocalisationService.cs +++ b/Libraries/SPTarkov.Server.Core/Services/ServerLocalisationService.cs @@ -175,9 +175,9 @@ public class ServerLocalisationService( return rawLocalizedString; } - var typeProps = args.GetType().GetProperties(); + var typeProperties = args.GetType().GetProperties(); - foreach (var propertyInfo in typeProps) + foreach (var propertyInfo in typeProperties) { var localizedName = $"{{{{{propertyInfo.GetJsonName()}}}}}"; if (rawLocalizedString.Contains(localizedName)) diff --git a/Tools/MongoIdTplGenerator/Generators/ItemTplMongoIdGenerator.cs b/Tools/MongoIdTplGenerator/Generators/ItemTplMongoIdGenerator.cs index c639a561..058a1a90 100644 --- a/Tools/MongoIdTplGenerator/Generators/ItemTplMongoIdGenerator.cs +++ b/Tools/MongoIdTplGenerator/Generators/ItemTplMongoIdGenerator.cs @@ -376,14 +376,14 @@ public class ItemTplMongoIdGenerator( private string GetAmmoBoxPrefix(TemplateItem item) { - var ammoTpl = item.Properties?.StackSlots?.First()?.Props?.Filters?.First()?.Filter?.FirstOrDefault(); + var ammoTpl = item.Properties?.StackSlots?.First()?.Properties?.Filters?.First()?.Filter?.FirstOrDefault(); return GetAmmoPrefix(_items[ammoTpl.Value]); } private string GetMagazinePrefix(TemplateItem item) { - var ammoTpl = item.Properties?.Cartridges?.First()?.Props?.Filters?.First()?.Filter?.FirstOrDefault(); + var ammoTpl = item.Properties?.Cartridges?.First()?.Properties?.Filters?.First()?.Filter?.FirstOrDefault(); return GetAmmoPrefix(_items[ammoTpl.Value]); } @@ -459,7 +459,7 @@ public class ItemTplMongoIdGenerator( // Add grid size for lootable containers if (itemHelper.IsOfBaseclass(item.Id, BaseClasses.LOOT_CONTAINER)) { - return $"{item.Properties.Grids.First()?.Props.CellsH}X{item.Properties.Grids.First()?.Props.CellsV}"; + return $"{item.Properties.Grids.First()?.Properties.CellsH}X{item.Properties.Grids.First()?.Properties.CellsV}"; } // Add ammo caliber to conflicting weapons