using System.Text.Json.Serialization; using Core.Models.Common; using Core.Models.Enums; namespace Core.Models.Spt.Services; public record LootRequest { /// /// Count of weapons to generate /// [JsonPropertyName("weaponPresetCount")] public MinMax? WeaponPresetCount { get; set; } /// /// Count of armor to generate /// [JsonPropertyName("armorPresetCount")] public MinMax? ArmorPresetCount { get; set; } /// /// Count of items to generate /// [JsonPropertyName("itemCount")] public MinMax? ItemCount { get; set; } /// /// Count of sealed weapon crates to generate /// [JsonPropertyName("weaponCrateCount")] public MinMax? WeaponCrateCount { get; set; } /// /// Item tpl blacklist to exclude /// [JsonPropertyName("itemBlacklist")] public HashSet? ItemBlacklist { get; set; } /// /// Item tpl whitelist to pick from /// [JsonPropertyName("itemTypeWhitelist")] public List? ItemTypeWhitelist { get; set; } /// /// key: item base type: value: max count /// [JsonPropertyName("itemLimits")] public Dictionary? ItemLimits { get; set; } [JsonPropertyName("itemStackLimits")] public Dictionary>? ItemStackLimits { get; set; } /// /// Allowed armor plate levels 2/3/4/5/6 for armor generated /// [JsonPropertyName("armorLevelWhitelist")] public List? ArmorLevelWhitelist { get; set; } /// /// Should boss items be included in allowed items /// [JsonPropertyName("allowBossItems")] public bool? AllowBossItems { get; set; } /// /// Should item.json item reward blacklist be used /// [JsonPropertyName("useRewardItemBlacklist")] public bool? UseRewardItemBlacklist { get; set; } /// /// Should forced loot be used instead of randomised loot /// [JsonPropertyName("useForcedLoot")] public bool? UseForcedLoot { get; set; } /// /// Item tpls + count of items to force include /// [JsonPropertyName("forcedLoot")] public Dictionary>? ForcedLoot { get; set; } /// /// Should seasonal items appear when it's not the season for them /// [JsonPropertyName("blockSeasonalItemsOutOfSeason")] public bool? BlockSeasonalItemsOutOfSeason { get; set; } } public record AirdropLootRequest : LootRequest { /// /// Airdrop icon used by client to show crate type /// [JsonPropertyName("icon")] public AirdropTypeEnum? Icon { get; set; } }