using System.Text.Json.Serialization; using Core.Models.Common; namespace Core.Models.Spt.Config; public class HideoutConfig : BaseConfig { [JsonPropertyName("kind")] public string Kind { get; set; } = "spt-hideout"; /// /// How many seconds should pass before hideout crafts / fuel usage is checked and processed /// [JsonPropertyName("runIntervalSeconds")] public int RunIntervalSeconds { get; set; } /// /// Default values used to hydrate `RunIntervalSeconds` with /// [JsonPropertyName("runIntervalValues")] public RunIntervalValues RunIntervalValues { get; set; } [JsonPropertyName("hoursForSkillCrafting")] public int HoursForSkillCrafting { get; set; } [JsonPropertyName("expCraftAmount")] public int ExpCraftAmount { get; set; } [JsonPropertyName("overrideCraftTimeSeconds")] public int OverrideCraftTimeSeconds { get; set; } [JsonPropertyName("overrideBuildTimeSeconds")] public int OverrideBuildTimeSeconds { get; set; } /// /// Only process a profile's hideout crafts when it has been active in the last x minutes /// [JsonPropertyName("updateProfileHideoutWhenActiveWithinMinutes")] public int UpdateProfileHideoutWhenActiveWithinMinutes { get; set; } [JsonPropertyName("cultistCircle")] public CultistCircleSettings CultistCircle { get; set; } } public class CultistCircleSettings { [JsonPropertyName("maxRewardItemCount")] public int MaxRewardItemCount { get; set; } [JsonPropertyName("maxAttemptsToPickRewardsWithinBudget")] public int MaxAttemptsToPickRewardsWithinBudget { get; set; } [JsonPropertyName("rewardPriceMultiplerMinMax")] public MinMax RewardPriceMultiplerMinMax { get; set; } /// /// The odds that meeting the highest threshold gives you a bonus to crafting time /// [JsonPropertyName("bonusAmountMultiplier")] public double BonusAmountMultiplier { get; set; } [JsonPropertyName("bonusChanceMultiplier")] public double BonusChanceMultiplier { get; set; } /// /// What is considered a "high-value" item /// [JsonPropertyName("highValueThresholdRub")] public int HighValueThresholdRub { get; set; } /// /// Hideout/task reward crafts have a unique craft time /// [JsonPropertyName("hideoutTaskRewardTimeSeconds")] public int HideoutTaskRewardTimeSeconds { get; set; } /// /// Rouble amount player needs to sacrifice to get chance of hideout/task rewards /// [JsonPropertyName("hideoutCraftSacrificeThresholdRub")] public int HideoutCraftSacrificeThresholdRub { get; set; } [JsonPropertyName("craftTimeThreshholds")] public List CraftTimeThreshholds { get; set; } /// /// -1 means no override, value in seconds /// [JsonPropertyName("craftTimeOverride")] public int CraftTimeOverride { get; set; } /// /// Specific reward pool when player sacrifices specific item(s) /// [JsonPropertyName("directRewards")] public List DirectRewards { get; set; } /// /// Overrides for reward stack sizes, keyed by item tpl /// [JsonPropertyName("directRewardStackSize")] public Dictionary DirectRewardStackSize { get; set; } /// /// Item tpls to exclude from the reward pool /// [JsonPropertyName("rewardItemBlacklist")] public List RewardItemBlacklist { get; set; } /// /// Item tpls to include in the reward pool /// [JsonPropertyName("additionalRewardItemPool")] public List AdditionalRewardItemPool { get; set; } [JsonPropertyName("currencyRewards")] public Dictionary CurrencyRewards { get; set; } } public class CraftTimeThreshold : MinMax { [JsonPropertyName("craftTimeSeconds")] public int CraftTimeSeconds { get; set; } } public class DirectRewardSettings { [JsonPropertyName("reward")] public List Reward { get; set; } [JsonPropertyName("requiredItems")] public List RequiredItems { get; set; } [JsonPropertyName("craftTimeSeconds")] public int CraftTimeSeconds { get; set; } /// /// Is the reward a one time reward or can it be given multiple times /// [JsonPropertyName("repeatable")] public bool Repeatable { get; set; } }