Change property naming to be more consistent (#578)
This commit is contained in:
@@ -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(
|
||||
/// <param name="request">Client request</param>
|
||||
protected void ApplyEdibleEffect(
|
||||
CurrentMinMax bodyValue,
|
||||
EffectsHealthProps consumptionDetails,
|
||||
EffectsHealthProperties consumptionDetails,
|
||||
bool foodIsSingleUse,
|
||||
OffraidEatRequestData request
|
||||
)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -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<Item> 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<string, HashSet<MongoId>>();
|
||||
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)
|
||||
)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1306,7 +1306,7 @@ public class ItemHelper(
|
||||
/// <returns>Valid caliber for cartridge</returns>
|
||||
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<Item> 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<Item> 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(
|
||||
/// <returns>Tpl of cartridge</returns>
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -137,25 +137,25 @@ public class RepairHelper(
|
||||
/// <summary>
|
||||
/// Repairing weapons reduces the total durability value slightly, get a randomised (to 2dp) amount
|
||||
/// </summary>
|
||||
/// <param name="itemProps">Weapon properties</param>
|
||||
/// <param name="itemProperties">Weapon properties</param>
|
||||
/// <param name="isRepairKit">Was a repair kit used</param>
|
||||
/// <param name="weaponMax">Max amount of durability item can have</param>
|
||||
/// <param name="traderQualityMultiplier">Different traders produce different loss values</param>
|
||||
/// <returns>Amount to reduce max durability by</returns>
|
||||
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);
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<HealthFactor, EffectsHealthProps>? EffectsHealth { get; set; }
|
||||
public Dictionary<HealthFactor, EffectsHealthProperties>? EffectsHealth { get; set; }
|
||||
|
||||
[JsonPropertyName("effects_damage")]
|
||||
[JsonConverter(typeof(ArrayToObjectFactoryConverter))]
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||
public Dictionary<DamageEffectType, EffectDamageProps>? EffectsDamage { get; set; }
|
||||
public Dictionary<DamageEffectType, EffectsDamageProperties>? 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<GridFilter>? 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<SlotFilter>? 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<SlotFilter>? 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; }
|
||||
|
||||
@@ -22,7 +22,7 @@ public record NewItemFromCloneDetails : NewItemDetailsBase
|
||||
/// Item properties that should be applied over the top of the cloned base
|
||||
/// </summary>
|
||||
[JsonPropertyName("overrideProperties")]
|
||||
public Props? OverrideProperties { get; set; }
|
||||
public TemplateItemProperties? OverrideProperties { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ParentId for the new item (item type)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -333,7 +333,7 @@ public class BotInventoryContainerService(ISptLogger<BotGeneratorHelper> 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<BotGeneratorHelper> 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,
|
||||
}
|
||||
);
|
||||
|
||||
@@ -492,41 +492,41 @@ public class BotLootCacheService(
|
||||
/// <summary>
|
||||
/// Ammo/grenades have this property
|
||||
/// </summary>
|
||||
/// <param name="props"></param>
|
||||
/// <param name="properties"></param>
|
||||
/// <returns></returns>
|
||||
protected bool IsBulletOrGrenade(Props props)
|
||||
protected bool IsBulletOrGrenade(TemplateItemProperties properties)
|
||||
{
|
||||
return props.AmmoType is not null;
|
||||
return properties.AmmoType is not null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Internal and external magazine have this property
|
||||
/// </summary>
|
||||
/// <param name="props"></param>
|
||||
/// <param name="properties"></param>
|
||||
/// <returns></returns>
|
||||
protected bool IsMagazine(Props props)
|
||||
protected bool IsMagazine(TemplateItemProperties properties)
|
||||
{
|
||||
return props.ReloadMagType is not null;
|
||||
return properties.ReloadMagType is not null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Medical use items (e.g. morphine/lip balm/grizzly)
|
||||
/// </summary>
|
||||
/// <param name="props"></param>
|
||||
/// <param name="properties"></param>
|
||||
/// <returns></returns>
|
||||
protected bool IsMedicalItem(Props props)
|
||||
protected bool IsMedicalItem(TemplateItemProperties properties)
|
||||
{
|
||||
return props.MedUseTime is not null;
|
||||
return properties.MedUseTime is not null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Grenades have this property (e.g. smoke/frag/flash grenades)
|
||||
/// </summary>
|
||||
/// <param name="props"></param>
|
||||
/// <param name="properties"></param>
|
||||
/// <returns></returns>
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -137,7 +137,7 @@ public class CustomItemService(
|
||||
/// </summary>
|
||||
/// <param name="overrideProperties"> New properties to apply </param>
|
||||
/// <param name="itemClone"> Item to update </param>
|
||||
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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user