using System.Text.Json.Serialization; using SPTarkov.Server.Core.Models.Common; namespace SPTarkov.Server.Core.Models.Spt.Config; public record RepairConfig : BaseConfig { [JsonPropertyName("kind")] public override string Kind { get; set; } = "spt-repair"; [JsonPropertyName("priceMultiplier")] public double PriceMultiplier { get; set; } [JsonPropertyName("applyRandomizeDurabilityLoss")] public bool ApplyRandomizeDurabilityLoss { get; set; } [JsonPropertyName("weaponSkillRepairGain")] public double WeaponSkillRepairGain { get; set; } [JsonPropertyName("armorKitSkillPointGainPerRepairPointMultiplier")] public double ArmorKitSkillPointGainPerRepairPointMultiplier { get; set; } /// /// INT gain multiplier per repaired item type /// [JsonPropertyName("repairKitIntellectGainMultiplier")] public required IntellectGainValues RepairKitIntellectGainMultiplier { get; set; } /// /// How much INT can be given to player per repair action /// [JsonPropertyName("maxIntellectGainPerRepair")] public required MaxIntellectGainValues MaxIntellectGainPerRepair { get; set; } [JsonPropertyName("weaponTreatment")] public required WeaponTreatmentRepairValues WeaponTreatment { get; set; } [JsonPropertyName("repairKit")] public required RepairKit RepairKit { get; set; } } public record IntellectGainValues { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("weapon")] public double Weapon { get; set; } [JsonPropertyName("armor")] public double Armor { get; set; } } public record MaxIntellectGainValues { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("kit")] public double Kit { get; set; } [JsonPropertyName("trader")] public double Trader { get; set; } } public record WeaponTreatmentRepairValues { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } /// /// The chance to gain more weapon maintenance skill /// [JsonPropertyName("critSuccessChance")] public double CritSuccessChance { get; set; } [JsonPropertyName("critSuccessAmount")] public double CritSuccessAmount { get; set; } /// /// The chance to gain less weapon maintenance skill /// [JsonPropertyName("critFailureChance")] public double CritFailureChance { get; set; } [JsonPropertyName("critFailureAmount")] public double CritFailureAmount { get; set; } /// /// The multiplier used for calculating weapon maintenance XP /// [JsonPropertyName("pointGainMultiplier")] public double PointGainMultiplier { get; set; } } public record RepairKit { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("armor")] public required BonusSettings Armor { get; set; } [JsonPropertyName("weapon")] public required BonusSettings Weapon { get; set; } [JsonPropertyName("vest")] public required BonusSettings Vest { get; set; } [JsonPropertyName("headwear")] public required BonusSettings Headwear { get; set; } } public record BonusSettings { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("rarityWeight")] public required Dictionary RarityWeight { get; set; } [JsonPropertyName("bonusTypeWeight")] public required Dictionary BonusTypeWeight { get; set; } [JsonPropertyName("Common")] public required Dictionary Common { get; set; } [JsonPropertyName("Rare")] public required Dictionary Rare { get; set; } } public record BonusValues { [JsonExtensionData] public Dictionary? ExtensionData { get; set; } [JsonPropertyName("valuesMinMax")] public required MinMax ValuesMinMax { get; set; } /// /// What dura is buff active between (min max of current max) /// [JsonPropertyName("activeDurabilityPercentMinMax")] public required MinMax ActiveDurabilityPercentMinMax { get; set; } }