using System.Text.Json.Serialization; namespace Core.Models.Eft.Common.Tables; public class RepeatableQuest : Quest { [JsonPropertyName("changeCost")] public List ChangeCost { get; set; } [JsonPropertyName("changeStandingCost")] public int ChangeStandingCost { get; set; } [JsonPropertyName("sptRepatableGroupName")] public string SptRepatableGroupName { get; set; } [JsonPropertyName("acceptanceAndFinishingSource")] public string AcceptanceAndFinishingSource { get; set; } [JsonPropertyName("progressSource")] public string ProgressSource { get; set; } [JsonPropertyName("rankingModes")] public List RankingModes { get; set; } [JsonPropertyName("gameModes")] public List GameModes { get; set; } [JsonPropertyName("arenaLocations")] public List ArenaLocations { get; set; } [JsonPropertyName("questStatus")] public RepeatableQuestStatus QuestStatus { get; set; } } public class RepeatableQuestDatabase { [JsonPropertyName("templates")] public RepeatableTemplates Templates { get; set; } [JsonPropertyName("rewards")] public RewardOptions Rewards { get; set; } [JsonPropertyName("data")] public Options Data { get; set; } [JsonPropertyName("samples")] public List Samples { get; set; } } public class RepeatableQuestStatus { [JsonPropertyName("id")] public string Id { get; set; } [JsonPropertyName("uid")] public string Uid { get; set; } [JsonPropertyName("qid")] public string Qid { get; set; } [JsonPropertyName("startTime")] public long StartTime { get; set; } [JsonPropertyName("status")] public int Status { get; set; } [JsonPropertyName("statusTimers")] public object StatusTimers { get; set; } // Use object for any type } public class RepeatableTemplates { [JsonPropertyName("Elimination")] public Quest Elimination { get; set; } [JsonPropertyName("Completion")] public Quest Completion { get; set; } [JsonPropertyName("Exploration")] public Quest Exploration { get; set; } } public class PmcDataRepeatableQuest { [JsonPropertyName("id")] public string? Id { get; set; } [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("unavailableTime")] public string? UnavailableTime { get; set; } [JsonPropertyName("activeQuests")] public List ActiveQuests { get; set; } [JsonPropertyName("inactiveQuests")] public List InactiveQuests { get; set; } [JsonPropertyName("endTime")] public long EndTime { get; set; } [JsonPropertyName("changeRequirement")] public Dictionary ChangeRequirement { get; set; } [JsonPropertyName("freeChanges")] public int FreeChanges { get; set; } [JsonPropertyName("freeChangesAvailable")] public int FreeChangesAvailable { get; set; } } public class ChangeRequirement { [JsonPropertyName("changeCost")] public List ChangeCost { get; set; } [JsonPropertyName("changeStandingCost")] public int ChangeStandingCost { get; set; } } public class ChangeCost { [JsonPropertyName("templateId")] public string TemplateId { get; set; } [JsonPropertyName("count")] public int Count { get; set; } } // Config Options public class RewardOptions { [JsonPropertyName("itemsBlacklist")] public List ItemsBlacklist { get; set; } } public class Options { [JsonPropertyName("Completion")] public CompletionFilter Completion { get; set; } } public class CompletionFilter { [JsonPropertyName("itemsBlacklist")] public List ItemsBlacklist { get; set; } [JsonPropertyName("itemsWhitelist")] public List ItemsWhitelist { get; set; } } public class ItemsBlacklist { [JsonPropertyName("minPlayerLevel")] public int MinPlayerLevel { get; set; } [JsonPropertyName("itemIds")] public List ItemIds { get; set; } } public class ItemsWhitelist { [JsonPropertyName("minPlayerLevel")] public int MinPlayerLevel { get; set; } [JsonPropertyName("itemIds")] public List ItemIds { get; set; } } public class SampleQuests { [JsonPropertyName("_id")] public string Id { get; set; } [JsonPropertyName("traderId")] public string TraderId { get; set; } [JsonPropertyName("location")] public string Location { get; set; } [JsonPropertyName("image")] public string Image { get; set; } [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("isKey")] public bool IsKey { get; set; } [JsonPropertyName("restartable")] public bool Restartable { get; set; } [JsonPropertyName("instantComplete")] public bool InstantComplete { get; set; } [JsonPropertyName("secretQuest")] public bool SecretQuest { get; set; } [JsonPropertyName("canShowNotificationsInGame")] public bool CanShowNotificationsInGame { get; set; } [JsonPropertyName("rewards")] public QuestRewards Rewards { get; set; } [JsonPropertyName("conditions")] public QuestConditionTypes Conditions { get; set; } [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("note")] public string Note { get; set; } [JsonPropertyName("description")] public string Description { get; set; } [JsonPropertyName("successMessageText")] public string SuccessMessageText { get; set; } [JsonPropertyName("failMessageText")] public string FailMessageText { get; set; } [JsonPropertyName("startedMessageText")] public string StartedMessageText { get; set; } [JsonPropertyName("templateId")] public string TemplateId { get; set; } }