using Core.Models.Eft.Common.Tables; using Core.Models.Eft.Ragfair; using Core.Models.Enums; namespace Core.Models.Eft.ItemEvent; using System.Text.Json.Serialization; public record ItemEventRouterBase { [JsonPropertyName("warnings")] public List? Warnings { get; set; } [JsonPropertyName("profileChanges")] public Dictionary ProfileChanges { get; set; } } public record Warning { [JsonPropertyName("index")] public int? Index { get; set; } [JsonPropertyName("errmsg")] public string? ErrorMessage { get; set; } [JsonPropertyName("code")] public string? Code { get; set; } [JsonPropertyName("data")] public object? Data { get; set; } } public record ProfileChange { [JsonPropertyName("_id")] public string? Id { get; set; } [JsonPropertyName("experience")] public double? Experience { get; set; } [JsonPropertyName("quests")] public List? Quests { get; set; } [JsonPropertyName("ragFairOffers")] public List? RagFairOffers { get; set; } [JsonPropertyName("weaponBuilds")] public List? WeaponBuilds { get; set; } [JsonPropertyName("equipmentBuilds")] public List? EquipmentBuilds { get; set; } [JsonPropertyName("items")] public ItemChanges? Items { get; set; } [JsonPropertyName("production")] public Dictionary? Production { get; set; } /** Hideout area improvement id */ [JsonPropertyName("improvements")] public Dictionary? Improvements { get; set; } [JsonPropertyName("skills")] public Skills? Skills { get; set; } [JsonPropertyName("health")] public BotBaseHealth Health { get; set; } [JsonPropertyName("traderRelations")] public Dictionary? TraderRelations { get; set; } [JsonPropertyName("moneyTransferLimitData")] public MoneyTransferLimits? MoneyTransferLimitData { get; set; } [JsonPropertyName("repeatableQuests")] public List? RepeatableQuests { get; set; } [JsonPropertyName("recipeUnlocked")] public Dictionary? RecipeUnlocked { get; set; } [JsonPropertyName("changedHideoutStashes")] public Dictionary? ChangedHideoutStashes { get; set; } [JsonPropertyName("questsStatus")] public List? QuestsStatus { get; set; } } public record HideoutStashItem { [JsonPropertyName("id")] public string? Id { get; set; } [JsonPropertyName("tpl")] public string? Template { get; set; } } public record WeaponBuildChange { [JsonPropertyName("id")] public string? Id { get; set; } [JsonPropertyName("name")] public string? Name { get; set; } [JsonPropertyName("root")] public string? Root { get; set; } [JsonPropertyName("items")] public List? Items { get; set; } } public record EquipmentBuildChange { [JsonPropertyName("id")] public string? Id { get; set; } [JsonPropertyName("name")] public string? Name { get; set; } [JsonPropertyName("root")] public string? Root { get; set; } [JsonPropertyName("items")] public List? Items { get; set; } [JsonPropertyName("type")] public string? Type { get; set; } [JsonPropertyName("fastpanel")] public List? FastPanel { get; set; } [JsonPropertyName("buildType")] public EquipmentBuildType? BuildType { get; set; } } public record ItemChanges { [JsonPropertyName("new")] public List? NewItems { get; set; } [JsonPropertyName("change")] public List? ChangedItems { get; set; } [JsonPropertyName("del")] public List DeletedItems { get; set; } // Only needs _id property } /** Related to TraderInfo */ public record TraderData { [JsonPropertyName("salesSum")] public double? SalesSum { get; set; } [JsonPropertyName("standing")] public double? Standing { get; set; } [JsonPropertyName("loyalty")] public double? Loyalty { get; set; } [JsonPropertyName("unlocked")] public bool? Unlocked { get; set; } [JsonPropertyName("disabled")] public bool? Disabled { get; set; } } public record Product : Item { }