using System.Text.Json.Serialization; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; namespace SPTarkov.Server.Core.Models.Spt.Config; public record ItemConfig : BaseConfig { [JsonPropertyName("kind")] public override string Kind { get; set; } = "spt-item"; /// /// Items that should be globally blacklisted /// [JsonPropertyName("blacklist")] public required HashSet Blacklist { get; set; } /// /// Items that should not be lootable from any location /// [JsonPropertyName("lootableItemBlacklist")] public required HashSet LootableItemBlacklist { get; set; } /// /// items that should not be given as rewards /// [JsonPropertyName("rewardItemBlacklist")] public required HashSet RewardItemBlacklist { get; set; } /// /// Item base types that should not be given as rewards /// [JsonPropertyName("rewardItemTypeBlacklist")] public required HashSet RewardItemTypeBlacklist { get; set; } /// /// Items that can only be found on bosses /// [JsonPropertyName("bossItems")] public required HashSet BossItems { get; set; } [JsonPropertyName("handbookPriceOverride")] public required Dictionary HandbookPriceOverride { get; set; } /// /// Presets to add to the globals.json `ItemPresets` dictionary on server start /// [JsonPropertyName("customItemGlobalPresets")] public required List CustomItemGlobalPresets { get; set; } } public record HandbookPriceOverride { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } /// /// Price in roubles /// [JsonPropertyName("price")] public double Price { get; set; } /// /// NOT parentId from items.json, but handbook.json /// [JsonPropertyName("parentId")] public MongoId ParentId { get; set; } = MongoId.Empty(); }