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();
}