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 { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } /// /// 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 { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("containersGroups")] public Dictionary? ContainersGroups { get; set; } [JsonPropertyName("containers")] public Dictionary? Containers { get; set; } } public record ContainerMinMax { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [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 { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("groupId")] public string? GroupId { get; set; } } public record StaticLootDetails { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("itemcountDistribution")] public ItemCountDistribution[] ItemCountDistribution { get; set; } [JsonPropertyName("itemDistribution")] public ItemDistribution[] ItemDistribution { get; set; } } public record ItemCountDistribution { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("count")] public int? Count { get; set; } [JsonPropertyName("relativeProbability")] public float? RelativeProbability { get; set; } } public record ItemDistribution { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("tpl")] public MongoId Tpl { get; set; } [JsonPropertyName("relativeProbability")] public float? RelativeProbability { get; set; } } public record StaticContainerDetails { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("staticWeapons")] public List StaticWeapons { get; set; } [JsonPropertyName("staticContainers")] public IEnumerable StaticContainers { get; set; } [JsonPropertyName("staticForced")] public IEnumerable StaticForced { get; set; } } public record StaticForced { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("containerId")] public string ContainerId { get; set; } [JsonPropertyName("itemTpl")] public MongoId ItemTpl { get; set; } } public record StaticContainerData { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("probability")] public float? Probability { get; set; } [JsonPropertyName("template")] public SpawnpointTemplate? Template { get; set; } } public record StaticAmmoDetails { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("tpl")] public MongoId? Tpl { get; set; } [JsonPropertyName("relativeProbability")] public float? RelativeProbability { get; set; } }