using System.Text.Json.Serialization; using Core.Models.Common; using Core.Models.Enums; namespace Core.Models.Spt.Config; public record AirdropConfig : BaseConfig { [JsonPropertyName("kind")] public string Kind { get; set; } = "spt-airdrop"; [JsonPropertyName("airdropTypeWeightings")] public Dictionary AirdropTypeWeightings { get; set; } /// /// What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter /// [JsonPropertyName("loot")] public Dictionary Loot { get; set; } [JsonPropertyName("customAirdropMapping")] public Dictionary CustomAirdropMapping { get; set; } } /// /// Chance map will have an airdrop occur out of 100 - locations not included count as 0% /// public record AirdropChancePercent { [JsonPropertyName("bigmap")] public double Bigmap { get; set; } [JsonPropertyName("woods")] public double Woods { get; set; } [JsonPropertyName("lighthouse")] public double Lighthouse { get; set; } [JsonPropertyName("shoreline")] public double Shoreline { get; set; } [JsonPropertyName("interchange")] public double Interchange { get; set; } [JsonPropertyName("reserve")] public double Reserve { get; set; } [JsonPropertyName("tarkovStreets")] public double TarkovStreets { get; set; } [JsonPropertyName("sandbox")] public double Sandbox { get; set; } } /// /// Loot inside crate /// public record AirdropLoot { [JsonPropertyName("icon")] [JsonConverter(typeof(JsonStringEnumConverter))] public AirdropTypeEnum Icon { get; set; } /// /// Min/max of weapons inside crate /// [JsonPropertyName("weaponPresetCount")] public MinMax? WeaponPresetCount { get; set; } /// /// Min/max of armors (head/chest/rig) inside crate /// [JsonPropertyName("armorPresetCount")] public MinMax? ArmorPresetCount { get; set; } /// /// Min/max of items inside crate /// [JsonPropertyName("itemCount")] public MinMax ItemCount { get; set; } /// /// Min/max of sealed weapon boxes inside crate /// [JsonPropertyName("weaponCrateCount")] public MinMax WeaponCrateCount { get; set; } /// /// Items to never allow - tpls /// [JsonPropertyName("itemBlacklist")] public List ItemBlacklist { get; set; } /// /// Item type (parentId) to allow inside crate /// [JsonPropertyName("itemTypeWhitelist")] public List ItemTypeWhitelist { get; set; } /// /// Item type/ item tpls to limit count of inside crate - key: item base type: value: max count /// [JsonPropertyName("itemLimits")] public Dictionary ItemLimits { get; set; } /// /// Items to limit stack size of key: item tpl value: min/max stack size /// [JsonPropertyName("itemStackLimits")] public Dictionary ItemStackLimits { get; set; } /// /// Armor levels to allow inside crate e.g. [4,5,6] /// [JsonPropertyName("armorLevelWhitelist")] public List? ArmorLevelWhitelist { get; set; } /// /// Should boss items be added to airdrop crate /// [JsonPropertyName("allowBossItems")] public bool AllowBossItems { get; set; } [JsonPropertyName("useForcedLoot")] public bool? UseForcedLoot { get; set; } [JsonPropertyName("forcedLoot")] public Dictionary? ForcedLoot { get; set; } }