.NET Format Style Fixes
This commit is contained in:
@@ -7,35 +7,19 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record AirdropConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-airdrop";
|
||||
public override string Kind { get; set; } = "spt-airdrop";
|
||||
|
||||
[JsonPropertyName("airdropTypeWeightings")]
|
||||
public required Dictionary<SptAirdropTypeEnum, double> AirdropTypeWeightings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<SptAirdropTypeEnum, double> AirdropTypeWeightings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter
|
||||
/// </summary>
|
||||
[JsonPropertyName("loot")]
|
||||
public required Dictionary<string, AirdropLoot> Loot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, AirdropLoot> Loot { get; set; }
|
||||
|
||||
[JsonPropertyName("customAirdropMapping")]
|
||||
public required Dictionary<string, SptAirdropTypeEnum> CustomAirdropMapping
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, SptAirdropTypeEnum> CustomAirdropMapping { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -48,137 +32,77 @@ public record AirdropLoot
|
||||
|
||||
[JsonPropertyName("icon")]
|
||||
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||
public required AirdropTypeEnum Icon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required AirdropTypeEnum Icon { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min/max of weapons inside crate
|
||||
/// </summary>
|
||||
[JsonPropertyName("weaponPresetCount")]
|
||||
public required MinMax<int> WeaponPresetCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> WeaponPresetCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min/max of armors (head/chest/rig) inside crate
|
||||
/// </summary>
|
||||
[JsonPropertyName("armorPresetCount")]
|
||||
public required MinMax<int> ArmorPresetCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> ArmorPresetCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min/max of items inside crate
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemCount")]
|
||||
public required MinMax<int> ItemCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> ItemCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min/max of sealed weapon boxes inside crate
|
||||
/// </summary>
|
||||
[JsonPropertyName("weaponCrateCount")]
|
||||
public required MinMax<int> WeaponCrateCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> WeaponCrateCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Items to never allow - tpls
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemBlacklist")]
|
||||
public required List<string> ItemBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> ItemBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item type (parentId) to allow inside crate
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemTypeWhitelist")]
|
||||
public required List<string> ItemTypeWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> ItemTypeWhitelist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item type/ item tpls to limit count of inside crate - key: item base type: value: max count
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemLimits")]
|
||||
public required Dictionary<string, int> ItemLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, int> ItemLimits { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Items to limit stack size of key: item tpl value: min/max stack size
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemStackLimits")]
|
||||
public required Dictionary<string, MinMax<int>> ItemStackLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<int>> ItemStackLimits { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Armor levels to allow inside crate e.g. [4,5,6]
|
||||
/// </summary>
|
||||
[JsonPropertyName("armorLevelWhitelist")]
|
||||
public List<int>? ArmorLevelWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<int>? ArmorLevelWhitelist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should boss items be added to airdrop crate
|
||||
/// </summary>
|
||||
[JsonPropertyName("allowBossItems")]
|
||||
public bool AllowBossItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AllowBossItems { get; set; }
|
||||
|
||||
[JsonPropertyName("useForcedLoot")]
|
||||
public bool UseForcedLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool UseForcedLoot { get; set; }
|
||||
|
||||
[JsonPropertyName("forcedLoot")]
|
||||
public Dictionary<string, MinMax<int>>? ForcedLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, MinMax<int>>? ForcedLoot { get; set; }
|
||||
|
||||
[JsonPropertyName("useRewardItemBlacklist")]
|
||||
public bool UseRewardItemBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool UseRewardItemBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("blockSeasonalItemsOutOfSeason")]
|
||||
public bool BlockSeasonalItemsOutOfSeason
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool BlockSeasonalItemsOutOfSeason { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,39 +5,19 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record BackupConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-backup";
|
||||
public override string Kind { get; set; } = "spt-backup";
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public required bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("maxBackups")]
|
||||
public int MaxBackups
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxBackups { get; set; }
|
||||
|
||||
[JsonPropertyName("directory")]
|
||||
public string Directory
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = string.Empty;
|
||||
public string Directory { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("backupInterval")]
|
||||
public required BackupConfigInterval BackupInterval
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required BackupConfigInterval BackupInterval { get; set; }
|
||||
}
|
||||
|
||||
public record BackupConfigInterval
|
||||
@@ -46,16 +26,8 @@ public record BackupConfigInterval
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("intervalMinutes")]
|
||||
public int IntervalMinutes
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int IntervalMinutes { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,11 +5,7 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public abstract record BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public abstract string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public abstract string Kind { get; set; }
|
||||
}
|
||||
|
||||
public record RunIntervalValues
|
||||
@@ -18,16 +14,8 @@ public record RunIntervalValues
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("inRaid")]
|
||||
public int InRaid
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int InRaid { get; set; }
|
||||
|
||||
[JsonPropertyName("outOfRaid")]
|
||||
public int OutOfRaid
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int OutOfRaid { get; set; }
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,25 +8,13 @@ public record BotDurability
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("default")]
|
||||
public required DefaultDurability Default
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required DefaultDurability Default { get; set; }
|
||||
|
||||
[JsonPropertyName("botDurabilities")]
|
||||
public required Dictionary<string, DefaultDurability> BotDurabilities
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, DefaultDurability> BotDurabilities { get; set; }
|
||||
|
||||
[JsonPropertyName("pmc")]
|
||||
public required PmcDurability Pmc
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required PmcDurability Pmc { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -38,18 +26,10 @@ public record DefaultDurability
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("armor")]
|
||||
public required ArmorDurability Armor
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ArmorDurability Armor { get; set; }
|
||||
|
||||
[JsonPropertyName("weapon")]
|
||||
public required WeaponDurability Weapon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required WeaponDurability Weapon { get; set; }
|
||||
}
|
||||
|
||||
public record PmcDurability
|
||||
@@ -58,18 +38,10 @@ public record PmcDurability
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("armor")]
|
||||
public required PmcDurabilityArmor Armor
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required PmcDurabilityArmor Armor { get; set; }
|
||||
|
||||
[JsonPropertyName("weapon")]
|
||||
public required WeaponDurability Weapon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required WeaponDurability Weapon { get; set; }
|
||||
}
|
||||
|
||||
public record PmcDurabilityArmor
|
||||
@@ -78,39 +50,19 @@ public record PmcDurabilityArmor
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("lowestMaxPercent")]
|
||||
public int LowestMaxPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int LowestMaxPercent { get; set; }
|
||||
|
||||
[JsonPropertyName("highestMaxPercent")]
|
||||
public int HighestMaxPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HighestMaxPercent { get; set; }
|
||||
|
||||
[JsonPropertyName("maxDelta")]
|
||||
public int MaxDelta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxDelta { get; set; }
|
||||
|
||||
[JsonPropertyName("minDelta")]
|
||||
public int MinDelta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinDelta { get; set; }
|
||||
|
||||
[JsonPropertyName("minLimitPercent")]
|
||||
public int MinLimitPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinLimitPercent { get; set; }
|
||||
}
|
||||
|
||||
public record ArmorDurability
|
||||
@@ -119,39 +71,19 @@ public record ArmorDurability
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("maxDelta")]
|
||||
public int MaxDelta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxDelta { get; set; }
|
||||
|
||||
[JsonPropertyName("minDelta")]
|
||||
public int MinDelta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinDelta { get; set; }
|
||||
|
||||
[JsonPropertyName("minLimitPercent")]
|
||||
public int MinLimitPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinLimitPercent { get; set; }
|
||||
|
||||
[JsonPropertyName("lowestMaxPercent")]
|
||||
public int LowestMaxPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int LowestMaxPercent { get; set; }
|
||||
|
||||
[JsonPropertyName("highestMaxPercent")]
|
||||
public int HighestMaxPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HighestMaxPercent { get; set; }
|
||||
}
|
||||
|
||||
public record WeaponDurability
|
||||
@@ -160,37 +92,17 @@ public record WeaponDurability
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("lowestMax")]
|
||||
public int LowestMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int LowestMax { get; set; }
|
||||
|
||||
[JsonPropertyName("highestMax")]
|
||||
public int HighestMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HighestMax { get; set; }
|
||||
|
||||
[JsonPropertyName("maxDelta")]
|
||||
public int MaxDelta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxDelta { get; set; }
|
||||
|
||||
[JsonPropertyName("minDelta")]
|
||||
public int MinDelta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinDelta { get; set; }
|
||||
|
||||
[JsonPropertyName("minLimitPercent")]
|
||||
public double MinLimitPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double MinLimitPercent { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,29 +5,17 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record BtrDeliveryConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-btrdelivery";
|
||||
public override string Kind { get; set; } = "spt-btrdelivery";
|
||||
|
||||
/// <summary>
|
||||
/// Override to control how quickly delivery is processed/returned in seconds
|
||||
/// </summary>
|
||||
[JsonPropertyName("returnTimeOverrideSeconds")]
|
||||
public double ReturnTimeOverrideSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ReturnTimeOverrideSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How often server should process BTR delivery in seconds
|
||||
/// </summary>
|
||||
[JsonPropertyName("runIntervalSeconds")]
|
||||
public double RunIntervalSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double RunIntervalSeconds { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,125 +6,61 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record CoreConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-core";
|
||||
public override string Kind { get; set; } = "spt-core";
|
||||
|
||||
[JsonPropertyName("sptVersion")]
|
||||
public required string SptVersion
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string SptVersion { get; set; }
|
||||
|
||||
[JsonPropertyName("projectName")]
|
||||
public required string ProjectName
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string ProjectName { get; set; }
|
||||
|
||||
[JsonPropertyName("compatibleTarkovVersion")]
|
||||
public required string CompatibleTarkovVersion
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string CompatibleTarkovVersion { get; set; }
|
||||
|
||||
[JsonPropertyName("serverName")]
|
||||
public required string ServerName
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string ServerName { get; set; }
|
||||
|
||||
[JsonPropertyName("profileSaveIntervalSeconds")]
|
||||
public required int ProfileSaveIntervalInSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int ProfileSaveIntervalInSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("sptFriendNickname")]
|
||||
public required string SptFriendNickname
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string SptFriendNickname { get; set; }
|
||||
|
||||
[JsonPropertyName("allowProfileWipe")]
|
||||
public required bool AllowProfileWipe
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool AllowProfileWipe { get; set; }
|
||||
|
||||
[JsonPropertyName("bsgLogging")]
|
||||
public required BsgLogging BsgLogging
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required BsgLogging BsgLogging { get; set; }
|
||||
|
||||
[JsonPropertyName("release")]
|
||||
public required Release Release
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Release Release { get; set; }
|
||||
|
||||
[JsonPropertyName("fixes")]
|
||||
public required GameFixes Fixes
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required GameFixes Fixes { get; set; }
|
||||
|
||||
[JsonPropertyName("survey")]
|
||||
public required SurveyResponseData Survey
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required SurveyResponseData Survey { get; set; }
|
||||
|
||||
[JsonPropertyName("features")]
|
||||
public required ServerFeatures Features
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ServerFeatures Features { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Commit hash build server was created from
|
||||
/// </summary>
|
||||
[JsonPropertyName("commit")]
|
||||
public string? Commit
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Commit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Timestamp of server build
|
||||
/// </summary>
|
||||
[JsonPropertyName("buildTime")]
|
||||
public string? BuildTime
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? BuildTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Server locale keys that will be added to the bottom of the startup watermark
|
||||
/// </summary>
|
||||
[JsonPropertyName("customWatermarkLocaleKeys")]
|
||||
public List<string>? CustomWatermarkLocaleKeys
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? CustomWatermarkLocaleKeys { get; set; }
|
||||
}
|
||||
|
||||
public record BsgLogging
|
||||
@@ -145,21 +81,13 @@ public record BsgLogging
|
||||
/// 6 - off
|
||||
/// </summary>
|
||||
[JsonPropertyName("verbosity")]
|
||||
public int Verbosity
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int Verbosity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should we send the logging to the server
|
||||
/// </summary>
|
||||
[JsonPropertyName("sendToServer")]
|
||||
public bool SendToServer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool SendToServer { get; set; }
|
||||
}
|
||||
|
||||
public record Release
|
||||
@@ -171,131 +99,79 @@ public record Release
|
||||
/// Disclaimer outlining the intended usage of bleeding edge
|
||||
/// </summary>
|
||||
[JsonPropertyName("betaDisclaimerText")]
|
||||
public string? BetaDisclaimerText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? BetaDisclaimerText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Text logged when users agreed to terms
|
||||
/// </summary>
|
||||
[JsonPropertyName("betaDisclaimerAcceptText")]
|
||||
public string? BetaDisclaimerAcceptText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? BetaDisclaimerAcceptText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Server mods loaded message
|
||||
/// </summary>
|
||||
[JsonPropertyName("serverModsLoadedText")]
|
||||
public string? ServerModsLoadedText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? ServerModsLoadedText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Server mods loaded debug message text
|
||||
/// </summary>
|
||||
[JsonPropertyName("serverModsLoadedDebugText")]
|
||||
public string? ServerModsLoadedDebugText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? ServerModsLoadedDebugText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Client mods loaded message
|
||||
/// </summary>
|
||||
[JsonPropertyName("clientModsLoadedText")]
|
||||
public string? ClientModsLoadedText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? ClientModsLoadedText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Client mods loaded debug message text
|
||||
/// </summary>
|
||||
[JsonPropertyName("clientModsLoadedDebugText")]
|
||||
public string? ClientModsLoadedDebugText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? ClientModsLoadedDebugText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Illegal plugins log message
|
||||
/// </summary>
|
||||
[JsonPropertyName("illegalPluginsLoadedText")]
|
||||
public string? IllegalPluginsLoadedText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? IllegalPluginsLoadedText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Illegal plugins exception
|
||||
/// </summary>
|
||||
[JsonPropertyName("illegalPluginsExceptionText")]
|
||||
public string? IllegalPluginsExceptionText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? IllegalPluginsExceptionText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Summary of release changes
|
||||
/// </summary>
|
||||
[JsonPropertyName("releaseSummaryText")]
|
||||
public string? ReleaseSummaryText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? ReleaseSummaryText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Enables the cool watermark in-game
|
||||
/// </summary>
|
||||
[JsonPropertyName("isBeta")]
|
||||
public bool? IsBeta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? IsBeta { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether mods are enabled
|
||||
/// </summary>
|
||||
[JsonPropertyName("isModdable")]
|
||||
public bool? IsModdable
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? IsModdable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Are mods loaded on the server?
|
||||
/// </summary>
|
||||
[JsonPropertyName("isModded")]
|
||||
public bool IsModded
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool IsModded { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How long before the messagebox times out and closes the game
|
||||
/// </summary>
|
||||
[JsonPropertyName("betaDisclaimerTimeoutDelay")]
|
||||
public int BetaDisclaimerTimeoutDelay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int BetaDisclaimerTimeoutDelay { get; set; }
|
||||
}
|
||||
|
||||
public record GameFixes
|
||||
@@ -307,41 +183,25 @@ public record GameFixes
|
||||
/// Shotguns use a different value than normal guns causing huge pellet dispersion
|
||||
/// </summary>
|
||||
[JsonPropertyName("fixShotgunDispersion")]
|
||||
public bool FixShotgunDispersion
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool FixShotgunDispersion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Remove items added by mods when the mod no longer exists - can fix dead profiles stuck at game load
|
||||
/// </summary>
|
||||
[JsonPropertyName("removeModItemsFromProfile")]
|
||||
public bool RemoveModItemsFromProfile
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool RemoveModItemsFromProfile { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Remove invalid traders from profile - trader data can be leftover when player removes trader mod
|
||||
/// </summary>
|
||||
[JsonPropertyName("removeInvalidTradersFromProfile")]
|
||||
public bool RemoveInvalidTradersFromProfile
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool RemoveInvalidTradersFromProfile { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fix issues that cause the game to not start due to inventory item issues
|
||||
/// </summary>
|
||||
[JsonPropertyName("fixProfileBreakingInventoryItemIssues")]
|
||||
public bool FixProfileBreakingInventoryItemIssues
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool FixProfileBreakingInventoryItemIssues { get; set; }
|
||||
}
|
||||
|
||||
public record ServerFeatures
|
||||
@@ -350,38 +210,22 @@ public record ServerFeatures
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("compressProfile")]
|
||||
public bool CompressProfile
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool CompressProfile { get; set; }
|
||||
|
||||
[JsonPropertyName("chatbotFeatures")]
|
||||
public required ChatbotFeatures ChatbotFeatures
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ChatbotFeatures ChatbotFeatures { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Keyed to profile type e.g. "Standard" or "SPT Developer"
|
||||
/// </summary>
|
||||
[JsonPropertyName("createNewProfileTypesBlacklist")]
|
||||
public required HashSet<string> CreateNewProfileTypesBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> CreateNewProfileTypesBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Profile ids to ignore when calculating achievement stats
|
||||
/// </summary>
|
||||
[JsonPropertyName("achievementProfileIdBlacklist")]
|
||||
public required HashSet<string>? AchievementProfileIdBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string>? AchievementProfileIdBlacklist { get; set; }
|
||||
}
|
||||
|
||||
public record ChatbotFeatures
|
||||
@@ -390,45 +234,25 @@ public record ChatbotFeatures
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("sptFriendGiftsEnabled")]
|
||||
public bool SptFriendGiftsEnabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool SptFriendGiftsEnabled { get; set; }
|
||||
|
||||
[JsonPropertyName("commandoFeatures")]
|
||||
public required CommandoFeatures CommandoFeatures
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required CommandoFeatures CommandoFeatures { get; set; }
|
||||
|
||||
[JsonPropertyName("commandUseLimits")]
|
||||
public required Dictionary<string, int?> CommandUseLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, int?> CommandUseLimits { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Human readable id to guid for each bot
|
||||
/// </summary>
|
||||
[JsonPropertyName("ids")]
|
||||
public required Dictionary<string, string> Ids
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, string> Ids { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Bot Ids player is allowed to interact with
|
||||
/// </summary>
|
||||
[JsonPropertyName("enabledBots")]
|
||||
public required Dictionary<string, bool> EnabledBots
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, bool> EnabledBots { get; set; }
|
||||
}
|
||||
|
||||
public record CommandoFeatures
|
||||
@@ -437,9 +261,5 @@ public record CommandoFeatures
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("giveCommandEnabled")]
|
||||
public bool GiveCommandEnabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool GiveCommandEnabled { get; set; }
|
||||
}
|
||||
|
||||
@@ -9,18 +9,10 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record GiftsConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-gifts";
|
||||
public override string Kind { get; set; } = "spt-gifts";
|
||||
|
||||
[JsonPropertyName("gifts")]
|
||||
public required Dictionary<string, Gift> Gifts
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, Gift> Gifts { get; set; }
|
||||
}
|
||||
|
||||
public record Gift
|
||||
@@ -32,112 +24,59 @@ public record Gift
|
||||
/// Items to send to player
|
||||
/// </summary>
|
||||
[JsonPropertyName("items")]
|
||||
public List<Item> Items
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public List<Item> Items { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Who is sending the gift to player
|
||||
/// </summary>
|
||||
[JsonPropertyName("sender")]
|
||||
public GiftSenderType Sender
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public GiftSenderType Sender { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optional - supply a users id to send from, not necessary when sending from SYSTEM or TRADER
|
||||
/// </summary>
|
||||
[JsonPropertyName("senderId")]
|
||||
public string? SenderId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? SenderId { get; set; }
|
||||
|
||||
[JsonPropertyName("senderDetails")]
|
||||
public UserDialogInfo? SenderDetails
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public UserDialogInfo? SenderDetails { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optional - supply a trader type to send from, not necessary when sending from SYSTEM or USER
|
||||
/// </summary>
|
||||
[JsonPropertyName("trader")]
|
||||
public string? Trader
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Trader { get; set; }
|
||||
|
||||
[JsonPropertyName("messageText")]
|
||||
public string? MessageText
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? MessageText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optional - if sending text from the client locale file
|
||||
/// </summary>
|
||||
[JsonPropertyName("localeTextId")]
|
||||
public string? LocaleTextId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? LocaleTextId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optional - Used by Seasonal events to send on specific day
|
||||
/// </summary>
|
||||
[JsonPropertyName("timestampToSend")]
|
||||
public long? TimestampToSend
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public long? TimestampToSend { get; set; }
|
||||
|
||||
[JsonPropertyName("associatedEvent")]
|
||||
public SeasonalEventType AssociatedEvent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public SeasonalEventType AssociatedEvent { get; set; }
|
||||
|
||||
[JsonPropertyName("collectionTimeHours")]
|
||||
public int? CollectionTimeHours
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? CollectionTimeHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Optional, can be used to change profile settings like level/skills
|
||||
/// </summary>
|
||||
[JsonPropertyName("profileChangeEvents")]
|
||||
public List<ProfileChangeEvent>? ProfileChangeEvents
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<ProfileChangeEvent>? ProfileChangeEvents { get; set; }
|
||||
|
||||
[JsonPropertyName("maxToSendPlayer")]
|
||||
public int? MaxToSendPlayer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public int? MaxToSendPlayer { get; set; }
|
||||
|
||||
[JsonPropertyName("maxToSendToPlayer")]
|
||||
public int? MaxToSendToPlayer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaxToSendToPlayer { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,25 +5,13 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record HealthConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-health";
|
||||
public override string Kind { get; set; } = "spt-health";
|
||||
|
||||
[JsonPropertyName("healthMultipliers")]
|
||||
public required HealthMultipliers HealthMultipliers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HealthMultipliers HealthMultipliers { get; set; }
|
||||
|
||||
[JsonPropertyName("save")]
|
||||
public required HealthSave Save
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HealthSave Save { get; set; }
|
||||
}
|
||||
|
||||
public record HealthMultipliers
|
||||
@@ -32,18 +20,10 @@ public record HealthMultipliers
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("death")]
|
||||
public double Death
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Death { get; set; }
|
||||
|
||||
[JsonPropertyName("blacked")]
|
||||
public double Blacked
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Blacked { get; set; }
|
||||
}
|
||||
|
||||
public record HealthSave
|
||||
@@ -52,16 +32,8 @@ public record HealthSave
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("health")]
|
||||
public bool Health
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Health { get; set; }
|
||||
|
||||
[JsonPropertyName("effects")]
|
||||
public bool Effects
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Effects { get; set; }
|
||||
}
|
||||
|
||||
@@ -7,83 +7,43 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record HideoutConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-hideout";
|
||||
public override string Kind { get; set; } = "spt-hideout";
|
||||
|
||||
/// <summary>
|
||||
/// How many seconds should pass before hideout crafts / fuel usage is checked and processed
|
||||
/// </summary>
|
||||
[JsonPropertyName("runIntervalSeconds")]
|
||||
public int RunIntervalSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int RunIntervalSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Default values used to hydrate `RunIntervalSeconds` with
|
||||
/// </summary>
|
||||
[JsonPropertyName("runIntervalValues")]
|
||||
public required RunIntervalValues RunIntervalValues
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required RunIntervalValues RunIntervalValues { get; set; }
|
||||
|
||||
[JsonPropertyName("hoursForSkillCrafting")]
|
||||
public int HoursForSkillCrafting
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HoursForSkillCrafting { get; set; }
|
||||
|
||||
[JsonPropertyName("expCraftAmount")]
|
||||
public int ExpCraftAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ExpCraftAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("overrideCraftTimeSeconds")]
|
||||
public int OverrideCraftTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int OverrideCraftTimeSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("overrideBuildTimeSeconds")]
|
||||
public int OverrideBuildTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int OverrideBuildTimeSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Only process a profile's hideout crafts when it has been active in the last x minutes
|
||||
/// </summary>
|
||||
[JsonPropertyName("updateProfileHideoutWhenActiveWithinMinutes")]
|
||||
public int UpdateProfileHideoutWhenActiveWithinMinutes
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int UpdateProfileHideoutWhenActiveWithinMinutes { get; set; }
|
||||
|
||||
[JsonPropertyName("cultistCircle")]
|
||||
public required CultistCircleSettings CultistCircle
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required CultistCircleSettings CultistCircle { get; set; }
|
||||
|
||||
[JsonPropertyName("hideoutCraftsToAdd")]
|
||||
public required List<HideoutCraftToAdd> HideoutCraftsToAdd
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<HideoutCraftToAdd> HideoutCraftsToAdd { get; set; }
|
||||
}
|
||||
|
||||
public record HideoutCraftToAdd
|
||||
@@ -95,32 +55,16 @@ public record HideoutCraftToAdd
|
||||
/// The new mongoId for the craft to use
|
||||
/// </summary>
|
||||
[JsonPropertyName("newId")]
|
||||
public required string NewId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string NewId { get; set; }
|
||||
|
||||
[JsonPropertyName("requirements")]
|
||||
public required List<Requirement> Requirements
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<Requirement> Requirements { get; set; }
|
||||
|
||||
[JsonPropertyName("craftIdToCopy")]
|
||||
public required string CraftIdToCopy
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string CraftIdToCopy { get; set; }
|
||||
|
||||
[JsonPropertyName("craftOutputTpl")]
|
||||
public required string CraftOutputTpl
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string CraftOutputTpl { get; set; }
|
||||
}
|
||||
|
||||
public record CultistCircleSettings
|
||||
@@ -129,146 +73,82 @@ public record CultistCircleSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("maxRewardItemCount")]
|
||||
public int MaxRewardItemCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxRewardItemCount { get; set; }
|
||||
|
||||
[JsonPropertyName("maxAttemptsToPickRewardsWithinBudget")]
|
||||
public int MaxAttemptsToPickRewardsWithinBudget
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxAttemptsToPickRewardsWithinBudget { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardPriceMultiplerMinMax")]
|
||||
public required MinMax<double> RewardPriceMultiplierMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<double> RewardPriceMultiplierMinMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The odds that meeting the highest threshold gives you a bonus to crafting time
|
||||
/// </summary>
|
||||
[JsonPropertyName("bonusAmountMultiplier")]
|
||||
public double BonusAmountMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double BonusAmountMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("bonusChanceMultiplier")]
|
||||
public double BonusChanceMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double BonusChanceMultiplier { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What is considered a "high-value" item
|
||||
/// </summary>
|
||||
[JsonPropertyName("highValueThresholdRub")]
|
||||
public int HighValueThresholdRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HighValueThresholdRub { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Hideout/task reward crafts have a unique craft time
|
||||
/// </summary>
|
||||
[JsonPropertyName("hideoutTaskRewardTimeSeconds")]
|
||||
public int HideoutTaskRewardTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HideoutTaskRewardTimeSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Rouble amount player needs to sacrifice to get chance of hideout/task rewards
|
||||
/// </summary>
|
||||
[JsonPropertyName("hideoutCraftSacrificeThresholdRub")]
|
||||
public int HideoutCraftSacrificeThresholdRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HideoutCraftSacrificeThresholdRub { get; set; }
|
||||
|
||||
[JsonPropertyName("craftTimeThreshholds")]
|
||||
public required List<CraftTimeThreshold> CraftTimeThreshholds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<CraftTimeThreshold> CraftTimeThreshholds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// -1 means no override, value in seconds
|
||||
/// </summary>
|
||||
[JsonPropertyName("craftTimeOverride")]
|
||||
public int CraftTimeOverride
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int CraftTimeOverride { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Specific reward pool when player sacrifices specific item(s)
|
||||
/// </summary>
|
||||
[JsonPropertyName("directRewards")]
|
||||
public required List<DirectRewardSettings> DirectRewards
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<DirectRewardSettings> DirectRewards { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Overrides for reward stack sizes, keyed by item tpl
|
||||
/// </summary>
|
||||
[JsonPropertyName("directRewardStackSize")]
|
||||
public required Dictionary<string, MinMax<int>> DirectRewardStackSize
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<int>> DirectRewardStackSize { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item tpls to exclude from the reward pool
|
||||
/// </summary>
|
||||
[JsonPropertyName("rewardItemBlacklist")]
|
||||
public required List<string> RewardItemBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> RewardItemBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item tpls to include in the reward pool
|
||||
/// </summary>
|
||||
[JsonPropertyName("additionalRewardItemPool")]
|
||||
public required List<string> AdditionalRewardItemPool
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> AdditionalRewardItemPool { get; set; }
|
||||
|
||||
[JsonPropertyName("currencyRewards")]
|
||||
public required Dictionary<string, MinMax<int>> CurrencyRewards
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<int>> CurrencyRewards { get; set; }
|
||||
}
|
||||
|
||||
public record CraftTimeThreshold : MinMax<int>
|
||||
{
|
||||
[JsonPropertyName("craftTimeSeconds")]
|
||||
public int CraftTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int CraftTimeSeconds { get; set; }
|
||||
}
|
||||
|
||||
public record DirectRewardSettings
|
||||
@@ -277,33 +157,17 @@ public record DirectRewardSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("reward")]
|
||||
public required List<string> Reward
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> Reward { get; set; }
|
||||
|
||||
[JsonPropertyName("requiredItems")]
|
||||
public required List<string> RequiredItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> RequiredItems { get; set; }
|
||||
|
||||
[JsonPropertyName("craftTimeSeconds")]
|
||||
public required int CraftTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int CraftTimeSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Is the reward a one time reward or can it be given multiple times
|
||||
/// </summary>
|
||||
[JsonPropertyName("repeatable")]
|
||||
public required bool Repeatable
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool Repeatable { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,74 +5,38 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record HttpConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-http";
|
||||
public override string Kind { get; set; } = "spt-http";
|
||||
|
||||
/// <summary>
|
||||
/// Address used by webserver
|
||||
/// </summary>
|
||||
[JsonPropertyName("ip")]
|
||||
public required string Ip
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string Ip { get; set; }
|
||||
|
||||
[JsonPropertyName("port")]
|
||||
public required int Port
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int Port { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Address used by game client to connect to
|
||||
/// </summary>
|
||||
[JsonPropertyName("backendIp")]
|
||||
public required string BackendIp
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string BackendIp { get; set; }
|
||||
|
||||
[JsonPropertyName("backendPort")]
|
||||
public required int BackendPort
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int BackendPort { get; set; }
|
||||
|
||||
[JsonPropertyName("webSocketPingDelayMs")]
|
||||
public required int WebSocketPingDelayMs
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int WebSocketPingDelayMs { get; set; }
|
||||
|
||||
[JsonPropertyName("logRequests")]
|
||||
public required bool LogRequests
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool LogRequests { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// e.g. "SPT_Data/Server/images/traders/579dc571d53a0658a154fbec.png": "SPT_Data/Server/images/traders/NewTraderImage.png"
|
||||
/// </summary>
|
||||
[JsonPropertyName("serverImagePathOverride")]
|
||||
public required Dictionary<string, string> ServerImagePathOverride
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, string> ServerImagePathOverride { get; set; }
|
||||
|
||||
[JsonPropertyName("certificatePassword")]
|
||||
public required string CertificatePassword
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string CertificatePassword { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,121 +5,73 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record InRaidConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-inraid";
|
||||
public override string Kind { get; set; } = "spt-inraid";
|
||||
|
||||
/// <summary>
|
||||
/// Overrides to apply to the pre-raid settings screen
|
||||
/// </summary>
|
||||
[JsonPropertyName("raidMenuSettings")]
|
||||
public required RaidMenuSettings RaidMenuSettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required RaidMenuSettings RaidMenuSettings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What effects should be saved post-raid
|
||||
/// </summary>
|
||||
[JsonPropertyName("save")]
|
||||
public RaidSave Save
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public RaidSave Save { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Names of car extracts
|
||||
/// </summary>
|
||||
[JsonPropertyName("carExtracts")]
|
||||
public required List<string> CarExtracts
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> CarExtracts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Names of coop extracts
|
||||
/// </summary>
|
||||
[JsonPropertyName("coopExtracts")]
|
||||
public required List<string> CoopExtracts
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> CoopExtracts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fence rep gain from a single car extract
|
||||
/// </summary>
|
||||
[JsonPropertyName("carExtractBaseStandingGain")]
|
||||
public double CarExtractBaseStandingGain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double CarExtractBaseStandingGain { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fence rep gain from a single coop extract
|
||||
/// </summary>
|
||||
[JsonPropertyName("coopExtractBaseStandingGain")]
|
||||
public double CoopExtractBaseStandingGain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double CoopExtractBaseStandingGain { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Fence rep gain when successfully extracting as pscav
|
||||
/// </summary>
|
||||
[JsonPropertyName("scavExtractStandingGain")]
|
||||
public double ScavExtractStandingGain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ScavExtractStandingGain { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The likelihood of PMC eliminating a minimum of 2 scavs while you engage them as a pscav.
|
||||
/// </summary>
|
||||
[JsonPropertyName("pmcKillProbabilityForScavGain")]
|
||||
public double PmcKillProbabilityForScavGain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PmcKillProbabilityForScavGain { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// On death should items in your secure keep their Find in raid status regardless of how you finished the raid
|
||||
/// </summary>
|
||||
[JsonPropertyName("keepFiRSecureContainerOnDeath")]
|
||||
public bool KeepFiRSecureContainerOnDeath
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool KeepFiRSecureContainerOnDeath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// If enabled always keep found in raid status on items
|
||||
/// </summary>
|
||||
[JsonPropertyName("alwaysKeepFoundInRaidOnRaidEnd")]
|
||||
public bool AlwaysKeepFoundInRaidOnRaidEnd
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AlwaysKeepFoundInRaidOnRaidEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Percentage chance a player scav hot is hostile to the player when scavving
|
||||
/// </summary>
|
||||
[JsonPropertyName("playerScavHostileChancePercent")]
|
||||
public double PlayerScavHostileChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PlayerScavHostileChancePercent { get; set; }
|
||||
}
|
||||
|
||||
public record RaidMenuSettings
|
||||
@@ -128,60 +80,28 @@ public record RaidMenuSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("aiAmount")]
|
||||
public required string AiAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string AiAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("aiDifficulty")]
|
||||
public required string AiDifficulty
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string AiDifficulty { get; set; }
|
||||
|
||||
[JsonPropertyName("bossEnabled")]
|
||||
public bool BossEnabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool BossEnabled { get; set; }
|
||||
|
||||
[JsonPropertyName("scavWars")]
|
||||
public bool ScavWars
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool ScavWars { get; set; }
|
||||
|
||||
[JsonPropertyName("taggedAndCursed")]
|
||||
public bool TaggedAndCursed
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool TaggedAndCursed { get; set; }
|
||||
|
||||
[JsonPropertyName("enablePve")]
|
||||
public bool EnablePve
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool EnablePve { get; set; }
|
||||
|
||||
[JsonPropertyName("randomWeather")]
|
||||
public bool RandomWeather
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool RandomWeather { get; set; }
|
||||
|
||||
[JsonPropertyName("randomTime")]
|
||||
public bool RandomTime
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool RandomTime { get; set; }
|
||||
}
|
||||
|
||||
public record RaidSave
|
||||
@@ -193,9 +113,5 @@ public record RaidSave
|
||||
/// Should loot gained from raid be saved
|
||||
/// </summary>
|
||||
[JsonPropertyName("loot")]
|
||||
public bool Loot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Loot { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,96 +5,56 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record InsuranceConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-insurance";
|
||||
public override string Kind { get; set; } = "spt-insurance";
|
||||
|
||||
/// <summary>
|
||||
/// Chance item is returned as insurance, keyed by trader id
|
||||
/// </summary>
|
||||
[JsonPropertyName("returnChancePercent")]
|
||||
public Dictionary<string, double> ReturnChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public Dictionary<string, double> ReturnChancePercent { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Item slots that should never be returned as insurance
|
||||
/// </summary>
|
||||
[JsonPropertyName("blacklistedEquipment")]
|
||||
public List<string> BlacklistedEquipment
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public List<string> BlacklistedEquipment { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Some slots should always be removed, e.g. 'cartridges'
|
||||
/// </summary>
|
||||
[JsonPropertyName("slotIdsToAlwaysRemove")]
|
||||
public List<string> SlotIdsToAlwaysRemove
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public List<string> SlotIdsToAlwaysRemove { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Override to control how quickly insurance is processed/returned in seconds
|
||||
/// </summary>
|
||||
[JsonPropertyName("returnTimeOverrideSeconds")]
|
||||
public double ReturnTimeOverrideSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ReturnTimeOverrideSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Override to control how long insurance returns stay in mail before expiring - in seconds
|
||||
/// </summary>
|
||||
[JsonPropertyName("storageTimeOverrideSeconds")]
|
||||
public double StorageTimeOverrideSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double StorageTimeOverrideSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How often server should process insurance in seconds
|
||||
/// </summary>
|
||||
[JsonPropertyName("runIntervalSeconds")]
|
||||
public double RunIntervalSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double RunIntervalSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Lowest rouble price for an attachment to be allowed to be taken
|
||||
/// </summary>
|
||||
[JsonPropertyName("minAttachmentRoublePriceToBeTaken")]
|
||||
public double MinAttachmentRoublePriceToBeTaken
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double MinAttachmentRoublePriceToBeTaken { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Chance out of 100% no attachments from a parent are taken
|
||||
/// </summary>
|
||||
[JsonPropertyName("chanceNoAttachmentsTakenPercent")]
|
||||
public double ChanceNoAttachmentsTakenPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ChanceNoAttachmentsTakenPercent { get; set; }
|
||||
|
||||
[JsonPropertyName("simulateItemsBeingTaken")]
|
||||
public bool SimulateItemsBeingTaken
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool SimulateItemsBeingTaken { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,65 +6,37 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record InventoryConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-inventory";
|
||||
public override string Kind { get; set; } = "spt-inventory";
|
||||
|
||||
/// <summary>
|
||||
/// Should new items purchased by flagged as found in raid
|
||||
/// </summary>
|
||||
[JsonPropertyName("newItemsMarkedFound")]
|
||||
public bool NewItemsMarkedFound
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool NewItemsMarkedFound { get; set; }
|
||||
|
||||
[JsonPropertyName("randomLootContainers")]
|
||||
public required Dictionary<string, RewardDetails> RandomLootContainers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, RewardDetails> RandomLootContainers { get; set; }
|
||||
|
||||
[JsonPropertyName("sealedAirdropContainer")]
|
||||
public required SealedAirdropContainerSettings SealedAirdropContainer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required SealedAirdropContainerSettings SealedAirdropContainer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Contains item tpls that the server should consider money and treat the same as roubles/euros/dollars
|
||||
/// </summary>
|
||||
[JsonPropertyName("customMoneyTpls")]
|
||||
public required List<string> CustomMoneyTpls
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> CustomMoneyTpls { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Multipliers for skill gain when inside menus, NOT in-game
|
||||
/// </summary>
|
||||
[JsonPropertyName("skillGainMultiplers")]
|
||||
public required Dictionary<string, double> SkillGainMultipliers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> SkillGainMultipliers { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Container Tpls that should be deprioritised when choosing where to take money from for payments
|
||||
/// </summary>
|
||||
[JsonPropertyName("deprioritisedMoneyContainers")]
|
||||
public required HashSet<string> DeprioritisedMoneyContainers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> DeprioritisedMoneyContainers { get; set; }
|
||||
}
|
||||
|
||||
public record RewardDetails
|
||||
@@ -73,39 +45,19 @@ public record RewardDetails
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("_type")]
|
||||
public string? Type
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Type { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardCount")]
|
||||
public int RewardCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int RewardCount { get; set; }
|
||||
|
||||
[JsonPropertyName("foundInRaid")]
|
||||
public bool FoundInRaid
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool FoundInRaid { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardTplPool")]
|
||||
public Dictionary<string, double>? RewardTplPool
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, double>? RewardTplPool { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardTypePool")]
|
||||
public List<string>? RewardTypePool
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? RewardTypePool { get; set; }
|
||||
}
|
||||
|
||||
public record SealedAirdropContainerSettings
|
||||
@@ -114,54 +66,26 @@ public record SealedAirdropContainerSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponRewardWeight")]
|
||||
public required Dictionary<string, double> WeaponRewardWeight
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> WeaponRewardWeight { get; set; }
|
||||
|
||||
[JsonPropertyName("defaultPresetsOnly")]
|
||||
public bool DefaultPresetsOnly
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool DefaultPresetsOnly { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should contents be flagged as found in raid when opened
|
||||
/// </summary>
|
||||
[JsonPropertyName("foundInRaid")]
|
||||
public bool FoundInRaid
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool FoundInRaid { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponModRewardLimits")]
|
||||
public required Dictionary<string, MinMax<int>> WeaponModRewardLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<int>> WeaponModRewardLimits { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardTypeLimits")]
|
||||
public required Dictionary<string, MinMax<int>> RewardTypeLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<int>> RewardTypeLimits { get; set; }
|
||||
|
||||
[JsonPropertyName("ammoBoxWhitelist")]
|
||||
public required List<string> AmmoBoxWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> AmmoBoxWhitelist { get; set; }
|
||||
|
||||
[JsonPropertyName("allowBossItems")]
|
||||
public bool AllowBossItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AllowBossItems { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,78 +6,46 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record ItemConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-item";
|
||||
public override string Kind { get; set; } = "spt-item";
|
||||
|
||||
/// <summary>
|
||||
/// Items that should be globally blacklisted
|
||||
/// </summary>
|
||||
[JsonPropertyName("blacklist")]
|
||||
public required HashSet<string> Blacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> Blacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Items that should not be lootable from any location
|
||||
/// </summary>
|
||||
[JsonPropertyName("lootableItemBlacklist")]
|
||||
public required HashSet<string> LootableItemBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> LootableItemBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// items that should not be given as rewards
|
||||
/// </summary>
|
||||
[JsonPropertyName("rewardItemBlacklist")]
|
||||
public required HashSet<string> RewardItemBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> RewardItemBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item base types that should not be given as rewards
|
||||
/// </summary>
|
||||
[JsonPropertyName("rewardItemTypeBlacklist")]
|
||||
public required HashSet<string> RewardItemTypeBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> RewardItemTypeBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Items that can only be found on bosses
|
||||
/// </summary>
|
||||
[JsonPropertyName("bossItems")]
|
||||
public required HashSet<string> BossItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> BossItems { get; set; }
|
||||
|
||||
[JsonPropertyName("handbookPriceOverride")]
|
||||
public required Dictionary<string, HandbookPriceOverride> HandbookPriceOverride
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, HandbookPriceOverride> HandbookPriceOverride { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Presets to add to the globals.json `ItemPresets` dictionary on server start
|
||||
/// </summary>
|
||||
[JsonPropertyName("customItemGlobalPresets")]
|
||||
public required List<Preset> CustomItemGlobalPresets
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<Preset> CustomItemGlobalPresets { get; set; }
|
||||
}
|
||||
|
||||
public record HandbookPriceOverride
|
||||
@@ -89,19 +57,11 @@ public record HandbookPriceOverride
|
||||
/// Price in roubles
|
||||
/// </summary>
|
||||
[JsonPropertyName("price")]
|
||||
public double Price
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NOT parentId from items.json, but handbook.json
|
||||
/// </summary>
|
||||
[JsonPropertyName("parentId")]
|
||||
public string? ParentId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = string.Empty;
|
||||
public string? ParentId { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
@@ -5,46 +5,26 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record LocaleConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-locale";
|
||||
public override string Kind { get; set; } = "spt-locale";
|
||||
|
||||
/// <summary>
|
||||
/// e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting
|
||||
/// </summary>
|
||||
[JsonPropertyName("gameLocale")]
|
||||
public required string GameLocale
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string GameLocale { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// e.g. ru/en/cn/fr etc, or 'system', will take computer locale setting
|
||||
/// </summary>
|
||||
[JsonPropertyName("serverLocale")]
|
||||
public required string ServerLocale
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string ServerLocale { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Languages server can be translated into
|
||||
/// </summary>
|
||||
[JsonPropertyName("serverSupportedLocales")]
|
||||
public required List<string> ServerSupportedLocales
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> ServerSupportedLocales { get; set; }
|
||||
|
||||
[JsonPropertyName("fallbacks")]
|
||||
public required Dictionary<string, string> Fallbacks
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, string> Fallbacks { get; set; }
|
||||
}
|
||||
|
||||
@@ -7,232 +7,136 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record LocationConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-location";
|
||||
public override string Kind { get; set; } = "spt-location";
|
||||
|
||||
/// <summary>
|
||||
/// Rogues are classified as bosses and spawn immediately, this can result in no scavs spawning, delay rogues spawning to allow scavs to spawn first
|
||||
/// </summary>
|
||||
[JsonPropertyName("rogueLighthouseSpawnTimeSettings")]
|
||||
public required RogueLighthouseSpawnTimeSettings RogueLighthouseSpawnTimeSettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required RogueLighthouseSpawnTimeSettings RogueLighthouseSpawnTimeSettings { get; set; }
|
||||
|
||||
[JsonPropertyName("looseLootMultiplier")]
|
||||
public required Dictionary<string, double> LooseLootMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> LooseLootMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("staticLootMultiplier")]
|
||||
public required Dictionary<string, double> StaticLootMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> StaticLootMultiplier { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true
|
||||
/// </summary>
|
||||
[JsonPropertyName("customWaves")]
|
||||
public CustomWaves? CustomWaves
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public CustomWaves? CustomWaves { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Open zones to add to map
|
||||
/// </summary>
|
||||
[JsonPropertyName("openZones")]
|
||||
public required Dictionary<string, HashSet<string>> OpenZones
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, HashSet<string>> OpenZones { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Key = map id, value = item tpls that should only have one forced loot spawn position
|
||||
/// </summary>
|
||||
[JsonPropertyName("forcedLootSingleSpawnById")]
|
||||
public required Dictionary<string, HashSet<string>> ForcedLootSingleSpawnById
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, HashSet<string>> ForcedLootSingleSpawnById { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How many attempts should be taken to fit an item into a container before giving up
|
||||
/// </summary>
|
||||
[JsonPropertyName("fitLootIntoContainerAttempts")]
|
||||
public int FitLootIntoContainerAttempts
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int FitLootIntoContainerAttempts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Add all possible zones to each maps `OpenZones` property
|
||||
/// </summary>
|
||||
[JsonPropertyName("addOpenZonesToAllMaps")]
|
||||
public bool AddOpenZonesToAllMaps
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AddOpenZonesToAllMaps { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Allow addition of custom bot waves designed by SPT to be added to maps - defined in configs/location.json.customWaves
|
||||
/// </summary>
|
||||
[JsonPropertyName("addCustomBotWavesToMaps")]
|
||||
public bool AddCustomBotWavesToMaps
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AddCustomBotWavesToMaps { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should the limits defined inside botTypeLimits to be applied to locations on game start
|
||||
/// </summary>
|
||||
[JsonPropertyName("enableBotTypeLimits")]
|
||||
public bool EnableBotTypeLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool EnableBotTypeLimits { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Add limits to a locations base.MinMaxBots array if enableBotTypeLimits is true
|
||||
/// </summary>
|
||||
[JsonPropertyName("botTypeLimits")]
|
||||
public required Dictionary<string, List<BotTypeLimit>> BotTypeLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, List<BotTypeLimit>> BotTypeLimits { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Container randomisation settings
|
||||
/// </summary>
|
||||
[JsonPropertyName("containerRandomisationSettings")]
|
||||
public required ContainerRandomisationSettings ContainerRandomisationSettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ContainerRandomisationSettings ContainerRandomisationSettings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How full must a random loose magazine be %
|
||||
/// </summary>
|
||||
[JsonPropertyName("minFillLooseMagazinePercent")]
|
||||
public int MinFillLooseMagazinePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinFillLooseMagazinePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How full must a random static magazine be %
|
||||
/// </summary>
|
||||
[JsonPropertyName("minFillStaticMagazinePercent")]
|
||||
public int MinFillStaticMagazinePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinFillStaticMagazinePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("allowDuplicateItemsInStaticContainers")]
|
||||
public bool AllowDuplicateItemsInStaticContainers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AllowDuplicateItemsInStaticContainers { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Chance loose magazines have ammo in them TODO - rename to dynamicMagazineLootHasAmmoChancePercent
|
||||
/// </summary>
|
||||
[JsonPropertyName("magazineLootHasAmmoChancePercent")]
|
||||
public int MagazineLootHasAmmoChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MagazineLootHasAmmoChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Chance static magazines have ammo in them
|
||||
/// </summary>
|
||||
[JsonPropertyName("staticMagazineLootHasAmmoChancePercent")]
|
||||
public int StaticMagazineLootHasAmmoChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int StaticMagazineLootHasAmmoChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Key: map, value: loose loot ids to ignore
|
||||
/// </summary>
|
||||
[JsonPropertyName("looseLootBlacklist")]
|
||||
public required Dictionary<string, List<string>> LooseLootBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, List<string>> LooseLootBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Key: map, value: settings to control how long scav raids are
|
||||
/// </summary>
|
||||
[JsonPropertyName("scavRaidTimeSettings")]
|
||||
public required ScavRaidTimeSettings ScavRaidTimeSettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ScavRaidTimeSettings ScavRaidTimeSettings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Settings to adjust mods for lootable equipment in raid
|
||||
/// </summary>
|
||||
[JsonPropertyName("equipmentLootSettings")]
|
||||
public required EquipmentLootSettings EquipmentLootSettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required EquipmentLootSettings EquipmentLootSettings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min percentage to set raider spawns at, -1 makes no changes
|
||||
/// </summary>
|
||||
[JsonPropertyName("reserveRaiderSpawnChanceOverrides")]
|
||||
public required ReserveRaiderSpawnChanceOverrides ReserveRaiderSpawnChanceOverrides
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ReserveRaiderSpawnChanceOverrides ReserveRaiderSpawnChanceOverrides { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Containers to remove all children from when generating static/loose loot
|
||||
/// </summary>
|
||||
[JsonPropertyName("tplsToStripChildItemsFrom")]
|
||||
public required HashSet<string> TplsToStripChildItemsFrom
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> TplsToStripChildItemsFrom { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Map ids players cannot visit
|
||||
/// </summary>
|
||||
[JsonPropertyName("nonMaps")]
|
||||
public required HashSet<string> NonMaps
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> NonMaps { get; set; }
|
||||
|
||||
[JsonPropertyName("transitSettings")]
|
||||
public TransitSettings? TransitSettings { get; set; }
|
||||
@@ -256,18 +160,10 @@ public record ReserveRaiderSpawnChanceOverrides
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("nonTriggered")]
|
||||
public int NonTriggered
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int NonTriggered { get; set; }
|
||||
|
||||
[JsonPropertyName("triggered")]
|
||||
public int Triggered
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int Triggered { get; set; }
|
||||
}
|
||||
|
||||
public record EquipmentLootSettings
|
||||
@@ -279,11 +175,7 @@ public record EquipmentLootSettings
|
||||
/// Percentage chance item will be added to equipment
|
||||
/// </summary>
|
||||
[JsonPropertyName("modSpawnChancePercent")]
|
||||
public required Dictionary<string, double> ModSpawnChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> ModSpawnChancePercent { get; set; }
|
||||
}
|
||||
|
||||
public record RogueLighthouseSpawnTimeSettings
|
||||
@@ -292,18 +184,10 @@ public record RogueLighthouseSpawnTimeSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("waitTimeSeconds")]
|
||||
public int WaitTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int WaitTimeSeconds { get; set; }
|
||||
}
|
||||
|
||||
public record CustomWaves
|
||||
@@ -315,28 +199,16 @@ public record CustomWaves
|
||||
/// Bosses spawn on raid start
|
||||
/// </summary>
|
||||
[JsonPropertyName("boss")]
|
||||
public Dictionary<string, List<BossLocationSpawn>> Boss
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public Dictionary<string, List<BossLocationSpawn>> Boss { get; set; } = [];
|
||||
|
||||
[JsonPropertyName("normal")]
|
||||
public Dictionary<string, List<Wave>> Normal
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public Dictionary<string, List<Wave>> Normal { get; set; } = [];
|
||||
}
|
||||
|
||||
public record BotTypeLimit : MinMax<int>
|
||||
{
|
||||
[JsonPropertyName("type")]
|
||||
public new required string Type
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public new required string Type { get; set; }
|
||||
}
|
||||
|
||||
public record ContainerRandomisationSettings
|
||||
@@ -345,45 +217,25 @@ public record ContainerRandomisationSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What maps can use the container randomisation feature
|
||||
/// </summary>
|
||||
[JsonPropertyName("maps")]
|
||||
public required Dictionary<string, bool> Maps
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, bool> Maps { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Some container types don't work when randomised
|
||||
/// </summary>
|
||||
[JsonPropertyName("containerTypesToNotRandomise")]
|
||||
public required HashSet<string> ContainerTypesToNotRandomise
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> ContainerTypesToNotRandomise { get; set; }
|
||||
|
||||
[JsonPropertyName("containerGroupMinSizeMultiplier")]
|
||||
public double ContainerGroupMinSizeMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ContainerGroupMinSizeMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("containerGroupMaxSizeMultiplier")]
|
||||
public double ContainerGroupMaxSizeMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ContainerGroupMaxSizeMultiplier { get; set; }
|
||||
}
|
||||
|
||||
public record ScavRaidTimeSettings
|
||||
@@ -392,18 +244,10 @@ public record ScavRaidTimeSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("settings")]
|
||||
public required ScavRaidTimeConfigSettings Settings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ScavRaidTimeConfigSettings Settings { get; set; }
|
||||
|
||||
[JsonPropertyName("maps")]
|
||||
public required Dictionary<string, ScavRaidTimeLocationSettings?> Maps
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, ScavRaidTimeLocationSettings?> Maps { get; set; }
|
||||
}
|
||||
|
||||
public record ScavRaidTimeConfigSettings
|
||||
@@ -412,11 +256,7 @@ public record ScavRaidTimeConfigSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("trainArrivalDelayObservedSeconds")]
|
||||
public int TrainArrivalDelayObservedSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int TrainArrivalDelayObservedSeconds { get; set; }
|
||||
}
|
||||
|
||||
public record ScavRaidTimeLocationSettings
|
||||
@@ -428,59 +268,35 @@ public record ScavRaidTimeLocationSettings
|
||||
/// Should loot be reduced by same percent length of raid is reduced by
|
||||
/// </summary>
|
||||
[JsonPropertyName("reduceLootByPercent")]
|
||||
public bool ReduceLootByPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool ReduceLootByPercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Smallest % of container loot that should be spawned
|
||||
/// </summary>
|
||||
[JsonPropertyName("minStaticLootPercent")]
|
||||
public double MinStaticLootPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double MinStaticLootPercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Smallest % of loose loot that should be spawned
|
||||
/// </summary>
|
||||
[JsonPropertyName("minDynamicLootPercent")]
|
||||
public double MinDynamicLootPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double MinDynamicLootPercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Chance raid time is reduced
|
||||
/// </summary>
|
||||
[JsonPropertyName("reducedChancePercent")]
|
||||
public double ReducedChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ReducedChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How much should raid time be reduced - weighted
|
||||
/// </summary>
|
||||
[JsonPropertyName("reductionPercentWeights")]
|
||||
public Dictionary<string, double> ReductionPercentWeights
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public Dictionary<string, double> ReductionPercentWeights { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Should bot waves be removed / spawn times be adjusted
|
||||
/// </summary>
|
||||
[JsonPropertyName("adjustWaves")]
|
||||
public bool AdjustWaves
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AdjustWaves { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,29 +6,20 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record LootConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-loot";
|
||||
public override string Kind { get; set; } = "spt-loot";
|
||||
|
||||
/// <summary>
|
||||
/// Spawn positions to add into a map, key=mapid
|
||||
/// </summary>
|
||||
[JsonPropertyName("looseLoot")]
|
||||
public required Dictionary<string, Spawnpoint[]> LooseLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, Spawnpoint[]> LooseLoot { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Loose loot probability adjustments to apply on game start
|
||||
/// </summary>
|
||||
[JsonPropertyName("looseLootSpawnPointAdjustments")]
|
||||
public required Dictionary<string, Dictionary<string, double>> LooseLootSpawnPointAdjustments
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<
|
||||
string,
|
||||
Dictionary<string, double>
|
||||
> LooseLootSpawnPointAdjustments { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,41 +5,25 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record LostOnDeathConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-lostondeath";
|
||||
public override string Kind { get; set; } = "spt-lostondeath";
|
||||
|
||||
/// <summary>
|
||||
/// What equipment in each slot should be lost on death
|
||||
/// </summary>
|
||||
[JsonPropertyName("equipment")]
|
||||
public required LostEquipment Equipment
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required LostEquipment Equipment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should special slot items be removed from quest inventory on death e.g. wifi camera/markers
|
||||
/// </summary>
|
||||
[JsonPropertyName("specialSlotItems")]
|
||||
public bool SpecialSlotItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool SpecialSlotItems { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should quest items be removed from quest inventory on death
|
||||
/// </summary>
|
||||
[JsonPropertyName("questItems")]
|
||||
public bool QuestItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool QuestItems { get; set; }
|
||||
}
|
||||
|
||||
public record LostEquipment
|
||||
@@ -48,107 +32,47 @@ public record LostEquipment
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("ArmBand")]
|
||||
public bool ArmBand
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool ArmBand { get; set; }
|
||||
|
||||
[JsonPropertyName("Headwear")]
|
||||
public bool Headwear
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Headwear { get; set; }
|
||||
|
||||
[JsonPropertyName("Earpiece")]
|
||||
public bool Earpiece
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Earpiece { get; set; }
|
||||
|
||||
[JsonPropertyName("FaceCover")]
|
||||
public bool FaceCover
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool FaceCover { get; set; }
|
||||
|
||||
[JsonPropertyName("ArmorVest")]
|
||||
public bool ArmorVest
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool ArmorVest { get; set; }
|
||||
|
||||
[JsonPropertyName("Eyewear")]
|
||||
public bool Eyewear
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Eyewear { get; set; }
|
||||
|
||||
[JsonPropertyName("TacticalVest")]
|
||||
public bool TacticalVest
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool TacticalVest { get; set; }
|
||||
|
||||
[JsonPropertyName("PocketItems")]
|
||||
public bool PocketItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool PocketItems { get; set; }
|
||||
|
||||
[JsonPropertyName("Backpack")]
|
||||
public bool Backpack
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Backpack { get; set; }
|
||||
|
||||
[JsonPropertyName("Holster")]
|
||||
public bool Holster
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Holster { get; set; }
|
||||
|
||||
[JsonPropertyName("FirstPrimaryWeapon")]
|
||||
public bool FirstPrimaryWeapon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool FirstPrimaryWeapon { get; set; }
|
||||
|
||||
[JsonPropertyName("SecondPrimaryWeapon")]
|
||||
public bool SecondPrimaryWeapon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool SecondPrimaryWeapon { get; set; }
|
||||
|
||||
[JsonPropertyName("Scabbard")]
|
||||
public bool Scabbard
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Scabbard { get; set; }
|
||||
|
||||
[JsonPropertyName("Compass")]
|
||||
public bool Compass
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Compass { get; set; }
|
||||
|
||||
[JsonPropertyName("SecuredContainer")]
|
||||
public bool SecuredContainer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool SecuredContainer { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,23 +5,11 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record MatchConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-match";
|
||||
public override string Kind { get; set; } = "spt-match";
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("randomiseMapContainers")]
|
||||
public required Dictionary<string, bool> RandomiseMapContainers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, bool> RandomiseMapContainers { get; set; }
|
||||
}
|
||||
|
||||
@@ -7,18 +7,10 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record PlayerScavConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-playerscav";
|
||||
public override string Kind { get; set; } = "spt-playerscav";
|
||||
|
||||
[JsonPropertyName("karmaLevel")]
|
||||
public required Dictionary<string, KarmaLevel> KarmaLevel
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, KarmaLevel> KarmaLevel { get; set; }
|
||||
}
|
||||
|
||||
public record KarmaLevel
|
||||
@@ -27,46 +19,22 @@ public record KarmaLevel
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("botTypeForLoot")]
|
||||
public required string BotTypeForLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string BotTypeForLoot { get; set; }
|
||||
|
||||
[JsonPropertyName("modifiers")]
|
||||
public required Modifiers Modifiers
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Modifiers Modifiers { get; set; }
|
||||
|
||||
[JsonPropertyName("itemLimits")]
|
||||
public required Dictionary<string, GenerationData> ItemLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, GenerationData> ItemLimits { get; set; }
|
||||
|
||||
[JsonPropertyName("equipmentBlacklist")]
|
||||
public required Dictionary<EquipmentSlots, List<string>> EquipmentBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<EquipmentSlots, List<string>> EquipmentBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("labsAccessCardChancePercent")]
|
||||
public double? LabsAccessCardChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? LabsAccessCardChancePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("lootItemsToAddChancePercent")]
|
||||
public required Dictionary<string, double> LootItemsToAddChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> LootItemsToAddChancePercent { get; set; }
|
||||
}
|
||||
|
||||
public record Modifiers
|
||||
@@ -75,16 +43,8 @@ public record Modifiers
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("equipment")]
|
||||
public required Dictionary<string, double> Equipment
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> Equipment { get; set; }
|
||||
|
||||
[JsonPropertyName("mod")]
|
||||
public required Dictionary<string, double> Mod
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> Mod { get; set; }
|
||||
}
|
||||
|
||||
@@ -5,25 +5,13 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record PmcChatResponse : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-pmcchatresponse";
|
||||
public override string Kind { get; set; } = "spt-pmcchatresponse";
|
||||
|
||||
[JsonPropertyName("victim")]
|
||||
public required ResponseSettings Victim
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ResponseSettings Victim { get; set; }
|
||||
|
||||
[JsonPropertyName("killer")]
|
||||
public required ResponseSettings Killer
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ResponseSettings Killer { get; set; }
|
||||
}
|
||||
|
||||
public record ResponseSettings
|
||||
@@ -32,37 +20,17 @@ public record ResponseSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("responseChancePercent")]
|
||||
public double ResponseChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ResponseChancePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("responseTypeWeights")]
|
||||
public required Dictionary<string, double> ResponseTypeWeights
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> ResponseTypeWeights { get; set; }
|
||||
|
||||
[JsonPropertyName("stripCapitalisationChancePercent")]
|
||||
public double StripCapitalisationChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double StripCapitalisationChancePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("allCapsChancePercent")]
|
||||
public double AllCapsChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double AllCapsChancePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("appendBroToMessageEndChancePercent")]
|
||||
public double AppendBroToMessageEndChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double AppendBroToMessageEndChancePercent { get; set; }
|
||||
}
|
||||
|
||||
@@ -8,282 +8,157 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record PmcConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-pmc";
|
||||
public override string Kind { get; set; } = "spt-pmc";
|
||||
|
||||
/// <summary>
|
||||
/// What game version should the PMC have
|
||||
/// </summary>
|
||||
[JsonPropertyName("gameVersionWeight")]
|
||||
public required Dictionary<string, double> GameVersionWeight
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> GameVersionWeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What account type should the PMC have
|
||||
/// </summary>
|
||||
[JsonPropertyName("accountTypeWeight")]
|
||||
public required Dictionary<MemberCategory, double> AccountTypeWeight
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<MemberCategory, double> AccountTypeWeight { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Global whitelist/blacklist of vest loot for PMCs
|
||||
/// </summary>
|
||||
[JsonPropertyName("vestLoot")]
|
||||
public required SlotLootSettings VestLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required SlotLootSettings VestLoot { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Global whitelist/blacklist of pocket loot for PMCs
|
||||
/// </summary>
|
||||
[JsonPropertyName("pocketLoot")]
|
||||
public required SlotLootSettings PocketLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required SlotLootSettings PocketLoot { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Global whitelist/blacklist of backpack loot for PMCs
|
||||
/// </summary>
|
||||
[JsonPropertyName("backpackLoot")]
|
||||
public required SlotLootSettings BackpackLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required SlotLootSettings BackpackLoot { get; set; }
|
||||
|
||||
[JsonPropertyName("globalLootBlacklist")]
|
||||
public required List<string> GlobalLootBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> GlobalLootBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Use difficulty defined in config/bot.json/difficulty instead of chosen difficulty dropdown value
|
||||
/// </summary>
|
||||
[JsonPropertyName("useDifficultyOverride")]
|
||||
public required bool UseDifficultyOverride
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool UseDifficultyOverride { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Difficulty override e.g. "AsOnline/Hard"
|
||||
/// </summary>
|
||||
[JsonPropertyName("difficulty")]
|
||||
public required string Difficulty
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string Difficulty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Chance out of 100 to have a complete gun in backpack
|
||||
/// </summary>
|
||||
[JsonPropertyName("looseWeaponInBackpackChancePercent")]
|
||||
public required double LooseWeaponInBackpackChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required double LooseWeaponInBackpackChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Chance out of 100 to have an enhancement applied to PMC weapon
|
||||
/// </summary>
|
||||
[JsonPropertyName("weaponHasEnhancementChancePercent")]
|
||||
public required double WeaponHasEnhancementChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required double WeaponHasEnhancementChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// MinMax count of weapons to have in backpack
|
||||
/// </summary>
|
||||
[JsonPropertyName("looseWeaponInBackpackLootMinMax")]
|
||||
public required MinMax<int> LooseWeaponInBackpackLootMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> LooseWeaponInBackpackLootMinMax { get; set; }
|
||||
|
||||
[JsonPropertyName("_isUsec")]
|
||||
public string? IsUsecDescription
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? IsUsecDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Percentage chance PMC will be USEC
|
||||
/// </summary>
|
||||
[JsonPropertyName("isUsec")]
|
||||
public required double IsUsec
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required double IsUsec { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// WildSpawnType enum value USEC PMCs use
|
||||
/// </summary>
|
||||
[JsonPropertyName("usecType")]
|
||||
public required string UsecType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string UsecType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// WildSpawnType enum value BEAR PMCs use
|
||||
/// </summary>
|
||||
[JsonPropertyName("bearType")]
|
||||
public required string BearType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required string BearType { get; set; }
|
||||
|
||||
[JsonPropertyName("_pmcType")]
|
||||
public string? PmcTypeDescription
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? PmcTypeDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear
|
||||
/// </summary>
|
||||
[JsonPropertyName("pmcType")]
|
||||
public required Dictionary<string, Dictionary<string, Dictionary<string, double>>> PmcType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<
|
||||
string,
|
||||
Dictionary<string, Dictionary<string, double>>
|
||||
> PmcType { get; set; }
|
||||
|
||||
[JsonPropertyName("maxBackpackLootTotalRub")]
|
||||
public required List<MinMaxLootValue> MaxBackpackLootTotalRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<MinMaxLootValue> MaxBackpackLootTotalRub { get; set; }
|
||||
|
||||
[JsonPropertyName("maxPocketLootTotalRub")]
|
||||
public required int MaxPocketLootTotalRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int MaxPocketLootTotalRub { get; set; }
|
||||
|
||||
[JsonPropertyName("maxVestLootTotalRub")]
|
||||
public required int MaxVestLootTotalRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int MaxVestLootTotalRub { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How many levels above player level can a PMC be
|
||||
/// </summary>
|
||||
[JsonPropertyName("botRelativeLevelDeltaMax")]
|
||||
public required int BotRelativeLevelDeltaMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int BotRelativeLevelDeltaMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How many levels below player level can a PMC be
|
||||
/// </summary>
|
||||
[JsonPropertyName("botRelativeLevelDeltaMin")]
|
||||
public required int BotRelativeLevelDeltaMin
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int BotRelativeLevelDeltaMin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Force a number of healing items into PMCs secure container to ensure they can heal
|
||||
/// </summary>
|
||||
[JsonPropertyName("forceHealingItemsIntoSecure")]
|
||||
public required bool ForceHealingItemsIntoSecure
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool ForceHealingItemsIntoSecure { get; set; }
|
||||
|
||||
[JsonPropertyName("hostilitySettings")]
|
||||
public required Dictionary<string, HostilitySettings> HostilitySettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, HostilitySettings> HostilitySettings { get; set; }
|
||||
|
||||
[JsonPropertyName("allPMCsHavePlayerNameWithRandomPrefixChance")]
|
||||
public required double AllPMCsHavePlayerNameWithRandomPrefixChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required double AllPMCsHavePlayerNameWithRandomPrefixChance { get; set; }
|
||||
|
||||
[JsonPropertyName("locationSpecificPmcLevelOverride")]
|
||||
public required Dictionary<string, MinMax<int>> LocationSpecificPmcLevelOverride
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<int>> LocationSpecificPmcLevelOverride { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should secure container loot from usec.json/bear.json be added to pmc bots secure
|
||||
/// </summary>
|
||||
[JsonPropertyName("addSecureContainerLootFromBotConfig")]
|
||||
public required bool AddSecureContainerLootFromBotConfig
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool AddSecureContainerLootFromBotConfig { get; set; }
|
||||
|
||||
[JsonPropertyName("addPrefixToSameNamePMCAsPlayerChance")]
|
||||
public required int? AddPrefixToSameNamePMCAsPlayerChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required int? AddPrefixToSameNamePMCAsPlayerChance { get; set; }
|
||||
|
||||
[JsonPropertyName("lootItemLimitsRub")]
|
||||
public required List<MinMaxLootItemValue>? LootItemLimitsRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<MinMaxLootItemValue>? LootItemLimitsRub { get; set; }
|
||||
|
||||
[JsonPropertyName("removeExistingPmcWaves")]
|
||||
public required bool? RemoveExistingPmcWaves
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required bool? RemoveExistingPmcWaves { get; set; }
|
||||
|
||||
[JsonPropertyName("customPmcWaves")]
|
||||
public required Dictionary<string, List<BossLocationSpawn>> CustomPmcWaves
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, List<BossLocationSpawn>> CustomPmcWaves { get; set; }
|
||||
}
|
||||
|
||||
public record HostilitySettings
|
||||
@@ -295,59 +170,31 @@ public record HostilitySettings
|
||||
/// Bot roles that are 100% an enemy
|
||||
/// </summary>
|
||||
[JsonPropertyName("additionalEnemyTypes")]
|
||||
public List<string>? AdditionalEnemyTypes
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? AdditionalEnemyTypes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Objects that determine the % chance another bot type is an enemy
|
||||
/// </summary>
|
||||
[JsonPropertyName("chancedEnemies")]
|
||||
public List<ChancedEnemy>? ChancedEnemies
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<ChancedEnemy>? ChancedEnemies { get; set; }
|
||||
|
||||
[JsonPropertyName("bearEnemyChance")]
|
||||
public double? BearEnemyChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? BearEnemyChance { get; set; }
|
||||
|
||||
[JsonPropertyName("usecEnemyChance")]
|
||||
public double? UsecEnemyChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? UsecEnemyChance { get; set; }
|
||||
|
||||
[JsonPropertyName("savageEnemyChance")]
|
||||
public double? SavageEnemyChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? SavageEnemyChance { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Bot roles that are 100% a friendly
|
||||
/// </summary>
|
||||
[JsonPropertyName("additionalFriendlyTypes")]
|
||||
public List<string>? AdditionalFriendlyTypes
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? AdditionalFriendlyTypes { get; set; }
|
||||
|
||||
[JsonPropertyName("savagePlayerBehaviour")]
|
||||
public string? SavagePlayerBehaviour
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? SavagePlayerBehaviour { get; set; }
|
||||
}
|
||||
|
||||
public record SlotLootSettings
|
||||
@@ -359,53 +206,29 @@ public record SlotLootSettings
|
||||
/// Item Type whitelist
|
||||
/// </summary>
|
||||
[JsonPropertyName("whitelist")]
|
||||
public HashSet<string> Whitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public HashSet<string> Whitelist { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Item tpl blacklist
|
||||
/// </summary>
|
||||
[JsonPropertyName("blacklist")]
|
||||
public HashSet<string> Blacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public HashSet<string> Blacklist { get; set; } = [];
|
||||
}
|
||||
|
||||
public record MinMaxLootValue : MinMax<int>
|
||||
{
|
||||
[JsonPropertyName("value")]
|
||||
public double Value
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Value { get; set; }
|
||||
}
|
||||
|
||||
public record MinMaxLootItemValue : MinMax<double>
|
||||
{
|
||||
[JsonPropertyName("backpack")]
|
||||
public required MinMax<double> Backpack
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<double> Backpack { get; set; }
|
||||
|
||||
[JsonPropertyName("pocket")]
|
||||
public required MinMax<double> Pocket
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<double> Pocket { get; set; }
|
||||
|
||||
[JsonPropertyName("vest")]
|
||||
public required MinMax<double> Vest
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<double> Vest { get; set; }
|
||||
}
|
||||
|
||||
@@ -9,93 +9,49 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record QuestConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-quest";
|
||||
public override string Kind { get; set; } = "spt-quest";
|
||||
|
||||
/// <summary>
|
||||
/// Hours to get/redeem items from quest mail keyed by profile type
|
||||
/// </summary>
|
||||
[JsonPropertyName("mailRedeemTimeHours")]
|
||||
public Dictionary<string, double?>? MailRedeemTimeHours
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, double?>? MailRedeemTimeHours { get; set; }
|
||||
|
||||
[JsonPropertyName("questTemplateIds")]
|
||||
public PlayerTypeQuestIds? QuestTemplateIds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public PlayerTypeQuestIds? QuestTemplateIds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Show non-seasonal quests be shown to player
|
||||
/// </summary>
|
||||
[JsonPropertyName("showNonSeasonalEventQuests")]
|
||||
public bool? ShowNonSeasonalEventQuests
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? ShowNonSeasonalEventQuests { get; set; }
|
||||
|
||||
[JsonPropertyName("eventQuests")]
|
||||
public Dictionary<string, EventQuestData>? EventQuests
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, EventQuestData>? EventQuests { get; set; }
|
||||
|
||||
[JsonPropertyName("repeatableQuests")]
|
||||
public List<RepeatableQuestConfig>? RepeatableQuests
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<RepeatableQuestConfig>? RepeatableQuests { get; set; }
|
||||
|
||||
[JsonPropertyName("locationIdMap")]
|
||||
public Dictionary<string, string>? LocationIdMap
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, string>? LocationIdMap { get; set; }
|
||||
|
||||
[JsonPropertyName("bearOnlyQuests")]
|
||||
public HashSet<string>? BearOnlyQuests
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string>? BearOnlyQuests { get; set; }
|
||||
|
||||
[JsonPropertyName("usecOnlyQuests")]
|
||||
public HashSet<string>? UsecOnlyQuests
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string>? UsecOnlyQuests { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Quests that the keyed game version do not see/access
|
||||
/// </summary>
|
||||
[JsonPropertyName("profileBlacklist")]
|
||||
public Dictionary<string, HashSet<string>>? ProfileBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, HashSet<string>>? ProfileBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// key=questid, gameversions that can see/access quest
|
||||
/// </summary>
|
||||
[JsonPropertyName("profileWhitelist")]
|
||||
public Dictionary<string, HashSet<string>>? ProfileWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, HashSet<string>>? ProfileWhitelist { get; set; }
|
||||
}
|
||||
|
||||
public record PlayerTypeQuestIds
|
||||
@@ -104,18 +60,10 @@ public record PlayerTypeQuestIds
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("pmc")]
|
||||
public QuestTypeIds? Pmc
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public QuestTypeIds? Pmc { get; set; }
|
||||
|
||||
[JsonPropertyName("scav")]
|
||||
public QuestTypeIds? Scav
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public QuestTypeIds? Scav { get; set; }
|
||||
}
|
||||
|
||||
public record QuestTypeIds
|
||||
@@ -124,32 +72,16 @@ public record QuestTypeIds
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("elimination")]
|
||||
public string? Elimination
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Elimination { get; set; }
|
||||
|
||||
[JsonPropertyName("completion")]
|
||||
public string? Completion
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Completion { get; set; }
|
||||
|
||||
[JsonPropertyName("exploration")]
|
||||
public string? Exploration
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Exploration { get; set; }
|
||||
|
||||
[JsonPropertyName("pickup")]
|
||||
public string? Pickup
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Pickup { get; set; }
|
||||
}
|
||||
|
||||
public record EventQuestData
|
||||
@@ -158,40 +90,20 @@ public record EventQuestData
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string? Name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Name { get; set; }
|
||||
|
||||
[JsonPropertyName("season")]
|
||||
public SeasonalEventType? Season
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public SeasonalEventType? Season { get; set; }
|
||||
|
||||
[JsonPropertyName("startTimestamp")]
|
||||
public long? StartTimestamp
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public long? StartTimestamp { get; set; }
|
||||
|
||||
[JsonPropertyName("endTimestamp")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public long? EndTimestamp
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public long? EndTimestamp { get; set; }
|
||||
|
||||
[JsonPropertyName("yearly")]
|
||||
public bool? Yearly
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? Yearly { get; set; }
|
||||
}
|
||||
|
||||
public record RepeatableQuestConfig
|
||||
@@ -200,139 +112,67 @@ public record RepeatableQuestConfig
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("id")]
|
||||
public string? Id
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Id { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string? Name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Name { get; set; }
|
||||
|
||||
[JsonPropertyName("side")]
|
||||
public string? Side
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Side { get; set; }
|
||||
|
||||
[JsonPropertyName("types")]
|
||||
public List<string>? Types
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? Types { get; set; }
|
||||
|
||||
[JsonPropertyName("resetTime")]
|
||||
public long? ResetTime
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public long? ResetTime { get; set; }
|
||||
|
||||
[JsonPropertyName("numQuests")]
|
||||
public int? NumQuests
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? NumQuests { get; set; }
|
||||
|
||||
[JsonPropertyName("minPlayerLevel")]
|
||||
public int? MinPlayerLevel
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MinPlayerLevel { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardScaling")]
|
||||
public RewardScaling? RewardScaling
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public RewardScaling? RewardScaling { get; set; }
|
||||
|
||||
[JsonPropertyName("locations")]
|
||||
public Dictionary<ELocationName, List<string>>? Locations
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<ELocationName, List<string>>? Locations { get; set; }
|
||||
|
||||
[JsonPropertyName("traderWhitelist")]
|
||||
public List<TraderWhitelist>? TraderWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<TraderWhitelist>? TraderWhitelist { get; set; }
|
||||
|
||||
[JsonPropertyName("questConfig")]
|
||||
public RepeatableQuestTypesConfig? QuestConfig
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public RepeatableQuestTypesConfig? QuestConfig { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item base types to block when generating rewards
|
||||
/// </summary>
|
||||
[JsonPropertyName("rewardBaseTypeBlacklist")]
|
||||
public HashSet<string>? RewardBaseTypeBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string>? RewardBaseTypeBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item tplIds to ignore when generating rewards
|
||||
/// </summary>
|
||||
[JsonPropertyName("rewardBlacklist")]
|
||||
public HashSet<string>? RewardBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string>? RewardBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardAmmoStackMinSize")]
|
||||
public int? RewardAmmoStackMinSize
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? RewardAmmoStackMinSize { get; set; }
|
||||
|
||||
[JsonPropertyName("freeChangesAvailable")]
|
||||
public int? FreeChangesAvailable
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? FreeChangesAvailable { get; set; }
|
||||
|
||||
[JsonPropertyName("freeChanges")]
|
||||
public int? FreeChanges
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? FreeChanges { get; set; }
|
||||
|
||||
[JsonPropertyName("keepDailyQuestTypeOnReplacement")]
|
||||
public bool? KeepDailyQuestTypeOnReplacement
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? KeepDailyQuestTypeOnReplacement { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Reputation standing price for replacing a repeatable
|
||||
/// </summary>
|
||||
[JsonPropertyName("standingChangeCost")]
|
||||
public IList<double>? StandingChangeCost
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public IList<double>? StandingChangeCost { get; set; }
|
||||
}
|
||||
|
||||
public record RewardScaling
|
||||
@@ -341,67 +181,31 @@ public record RewardScaling
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("levels")]
|
||||
public List<double>? Levels
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? Levels { get; set; }
|
||||
|
||||
[JsonPropertyName("experience")]
|
||||
public List<double>? Experience
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? Experience { get; set; }
|
||||
|
||||
[JsonPropertyName("roubles")]
|
||||
public List<double>? Roubles
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? Roubles { get; set; }
|
||||
|
||||
[JsonPropertyName("gpCoins")]
|
||||
public List<double>? GpCoins
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? GpCoins { get; set; }
|
||||
|
||||
[JsonPropertyName("items")]
|
||||
public List<double>? Items
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? Items { get; set; }
|
||||
|
||||
[JsonPropertyName("reputation")]
|
||||
public List<double>? Reputation
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? Reputation { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardSpread")]
|
||||
public double? RewardSpread
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? RewardSpread { get; set; }
|
||||
|
||||
[JsonPropertyName("skillRewardChance")]
|
||||
public List<double>? SkillRewardChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? SkillRewardChance { get; set; }
|
||||
|
||||
[JsonPropertyName("skillPointReward")]
|
||||
public List<double>? SkillPointReward
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? SkillPointReward { get; set; }
|
||||
}
|
||||
|
||||
public record TraderWhitelist
|
||||
@@ -410,46 +214,22 @@ public record TraderWhitelist
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string? Name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Name { get; set; }
|
||||
|
||||
[JsonPropertyName("traderId")]
|
||||
public string? TraderId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? TraderId { get; set; }
|
||||
|
||||
[JsonPropertyName("questTypes")]
|
||||
public List<string>? QuestTypes
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? QuestTypes { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardBaseWhitelist")]
|
||||
public List<string>? RewardBaseWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? RewardBaseWhitelist { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardCanBeWeapon")]
|
||||
public bool? RewardCanBeWeapon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? RewardCanBeWeapon { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponRewardChancePercent")]
|
||||
public double? WeaponRewardChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? WeaponRewardChancePercent { get; set; }
|
||||
}
|
||||
|
||||
public record RepeatableQuestTypesConfig
|
||||
@@ -458,56 +238,28 @@ public record RepeatableQuestTypesConfig
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("Exploration")]
|
||||
public Exploration? Exploration
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Exploration? Exploration { get; set; }
|
||||
|
||||
[JsonPropertyName("Completion")]
|
||||
public Completion? Completion
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Completion? Completion { get; set; }
|
||||
|
||||
[JsonPropertyName("Pickup")]
|
||||
public Pickup? Pickup
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Pickup? Pickup { get; set; }
|
||||
|
||||
[JsonPropertyName("Elimination")]
|
||||
public List<EliminationConfig>? Elimination
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<EliminationConfig>? Elimination { get; set; }
|
||||
}
|
||||
|
||||
public record Exploration : BaseQuestConfig
|
||||
{
|
||||
[JsonPropertyName("maxExtracts")]
|
||||
public int? MaximumExtracts
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaximumExtracts { get; set; }
|
||||
|
||||
[JsonPropertyName("maxExtractsWithSpecificExit")]
|
||||
public int? MaximumExtractsWithSpecificExit
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaximumExtractsWithSpecificExit { get; set; }
|
||||
|
||||
[JsonPropertyName("specificExits")]
|
||||
public SpecificExits? SpecificExits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public SpecificExits? SpecificExits { get; set; }
|
||||
}
|
||||
|
||||
public record SpecificExits
|
||||
@@ -516,123 +268,63 @@ public record SpecificExits
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("probability")]
|
||||
public double? Probability
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? Probability { get; set; }
|
||||
|
||||
[JsonPropertyName("passageRequirementWhitelist")]
|
||||
public List<string>? PassageRequirementWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? PassageRequirementWhitelist { get; set; }
|
||||
}
|
||||
|
||||
public record Completion : BaseQuestConfig
|
||||
{
|
||||
[JsonPropertyName("minRequestedAmount")]
|
||||
public int? MinimumRequestedAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MinimumRequestedAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("maxRequestedAmount")]
|
||||
public int? MaximumRequestedAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaximumRequestedAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("uniqueItemCount")]
|
||||
public int? UniqueItemCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? UniqueItemCount { get; set; }
|
||||
|
||||
[JsonPropertyName("minRequestedBulletAmount")]
|
||||
public int? MinimumRequestedBulletAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MinimumRequestedBulletAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("maxRequestedBulletAmount")]
|
||||
public int? MaximumRequestedBulletAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaximumRequestedBulletAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("useWhitelist")]
|
||||
public bool? UseWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? UseWhitelist { get; set; }
|
||||
|
||||
[JsonPropertyName("useBlacklist")]
|
||||
public bool? UseBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? UseBlacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should supplied items be required FiR
|
||||
/// </summary>
|
||||
[JsonPropertyName("requiredItemsAreFiR")]
|
||||
public bool? RequiredItemsAreFiR
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? RequiredItemsAreFiR { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should supplied items be required FiR
|
||||
/// </summary>
|
||||
[JsonPropertyName("requiredItemMinDurabilityMinMax")]
|
||||
public MinMax<double>? RequiredItemMinDurabilityMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double>? RequiredItemMinDurabilityMinMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Blacklisted item types to not collect
|
||||
/// </summary>
|
||||
[JsonPropertyName("requiredItemTypeBlacklist")]
|
||||
public HashSet<string>? RequiredItemTypeBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string>? RequiredItemTypeBlacklist { get; set; }
|
||||
}
|
||||
|
||||
public record Pickup : BaseQuestConfig
|
||||
{
|
||||
[JsonPropertyName("ItemTypeToFetchWithMaxCount")]
|
||||
public List<PickupTypeWithMaxCount>? ItemTypeToFetchWithMaxCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<PickupTypeWithMaxCount>? ItemTypeToFetchWithMaxCount { get; set; }
|
||||
|
||||
public List<string>? ItemTypesToFetch
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? ItemTypesToFetch { get; set; }
|
||||
|
||||
[JsonPropertyName("maxItemFetchCount")]
|
||||
public int? MaxItemFetchCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaxItemFetchCount { get; set; }
|
||||
}
|
||||
|
||||
public record PickupTypeWithMaxCount
|
||||
@@ -641,161 +333,73 @@ public record PickupTypeWithMaxCount
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("itemType")]
|
||||
public string? ItemType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? ItemType { get; set; }
|
||||
|
||||
[JsonPropertyName("maxPickupCount")]
|
||||
public int? MaximumPickupCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaximumPickupCount { get; set; }
|
||||
|
||||
[JsonPropertyName("minPickupCount")]
|
||||
public int? MinimumPickupCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MinimumPickupCount { get; set; }
|
||||
}
|
||||
|
||||
public record EliminationConfig : BaseQuestConfig
|
||||
{
|
||||
[JsonPropertyName("levelRange")]
|
||||
public MinMax<int>? LevelRange
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<int>? LevelRange { get; set; }
|
||||
|
||||
[JsonPropertyName("targets")]
|
||||
public List<ProbabilityObject<string, BossInfo>>? Targets
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<ProbabilityObject<string, BossInfo>>? Targets { get; set; }
|
||||
|
||||
[JsonPropertyName("bodyPartProb")]
|
||||
public double? BodyPartProbability
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? BodyPartProbability { get; set; }
|
||||
|
||||
[JsonPropertyName("bodyParts")]
|
||||
public List<ProbabilityObject<string, List<string>>>? BodyParts
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<ProbabilityObject<string, List<string>>>? BodyParts { get; set; }
|
||||
|
||||
[JsonPropertyName("specificLocationProb")]
|
||||
public double? SpecificLocationProbability
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? SpecificLocationProbability { get; set; }
|
||||
|
||||
[JsonPropertyName("distLocationBlacklist")]
|
||||
public List<string>? DistLocationBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? DistLocationBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("distProb")]
|
||||
public double? DistanceProbability
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? DistanceProbability { get; set; }
|
||||
|
||||
[JsonPropertyName("maxDist")]
|
||||
public double? MaxDistance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? MaxDistance { get; set; }
|
||||
|
||||
[JsonPropertyName("minDist")]
|
||||
public double? MinDistance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? MinDistance { get; set; }
|
||||
|
||||
[JsonPropertyName("maxKills")]
|
||||
public int? MaxKills
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaxKills { get; set; }
|
||||
|
||||
[JsonPropertyName("minKills")]
|
||||
public int? MinKills
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MinKills { get; set; }
|
||||
|
||||
[JsonPropertyName("minBossKills")]
|
||||
public int? MinBossKills
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MinBossKills { get; set; }
|
||||
|
||||
[JsonPropertyName("maxBossKills")]
|
||||
public int? MaxBossKills
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaxBossKills { get; set; }
|
||||
|
||||
[JsonPropertyName("minPmcKills")]
|
||||
public int? MinPmcKills
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MinPmcKills { get; set; }
|
||||
|
||||
[JsonPropertyName("maxPmcKills")]
|
||||
public int? MaxPmcKills
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? MaxPmcKills { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponCategoryRequirementProb")]
|
||||
public double? WeaponCategoryRequirementProbability
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? WeaponCategoryRequirementProbability { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponCategoryRequirements")]
|
||||
public List<ProbabilityObject<string, List<string>>>? WeaponCategoryRequirements
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<ProbabilityObject<string, List<string>>>? WeaponCategoryRequirements { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponRequirementProb")]
|
||||
public double? WeaponRequirementProbability
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? WeaponRequirementProbability { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponRequirements")]
|
||||
public List<ProbabilityObject<string, List<string>>>? WeaponRequirements
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<ProbabilityObject<string, List<string>>>? WeaponRequirements { get; set; }
|
||||
}
|
||||
|
||||
public record BaseQuestConfig
|
||||
@@ -804,11 +408,7 @@ public record BaseQuestConfig
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("possibleSkillRewards")]
|
||||
public List<string>? PossibleSkillRewards
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? PossibleSkillRewards { get; set; }
|
||||
}
|
||||
|
||||
public record BossInfo
|
||||
@@ -817,16 +417,8 @@ public record BossInfo
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("isBoss")]
|
||||
public bool? IsBoss
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? IsBoss { get; set; }
|
||||
|
||||
[JsonPropertyName("isPmc")]
|
||||
public bool? IsPmc
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? IsPmc { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,65 +6,37 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record RagfairConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-ragfair";
|
||||
public override string Kind { get; set; } = "spt-ragfair";
|
||||
|
||||
/// <summary>
|
||||
/// How many seconds should pass before expired offers and processed + player offers checked if sold
|
||||
/// </summary>
|
||||
[JsonPropertyName("runIntervalSeconds")]
|
||||
public int RunIntervalSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int RunIntervalSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Default values used to hydrate `runIntervalSeconds` with
|
||||
/// </summary>
|
||||
[JsonPropertyName("runIntervalValues")]
|
||||
public RunIntervalValues RunIntervalValues
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public RunIntervalValues RunIntervalValues { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Player listing settings
|
||||
/// </summary>
|
||||
[JsonPropertyName("sell")]
|
||||
public Sell Sell
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Sell Sell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Trader ids + should their assorts be listed on flea
|
||||
/// </summary>
|
||||
[JsonPropertyName("traders")]
|
||||
public Dictionary<string, bool> Traders
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, bool> Traders { get; set; }
|
||||
|
||||
[JsonPropertyName("dynamic")]
|
||||
public Dynamic Dynamic
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dynamic Dynamic { get; set; }
|
||||
|
||||
[JsonPropertyName("tieredFlea")]
|
||||
public TieredFlea TieredFlea
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public TieredFlea TieredFlea { get; set; }
|
||||
}
|
||||
|
||||
public record Sell
|
||||
@@ -76,41 +48,25 @@ public record Sell
|
||||
/// Should a fee be deducted from player when listing an item for sale
|
||||
/// </summary>
|
||||
[JsonPropertyName("fees")]
|
||||
public bool Fees
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Fees { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Settings to control chances of offer being sold
|
||||
/// </summary>
|
||||
[JsonPropertyName("chance")]
|
||||
public Chance Chance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Chance Chance { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Settings to control how long it takes for a player offer to sell
|
||||
/// </summary>
|
||||
[JsonPropertyName("time")]
|
||||
public MinMax<double> Time
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> Time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Seconds from clicking remove to remove offer from market
|
||||
/// </summary>
|
||||
[JsonPropertyName("expireSeconds")]
|
||||
public int ExpireSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ExpireSeconds { get; set; }
|
||||
}
|
||||
|
||||
public record Chance
|
||||
@@ -122,41 +78,25 @@ public record Chance
|
||||
/// Base chance percent to sell an item
|
||||
/// </summary>
|
||||
[JsonPropertyName("base")]
|
||||
public int Base
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int Base { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Value to multiply the sell chance by
|
||||
/// </summary>
|
||||
[JsonPropertyName("sellMultiplier")]
|
||||
public double SellMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double SellMultiplier { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Max possible sell chance % for a player listed offer
|
||||
/// </summary>
|
||||
[JsonPropertyName("maxSellChancePercent")]
|
||||
public int MaxSellChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxSellChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min possible sell chance % for a player listed offer
|
||||
/// </summary>
|
||||
[JsonPropertyName("minSellChancePercent")]
|
||||
public int MinSellChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinSellChancePercent { get; set; }
|
||||
}
|
||||
|
||||
public record Dynamic
|
||||
@@ -168,232 +108,136 @@ public record Dynamic
|
||||
/// Should a purchased dynamic offers items be flagged as found in raid
|
||||
/// </summary>
|
||||
[JsonPropertyName("purchasesAreFoundInRaid")]
|
||||
public bool PurchasesAreFoundInRaid
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool PurchasesAreFoundInRaid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Use the highest trader price for an offer if its greater than the price in templates/prices.json
|
||||
/// </summary>
|
||||
[JsonPropertyName("useTraderPriceForOffersIfHigher")]
|
||||
public bool UseTraderPriceForOffersIfHigher
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool UseTraderPriceForOffersIfHigher { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Barter offer specific settings
|
||||
/// </summary>
|
||||
[JsonPropertyName("barter")]
|
||||
public BarterDetails Barter
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public BarterDetails Barter { get; set; }
|
||||
|
||||
[JsonPropertyName("pack")]
|
||||
public PackDetails Pack
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public PackDetails Pack { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dynamic offer price below handbook adjustment values
|
||||
/// </summary>
|
||||
[JsonPropertyName("offerAdjustment")]
|
||||
public OfferAdjustment OfferAdjustment
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public OfferAdjustment OfferAdjustment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How many offers should expire before an offer regeneration occurs
|
||||
/// </summary>
|
||||
[JsonPropertyName("expiredOfferThreshold")]
|
||||
public int ExpiredOfferThreshold
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ExpiredOfferThreshold { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How many offers should be listed
|
||||
/// </summary>
|
||||
[JsonPropertyName("offerItemCount")]
|
||||
public Dictionary<string, MinMax<int>> OfferItemCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, MinMax<int>> OfferItemCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How much should the price of an offer vary by (percent 0.8 = 80%, 1.2 = 120%)
|
||||
/// </summary>
|
||||
[JsonPropertyName("priceRanges")]
|
||||
public PriceRanges PriceRanges
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public PriceRanges PriceRanges { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should default presets to listed only or should non-standard presets found in globals.json be listed too
|
||||
/// </summary>
|
||||
[JsonPropertyName("showDefaultPresetsOnly")]
|
||||
public bool ShowDefaultPresetsOnly
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool ShowDefaultPresetsOnly { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Tpls that should not use the variable price system when their quality is less than 100% (lower dura/uses = lower price)
|
||||
/// </summary>
|
||||
[JsonPropertyName("ignoreQualityPriceVarianceBlacklist")]
|
||||
public HashSet<string> IgnoreQualityPriceVarianceBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string> IgnoreQualityPriceVarianceBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("endTimeSeconds")]
|
||||
public MinMax<int> EndTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<int> EndTimeSeconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Settings to control the durability range of item items listed on flea
|
||||
/// </summary>
|
||||
[JsonPropertyName("condition")]
|
||||
public Dictionary<string, Condition> Condition
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, Condition> Condition { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Size stackable items should be listed for in percent of max stack size
|
||||
/// </summary>
|
||||
[JsonPropertyName("stackablePercent")]
|
||||
public MinMax<double> StackablePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> StackablePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Items that cannot be stacked can have multiples sold in one offer, what range of values can be listed
|
||||
/// </summary>
|
||||
[JsonPropertyName("nonStackableCount")]
|
||||
public MinMax<int> NonStackableCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<int> NonStackableCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Range of rating offers for items being listed
|
||||
/// </summary>
|
||||
[JsonPropertyName("rating")]
|
||||
public MinMax<double> Rating
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> Rating { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Armor specific flea settings
|
||||
/// </summary>
|
||||
[JsonPropertyName("armor")]
|
||||
public ArmorSettings Armor
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public ArmorSettings Armor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A multipler to apply to individual tpls price just prior to item quality adjustment
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemPriceMultiplier")]
|
||||
public Dictionary<string, double>? ItemPriceMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, double>? ItemPriceMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("_currencies")]
|
||||
public string? CurrenciesDescription
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? CurrenciesDescription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Percentages to sell offers in each currency
|
||||
/// </summary>
|
||||
[JsonPropertyName("currencies")]
|
||||
public Dictionary<string, double> Currencies
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, double> Currencies { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item tpls that should be forced to sell as a single item
|
||||
/// </summary>
|
||||
[JsonPropertyName("showAsSingleStack")]
|
||||
public HashSet<string> ShowAsSingleStack
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string> ShowAsSingleStack { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should christmas/halloween items be removed from flea when not within the seasonal bounds
|
||||
/// </summary>
|
||||
[JsonPropertyName("removeSeasonalItemsWhenNotInEvent")]
|
||||
public bool RemoveSeasonalItemsWhenNotInEvent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool RemoveSeasonalItemsWhenNotInEvent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Flea blacklist settings
|
||||
/// </summary>
|
||||
[JsonPropertyName("blacklist")]
|
||||
public RagfairBlacklist Blacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public RagfairBlacklist Blacklist { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Dict of price limits keyed by item type
|
||||
/// </summary>
|
||||
[JsonPropertyName("unreasonableModPrices")]
|
||||
public Dictionary<string, UnreasonableModPrices> UnreasonableModPrices
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, UnreasonableModPrices> UnreasonableModPrices { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Custom rouble prices for items to override values from prices.json
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemPriceOverrideRouble")]
|
||||
public Dictionary<string, double> ItemPriceOverrideRouble
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, double> ItemPriceOverrideRouble { get; set; }
|
||||
}
|
||||
|
||||
public record PriceRanges
|
||||
@@ -402,25 +246,13 @@ public record PriceRanges
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("default")]
|
||||
public MinMax<double> Default
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> Default { get; set; }
|
||||
|
||||
[JsonPropertyName("preset")]
|
||||
public MinMax<double> Preset
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> Preset { get; set; }
|
||||
|
||||
[JsonPropertyName("pack")]
|
||||
public MinMax<double> Pack
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> Pack { get; set; }
|
||||
}
|
||||
|
||||
public record BarterDetails
|
||||
@@ -432,71 +264,43 @@ public record BarterDetails
|
||||
/// Percentage change an offer is listed as a barter
|
||||
/// </summary>
|
||||
[JsonPropertyName("chancePercent")]
|
||||
public double ChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min number of required items for a barter requirement
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemCountMin")]
|
||||
public int ItemCountMin
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ItemCountMin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Max number of required items for a barter requirement
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemCountMax")]
|
||||
public int ItemCountMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ItemCountMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How much can the total price of requested items vary from the item offered
|
||||
/// </summary>
|
||||
[JsonPropertyName("priceRangeVariancePercent")]
|
||||
public double PriceRangeVariancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PriceRangeVariancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min rouble price for an offer to be considered for turning into a barter
|
||||
/// </summary>
|
||||
[JsonPropertyName("minRoubleCostToBecomeBarter")]
|
||||
public double MinRoubleCostToBecomeBarter
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double MinRoubleCostToBecomeBarter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should barter offers only single stack
|
||||
/// </summary>
|
||||
[JsonPropertyName("makeSingleStackOnly")]
|
||||
public bool MakeSingleStackOnly
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool MakeSingleStackOnly { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item Tpls to never be turned into a barter
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemTypeBlacklist")]
|
||||
public HashSet<string> ItemTypeBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string> ItemTypeBlacklist { get; set; }
|
||||
}
|
||||
|
||||
public record PackDetails
|
||||
@@ -508,41 +312,25 @@ public record PackDetails
|
||||
/// Percentage change an offer is listed as a pack
|
||||
/// </summary>
|
||||
[JsonPropertyName("chancePercent")]
|
||||
public double ChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min number of required items for a pack
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemCountMin")]
|
||||
public int ItemCountMin
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ItemCountMin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Max number of required items for a pack
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemCountMax")]
|
||||
public int ItemCountMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int ItemCountMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// item types to allow being a pack
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemTypeWhitelist")]
|
||||
public HashSet<string> ItemTypeWhitelist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string> ItemTypeWhitelist { get; set; }
|
||||
}
|
||||
|
||||
public record OfferAdjustment
|
||||
@@ -554,41 +342,25 @@ public record OfferAdjustment
|
||||
/// Shuld offer price be adjusted when below handbook price
|
||||
/// </summary>
|
||||
[JsonPropertyName("adjustPriceWhenBelowHandbookPrice")]
|
||||
public bool AdjustPriceWhenBelowHandbookPrice
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AdjustPriceWhenBelowHandbookPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How big a percentage difference does price need to vary from handbook to be considered for adjustment
|
||||
/// </summary>
|
||||
[JsonPropertyName("maxPriceDifferenceBelowHandbookPercent")]
|
||||
public double MaxPriceDifferenceBelowHandbookPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double MaxPriceDifferenceBelowHandbookPercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How much to multiply the handbook price to get the new price
|
||||
/// </summary>
|
||||
[JsonPropertyName("handbookPriceMultipier")]
|
||||
public double HandbookPriceMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double HandbookPriceMultiplier { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What is the minimum rouble price to consider adjusting price of item
|
||||
/// </summary>
|
||||
[JsonPropertyName("priceThreshholdRub")]
|
||||
public double PriceThresholdRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PriceThresholdRub { get; set; }
|
||||
}
|
||||
|
||||
public record Condition
|
||||
@@ -600,32 +372,16 @@ public record Condition
|
||||
/// Percentage change durability is altered
|
||||
/// </summary>
|
||||
[JsonPropertyName("conditionChance")]
|
||||
public double ConditionChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ConditionChance { get; set; }
|
||||
|
||||
[JsonPropertyName("current")]
|
||||
public MinMax<double> Current
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> Current { get; set; }
|
||||
|
||||
[JsonPropertyName("max")]
|
||||
public MinMax<double> Max
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double> Max { get; set; }
|
||||
|
||||
[JsonPropertyName("_name")]
|
||||
public string Name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public record RagfairBlacklist
|
||||
@@ -637,81 +393,49 @@ public record RagfairBlacklist
|
||||
/// Damaged ammo packs
|
||||
/// </summary>
|
||||
[JsonPropertyName("damagedAmmoPacks")]
|
||||
public bool DamagedAmmoPacks
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool DamagedAmmoPacks { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Custom blacklist for item Tpls
|
||||
/// </summary>
|
||||
[JsonPropertyName("custom")]
|
||||
public HashSet<string> Custom
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string> Custom { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// BSG blacklist a large number of items from flea, true = use blacklist
|
||||
/// </summary>
|
||||
[JsonPropertyName("enableBsgList")]
|
||||
public bool EnableBsgList
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool EnableBsgList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should quest items be blacklisted from flea
|
||||
/// </summary>
|
||||
[JsonPropertyName("enableQuestList")]
|
||||
public bool EnableQuestList
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool EnableQuestList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should trader items that are blacklisted by bsg be listed on flea
|
||||
/// </summary>
|
||||
[JsonPropertyName("traderItems")]
|
||||
public bool TraderItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool TraderItems { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Maximum level an armor plate can be found in a flea-listed armor item
|
||||
/// </summary>
|
||||
[JsonPropertyName("armorPlate")]
|
||||
public ArmorPlateBlacklistSettings ArmorPlate
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public ArmorPlateBlacklistSettings ArmorPlate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should specific categories be blacklisted from the flea, true = use blacklist
|
||||
/// </summary>
|
||||
[JsonPropertyName("enableCustomItemCategoryList")]
|
||||
public bool EnableCustomItemCategoryList
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool EnableCustomItemCategoryList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Custom category blacklist for parent Ids
|
||||
/// </summary>
|
||||
[JsonPropertyName("customItemCategoryList")]
|
||||
public HashSet<string> CustomItemCategoryList
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string> CustomItemCategoryList { get; set; }
|
||||
}
|
||||
|
||||
public record ArmorPlateBlacklistSettings
|
||||
@@ -723,21 +447,13 @@ public record ArmorPlateBlacklistSettings
|
||||
/// Max level of plates an armor can have without being removed
|
||||
/// </summary>
|
||||
[JsonPropertyName("maxProtectionLevel")]
|
||||
public int MaxProtectionLevel
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MaxProtectionLevel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Item slots to NOT remove from items on flea
|
||||
/// </summary>
|
||||
[JsonPropertyName("ignoreSlots")]
|
||||
public HashSet<string> IgnoreSlots
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string> IgnoreSlots { get; set; }
|
||||
}
|
||||
|
||||
public record UnreasonableModPrices
|
||||
@@ -749,38 +465,22 @@ public record UnreasonableModPrices
|
||||
/// Enable a system that adjusts very high ragfair prices to be below a max multiple of items the handbook values
|
||||
/// </summary>
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Multipler to start adjusting item values from, e.g. a value of 10 means any value over 10x the handbook price gets adjusted
|
||||
/// </summary>
|
||||
[JsonPropertyName("handbookPriceOverMultiplier")]
|
||||
public int HandbookPriceOverMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int HandbookPriceOverMultiplier { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The new multiplier for items found using above property, e.g. a value of 4 means set items price to 4x handbook price
|
||||
/// </summary>
|
||||
[JsonPropertyName("newPriceHandbookMultiplier")]
|
||||
public int NewPriceHandbookMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int NewPriceHandbookMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("itemType")]
|
||||
public string ItemType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string ItemType { get; set; }
|
||||
}
|
||||
|
||||
public record ArmorSettings
|
||||
@@ -792,21 +492,13 @@ public record ArmorSettings
|
||||
/// % chance / 100 that armor plates will be removed from an offer before listing
|
||||
/// </summary>
|
||||
[JsonPropertyName("removeRemovablePlateChance")]
|
||||
public int RemoveRemovablePlateChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int RemoveRemovablePlateChance { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What slots are to be removed when removeRemovablePlateChance is true
|
||||
/// </summary>
|
||||
[JsonPropertyName("plateSlotIdToRemovePool")]
|
||||
public HashSet<string>? PlateSlotIdToRemovePool
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public HashSet<string>? PlateSlotIdToRemovePool { get; set; }
|
||||
}
|
||||
|
||||
public record TieredFlea
|
||||
@@ -815,43 +507,23 @@ public record TieredFlea
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// key: tpl, value: playerlevel
|
||||
/// </summary>
|
||||
[JsonPropertyName("unlocksTpl")]
|
||||
public Dictionary<string, int> UnlocksTpl
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, int> UnlocksTpl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// key: item type id, value: playerlevel
|
||||
/// </summary>
|
||||
[JsonPropertyName("unlocksType")]
|
||||
public Dictionary<string, int> UnlocksType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, int> UnlocksType { get; set; }
|
||||
|
||||
[JsonPropertyName("ammoTplUnlocks")]
|
||||
public Dictionary<string, int>? AmmoTplUnlocks
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, int>? AmmoTplUnlocks { get; set; }
|
||||
|
||||
[JsonPropertyName("ammoTiersEnabled")]
|
||||
public bool AmmoTiersEnabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AmmoTiersEnabled { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,73 +6,37 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record RepairConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-repair";
|
||||
public override string Kind { get; set; } = "spt-repair";
|
||||
|
||||
[JsonPropertyName("priceMultiplier")]
|
||||
public double PriceMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PriceMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("applyRandomizeDurabilityLoss")]
|
||||
public bool ApplyRandomizeDurabilityLoss
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool ApplyRandomizeDurabilityLoss { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponSkillRepairGain")]
|
||||
public double WeaponSkillRepairGain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double WeaponSkillRepairGain { get; set; }
|
||||
|
||||
[JsonPropertyName("armorKitSkillPointGainPerRepairPointMultiplier")]
|
||||
public double ArmorKitSkillPointGainPerRepairPointMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ArmorKitSkillPointGainPerRepairPointMultiplier { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// INT gain multiplier per repaired item type
|
||||
/// </summary>
|
||||
[JsonPropertyName("repairKitIntellectGainMultiplier")]
|
||||
public required IntellectGainValues RepairKitIntellectGainMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required IntellectGainValues RepairKitIntellectGainMultiplier { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How much INT can be given to player per repair action
|
||||
/// </summary>
|
||||
[JsonPropertyName("maxIntellectGainPerRepair")]
|
||||
public required MaxIntellectGainValues MaxIntellectGainPerRepair
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MaxIntellectGainValues MaxIntellectGainPerRepair { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponTreatment")]
|
||||
public required WeaponTreatmentRepairValues WeaponTreatment
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required WeaponTreatmentRepairValues WeaponTreatment { get; set; }
|
||||
|
||||
[JsonPropertyName("repairKit")]
|
||||
public required RepairKit RepairKit
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required RepairKit RepairKit { get; set; }
|
||||
}
|
||||
|
||||
public record IntellectGainValues
|
||||
@@ -81,18 +45,10 @@ public record IntellectGainValues
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("weapon")]
|
||||
public double Weapon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Weapon { get; set; }
|
||||
|
||||
[JsonPropertyName("armor")]
|
||||
public double Armor
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Armor { get; set; }
|
||||
}
|
||||
|
||||
public record MaxIntellectGainValues
|
||||
@@ -101,18 +57,10 @@ public record MaxIntellectGainValues
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("kit")]
|
||||
public double Kit
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Kit { get; set; }
|
||||
|
||||
[JsonPropertyName("trader")]
|
||||
public double Trader
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double Trader { get; set; }
|
||||
}
|
||||
|
||||
public record WeaponTreatmentRepairValues
|
||||
@@ -124,45 +72,25 @@ public record WeaponTreatmentRepairValues
|
||||
/// The chance to gain more weapon maintenance skill
|
||||
/// </summary>
|
||||
[JsonPropertyName("critSuccessChance")]
|
||||
public double CritSuccessChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double CritSuccessChance { get; set; }
|
||||
|
||||
[JsonPropertyName("critSuccessAmount")]
|
||||
public double CritSuccessAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double CritSuccessAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The chance to gain less weapon maintenance skill
|
||||
/// </summary>
|
||||
[JsonPropertyName("critFailureChance")]
|
||||
public double CritFailureChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double CritFailureChance { get; set; }
|
||||
|
||||
[JsonPropertyName("critFailureAmount")]
|
||||
public double CritFailureAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double CritFailureAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The multiplier used for calculating weapon maintenance XP
|
||||
/// </summary>
|
||||
[JsonPropertyName("pointGainMultiplier")]
|
||||
public double PointGainMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PointGainMultiplier { get; set; }
|
||||
}
|
||||
|
||||
public record RepairKit
|
||||
@@ -171,32 +99,16 @@ public record RepairKit
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("armor")]
|
||||
public required BonusSettings Armor
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required BonusSettings Armor { get; set; }
|
||||
|
||||
[JsonPropertyName("weapon")]
|
||||
public required BonusSettings Weapon
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required BonusSettings Weapon { get; set; }
|
||||
|
||||
[JsonPropertyName("vest")]
|
||||
public required BonusSettings Vest
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required BonusSettings Vest { get; set; }
|
||||
|
||||
[JsonPropertyName("headwear")]
|
||||
public required BonusSettings Headwear
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required BonusSettings Headwear { get; set; }
|
||||
}
|
||||
|
||||
public record BonusSettings
|
||||
@@ -205,32 +117,16 @@ public record BonusSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("rarityWeight")]
|
||||
public required Dictionary<string, double> RarityWeight
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> RarityWeight { get; set; }
|
||||
|
||||
[JsonPropertyName("bonusTypeWeight")]
|
||||
public required Dictionary<string, double> BonusTypeWeight
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> BonusTypeWeight { get; set; }
|
||||
|
||||
[JsonPropertyName("Common")]
|
||||
public required Dictionary<string, BonusValues> Common
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, BonusValues> Common { get; set; }
|
||||
|
||||
[JsonPropertyName("Rare")]
|
||||
public required Dictionary<string, BonusValues> Rare
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, BonusValues> Rare { get; set; }
|
||||
}
|
||||
|
||||
public record BonusValues
|
||||
@@ -239,19 +135,11 @@ public record BonusValues
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("valuesMinMax")]
|
||||
public required MinMax<double> ValuesMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<double> ValuesMinMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// What dura is buff active between (min max of current max)
|
||||
/// </summary>
|
||||
[JsonPropertyName("activeDurabilityPercentMinMax")]
|
||||
public required MinMax<int> ActiveDurabilityPercentMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> ActiveDurabilityPercentMinMax { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,67 +6,31 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record ScavCaseConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-scavcase";
|
||||
public override string Kind { get; set; } = "spt-scavcase";
|
||||
|
||||
[JsonPropertyName("rewardItemValueRangeRub")]
|
||||
public required Dictionary<string, MinMax<double>> RewardItemValueRangeRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<double>> RewardItemValueRangeRub { get; set; }
|
||||
|
||||
[JsonPropertyName("moneyRewards")]
|
||||
public required MoneyRewards MoneyRewards
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MoneyRewards MoneyRewards { get; set; }
|
||||
|
||||
[JsonPropertyName("ammoRewards")]
|
||||
public required AmmoRewards AmmoRewards
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required AmmoRewards AmmoRewards { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardItemParentBlacklist")]
|
||||
public required HashSet<string> RewardItemParentBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> RewardItemParentBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("rewardItemBlacklist")]
|
||||
public required HashSet<string> RewardItemBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> RewardItemBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("allowMultipleMoneyRewardsPerRarity")]
|
||||
public bool AllowMultipleMoneyRewardsPerRarity
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AllowMultipleMoneyRewardsPerRarity { get; set; }
|
||||
|
||||
[JsonPropertyName("allowMultipleAmmoRewardsPerRarity")]
|
||||
public bool AllowMultipleAmmoRewardsPerRarity
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AllowMultipleAmmoRewardsPerRarity { get; set; }
|
||||
|
||||
[JsonPropertyName("allowBossItemsAsRewards")]
|
||||
public bool AllowBossItemsAsRewards
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool AllowBossItemsAsRewards { get; set; }
|
||||
}
|
||||
|
||||
public record MoneyRewards
|
||||
@@ -75,39 +39,19 @@ public record MoneyRewards
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("moneyRewardChancePercent")]
|
||||
public int MoneyRewardChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MoneyRewardChancePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("rubCount")]
|
||||
public required MoneyLevels RubCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MoneyLevels RubCount { get; set; }
|
||||
|
||||
[JsonPropertyName("usdCount")]
|
||||
public required MoneyLevels UsdCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MoneyLevels UsdCount { get; set; }
|
||||
|
||||
[JsonPropertyName("eurCount")]
|
||||
public required MoneyLevels EurCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MoneyLevels EurCount { get; set; }
|
||||
|
||||
[JsonPropertyName("gpCount")]
|
||||
public required MoneyLevels GpCount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MoneyLevels GpCount { get; set; }
|
||||
}
|
||||
|
||||
public record MoneyLevels
|
||||
@@ -116,25 +60,13 @@ public record MoneyLevels
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("common")]
|
||||
public required MinMax<int> Common
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> Common { get; set; }
|
||||
|
||||
[JsonPropertyName("rare")]
|
||||
public required MinMax<int> Rare
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> Rare { get; set; }
|
||||
|
||||
[JsonPropertyName("superrare")]
|
||||
public required MinMax<int> SuperRare
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> SuperRare { get; set; }
|
||||
}
|
||||
|
||||
public record AmmoRewards
|
||||
@@ -143,30 +75,14 @@ public record AmmoRewards
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("ammoRewardChancePercent")]
|
||||
public int AmmoRewardChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int AmmoRewardChancePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("ammoRewardBlacklist")]
|
||||
public required Dictionary<string, List<string>> AmmoRewardBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, List<string>> AmmoRewardBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("ammoRewardValueRangeRub")]
|
||||
public required Dictionary<string, MinMax<double>> AmmoRewardValueRangeRub
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<double>> AmmoRewardValueRangeRub { get; set; }
|
||||
|
||||
[JsonPropertyName("minStackSize")]
|
||||
public int MinStackSize
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int MinStackSize { get; set; }
|
||||
}
|
||||
|
||||
@@ -8,103 +8,70 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record SeasonalEventConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-seasonalevents";
|
||||
public override string Kind { get; set; } = "spt-seasonalevents";
|
||||
|
||||
[JsonPropertyName("enableSeasonalEventDetection")]
|
||||
public bool EnableSeasonalEventDetection
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool EnableSeasonalEventDetection { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// event / botType / equipSlot / itemid
|
||||
/// </summary>
|
||||
[JsonPropertyName("eventGear")]
|
||||
public required Dictionary<SeasonalEventType, Dictionary<string, Dictionary<string, Dictionary<string, int>>>> EventGear
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<
|
||||
SeasonalEventType,
|
||||
Dictionary<string, Dictionary<string, Dictionary<string, int>>>
|
||||
> EventGear { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// event / bot type / equipSlot / itemid
|
||||
/// </summary>
|
||||
[JsonPropertyName("eventLoot")]
|
||||
public required Dictionary<SeasonalEventType, Dictionary<string, Dictionary<string, Dictionary<string, int>>>> EventLoot
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<
|
||||
SeasonalEventType,
|
||||
Dictionary<string, Dictionary<string, Dictionary<string, int>>>
|
||||
> EventLoot { get; set; }
|
||||
|
||||
[JsonPropertyName("events")]
|
||||
public required List<SeasonalEvent> Events
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<SeasonalEvent> Events { get; set; }
|
||||
|
||||
[JsonPropertyName("eventBotMapping")]
|
||||
public required Dictionary<string, string> EventBotMapping
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, string> EventBotMapping { get; set; }
|
||||
|
||||
[JsonPropertyName("eventBossSpawns")]
|
||||
public required Dictionary<string, Dictionary<string, List<BossLocationSpawn>>> EventBossSpawns
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<
|
||||
string,
|
||||
Dictionary<string, List<BossLocationSpawn>>
|
||||
> EventBossSpawns { get; set; }
|
||||
|
||||
[JsonPropertyName("eventWaves")]
|
||||
public required Dictionary<string, Dictionary<string, List<Wave>>> EventWaves
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, Dictionary<string, List<Wave>>> EventWaves { get; set; }
|
||||
|
||||
[JsonPropertyName("gifterSettings")]
|
||||
public required List<GifterSetting> GifterSettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<GifterSetting> GifterSettings { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// key = event, second key = map name
|
||||
/// </summary>
|
||||
[JsonPropertyName("hostilitySettingsForEvent")]
|
||||
public required Dictionary<string, Dictionary<string, List<AdditionalHostilitySettings>>> HostilitySettingsForEvent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<
|
||||
string,
|
||||
Dictionary<string, List<AdditionalHostilitySettings>>
|
||||
> HostilitySettingsForEvent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ids of containers on locations that only have Christmas loot
|
||||
/// </summary>
|
||||
[JsonPropertyName("christmasContainerIds")]
|
||||
public required List<string> ChristmasContainerIds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> ChristmasContainerIds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Season - botType - location (body/feet/hands/head)
|
||||
/// </summary>
|
||||
[JsonPropertyName("botAppearanceChanges")]
|
||||
public required Dictionary<SeasonalEventType, Dictionary<string, Dictionary<string, Dictionary<string, int>>>> BotAppearanceChanges
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<
|
||||
SeasonalEventType,
|
||||
Dictionary<string, Dictionary<string, Dictionary<string, int>>>
|
||||
> BotAppearanceChanges { get; set; }
|
||||
}
|
||||
|
||||
public record SeasonalEvent
|
||||
@@ -113,72 +80,37 @@ public record SeasonalEvent
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = string.Empty;
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public SeasonalEventType Type
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public SeasonalEventType Type { get; set; }
|
||||
|
||||
[JsonPropertyName("startDay")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int StartDay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int StartDay { get; set; }
|
||||
|
||||
[JsonPropertyName("startMonth")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int StartMonth
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int StartMonth { get; set; }
|
||||
|
||||
[JsonPropertyName("endDay")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int EndDay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int EndDay { get; set; }
|
||||
|
||||
[JsonPropertyName("endMonth")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int EndMonth
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int EndMonth { get; set; }
|
||||
|
||||
[JsonPropertyName("settings")]
|
||||
public SeasonalEventSettings? Settings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public SeasonalEventSettings? Settings { get; set; }
|
||||
|
||||
[JsonPropertyName("setting")]
|
||||
public SeasonalEventSettings? SettingsDoNOTUse
|
||||
{
|
||||
set
|
||||
{
|
||||
Settings = value;
|
||||
}
|
||||
set { Settings = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,95 +120,43 @@ public record SeasonalEventSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("enableSummoning")]
|
||||
public bool? EnableSummoning
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? EnableSummoning { get; set; }
|
||||
|
||||
[JsonPropertyName("enableHalloweenHideout")]
|
||||
public bool? EnableHalloweenHideout
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? EnableHalloweenHideout { get; set; }
|
||||
|
||||
[JsonPropertyName("enableChristmasHideout")]
|
||||
public bool? EnableChristmasHideout
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? EnableChristmasHideout { get; set; }
|
||||
|
||||
[JsonPropertyName("enableSanta")]
|
||||
public bool? EnableSanta
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? EnableSanta { get; set; }
|
||||
|
||||
[JsonPropertyName("adjustBotAppearances")]
|
||||
public bool? AdjustBotAppearances
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? AdjustBotAppearances { get; set; }
|
||||
|
||||
[JsonPropertyName("addEventGearToBots")]
|
||||
public bool? AddEventGearToBots
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? AddEventGearToBots { get; set; }
|
||||
|
||||
[JsonPropertyName("addEventLootToBots")]
|
||||
public bool? AddEventLootToBots
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? AddEventLootToBots { get; set; }
|
||||
|
||||
[JsonPropertyName("removeEntryRequirement")]
|
||||
public List<string>? RemoveEntryRequirement
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? RemoveEntryRequirement { get; set; }
|
||||
|
||||
[JsonPropertyName("replaceBotHostility")]
|
||||
public bool? ReplaceBotHostility
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? ReplaceBotHostility { get; set; }
|
||||
|
||||
[JsonPropertyName("forceSeason")]
|
||||
public Season? ForceSeason
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Season? ForceSeason { get; set; }
|
||||
|
||||
[JsonPropertyName("zombieSettings")]
|
||||
public ZombieSettings? ZombieSettings
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public ZombieSettings? ZombieSettings { get; set; }
|
||||
|
||||
[JsonPropertyName("disableBosses")]
|
||||
public List<string>? DisableBosses
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? DisableBosses { get; set; }
|
||||
|
||||
[JsonPropertyName("disableWaves")]
|
||||
public List<string>? DisableWaves
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? DisableWaves { get; set; }
|
||||
}
|
||||
|
||||
public record ZombieSettings
|
||||
@@ -285,32 +165,16 @@ public record ZombieSettings
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool? Enabled
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool? Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("mapInfectionAmount")]
|
||||
public Dictionary<string, double>? MapInfectionAmount
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, double>? MapInfectionAmount { get; set; }
|
||||
|
||||
[JsonPropertyName("disableBosses")]
|
||||
public List<string>? DisableBosses
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? DisableBosses { get; set; }
|
||||
|
||||
[JsonPropertyName("disableWaves")]
|
||||
public List<string>? DisableWaves
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<string>? DisableWaves { get; set; }
|
||||
}
|
||||
|
||||
public record GifterSetting
|
||||
@@ -319,23 +183,11 @@ public record GifterSetting
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("map")]
|
||||
public string? Map
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Map { get; set; }
|
||||
|
||||
[JsonPropertyName("zones")]
|
||||
public string? Zones
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Zones { get; set; }
|
||||
|
||||
[JsonPropertyName("spawnChance")]
|
||||
public int? SpawnChance
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? SpawnChance { get; set; }
|
||||
}
|
||||
|
||||
@@ -7,63 +7,31 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record TraderConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-trader";
|
||||
public override string Kind { get; set; } = "spt-trader";
|
||||
|
||||
[JsonPropertyName("updateTime")]
|
||||
public List<UpdateTime> UpdateTime
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public List<UpdateTime> UpdateTime { get; set; } = [];
|
||||
|
||||
[JsonPropertyName("updateTimeDefault")]
|
||||
public int UpdateTimeDefault
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int UpdateTimeDefault { get; set; }
|
||||
|
||||
[JsonPropertyName("purchasesAreFoundInRaid")]
|
||||
public bool PurchasesAreFoundInRaid
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool PurchasesAreFoundInRaid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Should trader reset times be set based on server start time (false = bsg time - on the hour)
|
||||
/// </summary>
|
||||
[JsonPropertyName("tradersResetFromServerStart")]
|
||||
public bool TradersResetFromServerStart
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool TradersResetFromServerStart { get; set; }
|
||||
|
||||
[JsonPropertyName("traderPriceMultipler")]
|
||||
public double TraderPriceMultiplier
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double TraderPriceMultiplier { get; set; }
|
||||
|
||||
[JsonPropertyName("fence")]
|
||||
public required FenceConfig Fence
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required FenceConfig Fence { get; set; }
|
||||
|
||||
[JsonPropertyName("moddedTraders")]
|
||||
public required ModdedTraders ModdedTraders
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ModdedTraders ModdedTraders { get; set; }
|
||||
}
|
||||
|
||||
public record UpdateTime
|
||||
@@ -72,28 +40,16 @@ public record UpdateTime
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("_name")]
|
||||
public string Name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = string.Empty;
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("traderId")]
|
||||
public string TraderId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = string.Empty;
|
||||
public string TraderId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Seconds between trader resets
|
||||
/// </summary>
|
||||
[JsonPropertyName("seconds")]
|
||||
public required MinMax<int> Seconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> Seconds { get; set; }
|
||||
}
|
||||
|
||||
public record FenceConfig
|
||||
@@ -102,199 +58,103 @@ public record FenceConfig
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("discountOptions")]
|
||||
public required DiscountOptions DiscountOptions
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required DiscountOptions DiscountOptions { get; set; }
|
||||
|
||||
[JsonPropertyName("partialRefreshTimeSeconds")]
|
||||
public int PartialRefreshTimeSeconds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int PartialRefreshTimeSeconds { get; set; }
|
||||
|
||||
[JsonPropertyName("partialRefreshChangePercent")]
|
||||
public double PartialRefreshChangePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PartialRefreshChangePercent { get; set; }
|
||||
|
||||
[JsonPropertyName("assortSize")]
|
||||
public int AssortSize
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int AssortSize { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponPresetMinMax")]
|
||||
public required MinMax<int> WeaponPresetMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> WeaponPresetMinMax { get; set; }
|
||||
|
||||
[JsonPropertyName("equipmentPresetMinMax")]
|
||||
public required MinMax<int> EquipmentPresetMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> EquipmentPresetMinMax { get; set; }
|
||||
|
||||
[JsonPropertyName("itemPriceMult")]
|
||||
public double ItemPriceMult
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ItemPriceMult { get; set; }
|
||||
|
||||
[JsonPropertyName("presetPriceMult")]
|
||||
public double PresetPriceMult
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PresetPriceMult { get; set; }
|
||||
|
||||
[JsonPropertyName("armorMaxDurabilityPercentMinMax")]
|
||||
public required ItemDurabilityCurrentMax ArmorMaxDurabilityPercentMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ItemDurabilityCurrentMax ArmorMaxDurabilityPercentMinMax { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponDurabilityPercentMinMax")]
|
||||
public required ItemDurabilityCurrentMax WeaponDurabilityPercentMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required ItemDurabilityCurrentMax WeaponDurabilityPercentMinMax { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Keyed to plate protection level
|
||||
/// </summary>
|
||||
[JsonPropertyName("chancePlateExistsInArmorPercent")]
|
||||
public required Dictionary<string, double> ChancePlateExistsInArmorPercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double> ChancePlateExistsInArmorPercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Key: item tpl
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemStackSizeOverrideMinMax")]
|
||||
public required Dictionary<string, MinMax<int>?> ItemStackSizeOverrideMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, MinMax<int>?> ItemStackSizeOverrideMinMax { get; set; }
|
||||
|
||||
[JsonPropertyName("itemTypeLimits")]
|
||||
public required Dictionary<string, int> ItemTypeLimits
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, int> ItemTypeLimits { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Prevent duplicate offers of items of specific categories by parentId
|
||||
/// </summary>
|
||||
[JsonPropertyName("preventDuplicateOffersOfCategory")]
|
||||
public required List<string> PreventDuplicateOffersOfCategory
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> PreventDuplicateOffersOfCategory { get; set; }
|
||||
|
||||
[JsonPropertyName("regenerateAssortsOnRefresh")]
|
||||
public bool RegenerateAssortsOnRefresh
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool RegenerateAssortsOnRefresh { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Max rouble price before item is not listed on flea
|
||||
/// </summary>
|
||||
[JsonPropertyName("itemCategoryRoublePriceLimit")]
|
||||
public required Dictionary<string, double?> ItemCategoryRoublePriceLimit
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double?> ItemCategoryRoublePriceLimit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Each slotid with % to be removed prior to listing on fence
|
||||
/// </summary>
|
||||
[JsonPropertyName("presetSlotsToRemoveChancePercent")]
|
||||
public required Dictionary<string, double?> PresetSlotsToRemoveChancePercent
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required Dictionary<string, double?> PresetSlotsToRemoveChancePercent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Block seasonal items from appearing when season is inactive
|
||||
/// </summary>
|
||||
[JsonPropertyName("blacklistSeasonalItems")]
|
||||
public bool BlacklistSeasonalItems
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool BlacklistSeasonalItems { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Max pen value allowed to be listed on flea - affects ammo + ammo boxes
|
||||
/// </summary>
|
||||
[JsonPropertyName("ammoMaxPenLimit")]
|
||||
public double AmmoMaxPenLimit
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double AmmoMaxPenLimit { get; set; }
|
||||
|
||||
[JsonPropertyName("blacklist")]
|
||||
public required HashSet<string> Blacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required HashSet<string> Blacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("coopExtractGift")]
|
||||
public required CoopExtractReward CoopExtractGift
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required CoopExtractReward CoopExtractGift { get; set; }
|
||||
|
||||
[JsonPropertyName("btrDeliveryExpireHours")]
|
||||
public int BtrDeliveryExpireHours
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int BtrDeliveryExpireHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Smallest value player rep with fence can fall to
|
||||
/// </summary>
|
||||
[JsonPropertyName("playerRepMin")]
|
||||
public double PlayerRepMin
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PlayerRepMin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Highest value player rep with fence can climb to
|
||||
/// </summary>
|
||||
[JsonPropertyName("playerRepMax")]
|
||||
public double PlayerRepMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PlayerRepMax { get; set; }
|
||||
}
|
||||
|
||||
public record ItemDurabilityCurrentMax
|
||||
@@ -303,49 +163,25 @@ public record ItemDurabilityCurrentMax
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("current")]
|
||||
public required MinMax<double> Current
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<double> Current { get; set; }
|
||||
|
||||
[JsonPropertyName("max")]
|
||||
public required MinMax<double> Max
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<double> Max { get; set; }
|
||||
}
|
||||
|
||||
public record CoopExtractReward : LootRequest
|
||||
{
|
||||
[JsonPropertyName("sendGift")]
|
||||
public bool SendGift
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public bool SendGift { get; set; }
|
||||
|
||||
[JsonPropertyName("useRewardItemBlacklist")]
|
||||
public new bool UseRewardItemBlacklist
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public new bool UseRewardItemBlacklist { get; set; }
|
||||
|
||||
[JsonPropertyName("messageLocaleIds")]
|
||||
public required List<string> MessageLocaleIds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required List<string> MessageLocaleIds { get; set; }
|
||||
|
||||
[JsonPropertyName("giftExpiryHours")]
|
||||
public int GiftExpiryHours
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int GiftExpiryHours { get; set; }
|
||||
}
|
||||
|
||||
public record DiscountOptions
|
||||
@@ -354,39 +190,19 @@ public record DiscountOptions
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("assortSize")]
|
||||
public int AssortSize
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int AssortSize { get; set; }
|
||||
|
||||
[JsonPropertyName("itemPriceMult")]
|
||||
public double ItemPriceMult
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double ItemPriceMult { get; set; }
|
||||
|
||||
[JsonPropertyName("presetPriceMult")]
|
||||
public double PresetPriceMult
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double PresetPriceMult { get; set; }
|
||||
|
||||
[JsonPropertyName("weaponPresetMinMax")]
|
||||
public required MinMax<int> WeaponPresetMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> WeaponPresetMinMax { get; set; }
|
||||
|
||||
[JsonPropertyName("equipmentPresetMinMax")]
|
||||
public required MinMax<int> EquipmentPresetMinMax
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public required MinMax<int> EquipmentPresetMinMax { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -401,9 +217,5 @@ public record ModdedTraders
|
||||
/// Trader Ids to enable the clothing service for
|
||||
/// </summary>
|
||||
[JsonPropertyName("clothingService")]
|
||||
public List<string> ClothingService
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = [];
|
||||
public List<string> ClothingService { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -8,39 +8,19 @@ namespace SPTarkov.Server.Core.Models.Spt.Config;
|
||||
public record WeatherConfig : BaseConfig
|
||||
{
|
||||
[JsonPropertyName("kind")]
|
||||
public override string Kind
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "spt-weather";
|
||||
public override string Kind { get; set; } = "spt-weather";
|
||||
|
||||
[JsonPropertyName("acceleration")]
|
||||
public double? Acceleration
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public double? Acceleration { get; set; }
|
||||
|
||||
[JsonPropertyName("weather")]
|
||||
public WeatherValues? Weather
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public WeatherValues? Weather { get; set; }
|
||||
|
||||
[JsonPropertyName("seasonDates")]
|
||||
public List<SeasonDateTimes>? SeasonDates
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<SeasonDateTimes>? SeasonDates { get; set; }
|
||||
|
||||
[JsonPropertyName("overrideSeason")]
|
||||
public Season? OverrideSeason
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Season? OverrideSeason { get; set; }
|
||||
}
|
||||
|
||||
public record SeasonDateTimes
|
||||
@@ -49,50 +29,26 @@ public record SeasonDateTimes
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("seasonType")]
|
||||
public Season? SeasonType
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Season? SeasonType { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string? Name
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string? Name { get; set; }
|
||||
|
||||
[JsonPropertyName("startDay")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int? StartDay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? StartDay { get; set; }
|
||||
|
||||
[JsonPropertyName("startMonth")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int? StartMonth
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? StartMonth { get; set; }
|
||||
|
||||
[JsonPropertyName("endDay")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int? EndDay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? EndDay { get; set; }
|
||||
|
||||
[JsonPropertyName("endMonth")]
|
||||
[JsonConverter(typeof(StringToNumberFactoryConverter))]
|
||||
public int? EndMonth
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? EndMonth { get; set; }
|
||||
}
|
||||
|
||||
public record WeatherValues
|
||||
@@ -101,31 +57,19 @@ public record WeatherValues
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("seasonValues")]
|
||||
public Dictionary<string, SeasonalValues>? SeasonValues
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public Dictionary<string, SeasonalValues>? SeasonValues { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// How many hours to generate weather data into the future
|
||||
/// </summary>
|
||||
[JsonPropertyName("generateWeatherAmountHours")]
|
||||
public int? GenerateWeatherAmountHours
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public int? GenerateWeatherAmountHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Length of each weather period
|
||||
/// </summary>
|
||||
[JsonPropertyName("timePeriod")]
|
||||
public WeatherSettings<int>? TimePeriod
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public WeatherSettings<int>? TimePeriod { get; set; }
|
||||
}
|
||||
|
||||
public record SeasonalValues
|
||||
@@ -134,67 +78,31 @@ public record SeasonalValues
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("clouds")]
|
||||
public WeatherSettings<double>? Clouds
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public WeatherSettings<double>? Clouds { get; set; }
|
||||
|
||||
[JsonPropertyName("windSpeed")]
|
||||
public WeatherSettings<double>? WindSpeed
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public WeatherSettings<double>? WindSpeed { get; set; }
|
||||
|
||||
[JsonPropertyName("windDirection")]
|
||||
public WeatherSettings<WindDirection>? WindDirection
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public WeatherSettings<WindDirection>? WindDirection { get; set; }
|
||||
|
||||
[JsonPropertyName("windGustiness")]
|
||||
public MinMax<double>? WindGustiness
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double>? WindGustiness { get; set; }
|
||||
|
||||
[JsonPropertyName("rain")]
|
||||
public WeatherSettings<double>? Rain
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public WeatherSettings<double>? Rain { get; set; }
|
||||
|
||||
[JsonPropertyName("rainIntensity")]
|
||||
public MinMax<double>? RainIntensity
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double>? RainIntensity { get; set; }
|
||||
|
||||
[JsonPropertyName("fog")]
|
||||
public WeatherSettings<double>? Fog
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public WeatherSettings<double>? Fog { get; set; }
|
||||
|
||||
[JsonPropertyName("temp")]
|
||||
public TempDayNight? Temp
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public TempDayNight? Temp { get; set; }
|
||||
|
||||
[JsonPropertyName("pressure")]
|
||||
public MinMax<double>? Pressure
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double>? Pressure { get; set; }
|
||||
}
|
||||
|
||||
public record TempDayNight
|
||||
@@ -203,18 +111,10 @@ public record TempDayNight
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("day")]
|
||||
public MinMax<double>? Day
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double>? Day { get; set; }
|
||||
|
||||
[JsonPropertyName("night")]
|
||||
public MinMax<double>? Night
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public MinMax<double>? Night { get; set; }
|
||||
}
|
||||
|
||||
public record WeatherSettings<T>
|
||||
@@ -223,16 +123,8 @@ public record WeatherSettings<T>
|
||||
public Dictionary<string, object> ExtensionData { get; set; }
|
||||
|
||||
[JsonPropertyName("values")]
|
||||
public List<T>? Values
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<T>? Values { get; set; }
|
||||
|
||||
[JsonPropertyName("weights")]
|
||||
public List<double>? Weights
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public List<double>? Weights { get; set; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user