using System.Text.Json.Serialization; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common.Tables; using SPTarkov.Server.Core.Models.Eft.Profile; using SPTarkov.Server.Core.Models.Enums; using SPTarkov.Server.Core.Models.Spt.Dialog; namespace SPTarkov.Server.Core.Models.Spt.Config; public record GiftsConfig : BaseConfig { [JsonPropertyName("kind")] public override string Kind { get; set; } = "spt-gifts"; [JsonPropertyName("gifts")] public required Dictionary Gifts { get; set; } } public record Gift { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } /// /// Items to send to player /// [JsonPropertyName("items")] public List Items { get; set; } = []; /// /// Who is sending the gift to player /// [JsonPropertyName("sender")] public GiftSenderType Sender { get; set; } [JsonPropertyName("senderDetails")] public UserDialogInfo? SenderDetails { get; set; } /// /// Optional - supply a trader type to send from, not necessary when sending from SYSTEM or USER /// [JsonPropertyName("trader")] public MongoId? Trader { get; set; } [JsonPropertyName("messageText")] public string? MessageText { get; set; } /// /// Optional - if sending text from the client locale file /// [JsonPropertyName("localeTextId")] public string? LocaleTextId { get; set; } [JsonPropertyName("associatedEvent")] public SeasonalEventType AssociatedEvent { get; set; } [JsonPropertyName("collectionTimeHours")] public int? CollectionTimeHours { get; set; } /// /// Optional, can be used to change profile settings like level/skills /// [JsonPropertyName("profileChangeEvents")] public List? ProfileChangeEvents { get; set; } [JsonPropertyName("maxToSendPlayer")] public int? MaxToSendPlayer { get; set; } }