using System.Collections.Generic; using System.Text.Json.Serialization; namespace Types.Models.Spt.Dialog; public class SendMessageDetails { /// /// Player id /// [JsonPropertyName("recipientId")] public string RecipientId { get; set; } /// /// Who is sending this message /// [JsonPropertyName("sender")] public MessageType Sender { get; set; } /// /// Optional - leave blank to use sender value /// [JsonPropertyName("dialogType")] public MessageType? DialogType { get; set; } /// /// Optional - if sender is USER these details are used /// [JsonPropertyName("senderDetails")] public IUserDialogInfo? SenderDetails { get; set; } /// /// Optional - the trader sending the message /// [JsonPropertyName("trader")] public Traders? Trader { get; set; } /// /// Optional - used in player/system messages, otherwise templateId is used /// [JsonPropertyName("messageText")] public string? MessageText { get; set; } /// /// Optional - Items to send to player /// [JsonPropertyName("items")] public List? Items { get; set; } /// /// Optional - How long items will be stored in mail before expiry /// [JsonPropertyName("itemsMaxStorageLifetimeSeconds")] public int? ItemsMaxStorageLifetimeSeconds { get; set; } /// /// Optional - Used when sending messages from traders who send text from locale json /// [JsonPropertyName("templateId")] public string? TemplateId { get; set; } /// /// Optional - ragfair related /// [JsonPropertyName("systemData")] public ISystemData? SystemData { get; set; } /// /// Optional - Used by ragfair messages /// [JsonPropertyName("ragfairDetails")] public IMessageContentRagfair? RagfairDetails { get; set; } /// /// OPTIONAL - allows modification of profile settings via mail /// [JsonPropertyName("profileChangeEvents")] public List? ProfileChangeEvents { get; set; } } public class ProfileChangeEvent { [JsonPropertyName("_id")] public string Id { get; set; } [JsonPropertyName("Type")] public ProfileChangeEventType Type { get; set; } [JsonPropertyName("value")] public int Value { get; set; } [JsonPropertyName("entity")] public string? Entity { get; set; } } public struct ProfileChangeEventType { public const string TRADER_SALES_SUM = "TraderSalesSum"; public const string TRADER_STANDING = "TraderStanding"; public const string PROFILE_LEVEL = "ProfileLevel"; public const string SKILL_POINTS = "SkillPoints"; public const string EXAMINE_ALL_ITEMS = "ExamineAllItems"; public const string UNLOCK_TRADER = "UnlockTrader"; public const string ASSORT_UNLOCK_RULE = "AssortmentUnlockRule"; public const string HIDEOUT_AREA_LEVEL = "HideoutAreaLevel"; }