using System.Text.Json.Serialization;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Utils.Json;
namespace SPTarkov.Server.Core.Models.Eft.Common;
public record Location
{
///
/// Map meta-data
///
[JsonPropertyName("base")]
public LocationBase Base { get; set; }
///
/// Loose loot positions and item weights
///
[JsonPropertyName("looseLoot")]
public LazyLoad? LooseLoot { get; set; }
///
/// Static loot item weights
///
[JsonPropertyName("staticLoot")]
public LazyLoad>? StaticLoot { get; set; }
///
/// Static container positions and item weights
///
[JsonPropertyName("staticContainers")]
public LazyLoad? StaticContainers { get; set; }
[JsonPropertyName("staticAmmo")]
public Dictionary> StaticAmmo { get; set; }
///
/// All possible static containers on map + their assign groupings
///
[JsonPropertyName("statics")]
public StaticContainer? Statics { get; set; }
///
/// All possible map extracts
///
[JsonPropertyName("allExtracts")]
public IEnumerable AllExtracts { get; set; }
}
public record StaticContainer
{
[JsonPropertyName("containersGroups")]
public Dictionary? ContainersGroups { get; set; }
[JsonPropertyName("containers")]
public Dictionary? Containers { get; set; }
}
public record ContainerMinMax
{
[JsonPropertyName("minContainers")]
public int? MinContainers { get; set; }
[JsonPropertyName("maxContainers")]
public int? MaxContainers { get; set; }
[JsonPropertyName("current")]
public int? Current { get; set; }
[JsonPropertyName("chosenCount")]
public int? ChosenCount { get; set; }
}
public record ContainerData
{
[JsonPropertyName("groupId")]
public string? GroupId { get; set; }
}
public record StaticLootDetails
{
[JsonPropertyName("itemcountDistribution")]
public ItemCountDistribution[] ItemCountDistribution { get; set; }
[JsonPropertyName("itemDistribution")]
public ItemDistribution[] ItemDistribution { get; set; }
}
public record ItemCountDistribution
{
[JsonPropertyName("count")]
public int? Count { get; set; }
[JsonPropertyName("relativeProbability")]
public float? RelativeProbability { get; set; }
}
public record ItemDistribution
{
[JsonPropertyName("tpl")]
public MongoId Tpl { get; set; }
[JsonPropertyName("relativeProbability")]
public float? RelativeProbability { get; set; }
}
public record StaticContainerDetails
{
[JsonPropertyName("staticWeapons")]
public IEnumerable StaticWeapons { get; set; }
[JsonPropertyName("staticContainers")]
public IEnumerable StaticContainers { get; set; }
[JsonPropertyName("staticForced")]
public IEnumerable StaticForced { get; set; }
}
public record StaticForced
{
[JsonPropertyName("containerId")]
public string ContainerId { get; set; }
[JsonPropertyName("itemTpl")]
public MongoId ItemTpl { get; set; }
}
public record StaticContainerData
{
[JsonPropertyName("probability")]
public float? Probability { get; set; }
[JsonPropertyName("template")]
public SpawnpointTemplate? Template { get; set; }
}
public record StaticAmmoDetails
{
[JsonPropertyName("tpl")]
public MongoId? Tpl { get; set; }
[JsonPropertyName("relativeProbability")]
public float? RelativeProbability { get; set; }
}