.NET Format Style Fixes

This commit is contained in:
refringe
2025-06-18 17:09:20 +00:00
committed by Format Bot
parent ca0a7d6345
commit 6e01428b2b
774 changed files with 23507 additions and 40003 deletions
@@ -8,33 +8,13 @@ public record BotDetailsForChatMessages
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public string Nickname
{
get;
set;
} = string.Empty;
public string Nickname { get; set; } = string.Empty;
public DogtagSide Side
{
get;
set;
}
public DogtagSide Side { get; set; }
public int? Aid
{
get;
set;
}
public int? Aid { get; set; }
public int? Level
{
get;
set;
}
public int? Level { get; set; }
public MemberCategory? Type
{
get;
set;
}
public MemberCategory? Type { get; set; }
}
@@ -12,120 +12,68 @@ public record BotGenerationDetails
/// Should the bot be generated as a PMC
/// </summary>
[JsonPropertyName("isPmc")]
public bool? IsPmc
{
get;
set;
}
public bool? IsPmc { get; set; }
/// <summary>
/// assault/pmcBot etc
/// </summary>
[JsonPropertyName("role")]
public string? Role
{
get;
set;
}
public string? Role { get; set; }
/// <summary>
/// Side of bot
/// </summary>
[JsonPropertyName("side")]
public string? Side
{
get;
set;
}
public string? Side { get; set; }
/// <summary>
/// Active players current level
/// </summary>
[JsonPropertyName("playerLevel")]
public int? PlayerLevel
{
get;
set;
}
public int? PlayerLevel { get; set; }
[JsonPropertyName("playerName")]
public string? PlayerName
{
get;
set;
}
public string? PlayerName { get; set; }
/// <summary>
/// Level specific overrides for PMC level
/// </summary>
[JsonPropertyName("locationSpecificPmcLevelOverride")]
public MinMax<int>? LocationSpecificPmcLevelOverride
{
get;
set;
}
public MinMax<int>? LocationSpecificPmcLevelOverride { get; set; }
/// <summary>
/// Delta of highest level of bot e.g. 50 means 50 levels above player
/// </summary>
[JsonPropertyName("botRelativeLevelDeltaMax")]
public int? BotRelativeLevelDeltaMax
{
get;
set;
}
public int? BotRelativeLevelDeltaMax { get; set; }
/// <summary>
/// Delta of lowest level of bot e.g. 50 means 50 levels below player
/// </summary>
[JsonPropertyName("botRelativeLevelDeltaMin")]
public int? BotRelativeLevelDeltaMin
{
get;
set;
}
public int? BotRelativeLevelDeltaMin { get; set; }
/// <summary>
/// How many to create and store
/// </summary>
[JsonPropertyName("botCountToGenerate")]
public int? BotCountToGenerate
{
get;
set;
}
public int? BotCountToGenerate { get; set; }
/// <summary>
/// Desired difficulty of the bot
/// </summary>
[JsonPropertyName("botDifficulty")]
public string? BotDifficulty
{
get;
set;
}
public string? BotDifficulty { get; set; }
/// <summary>
/// Will the generated bot be a player scav
/// </summary>
[JsonPropertyName("isPlayerScav")]
public bool? IsPlayerScav
{
get;
set;
}
public bool? IsPlayerScav { get; set; }
[JsonPropertyName("eventRole")]
public string? EventRole
{
get;
set;
}
public string? EventRole { get; set; }
[JsonPropertyName("allPmcsHaveSameNameAsPlayer")]
public bool? AllPmcsHaveSameNameAsPlayer
{
get;
set;
}
public bool? AllPmcsHaveSameNameAsPlayer { get; set; }
}
@@ -8,95 +8,43 @@ public record BotLootCache
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("backpackLoot")]
public Dictionary<string, double> BackpackLoot
{
get;
set;
} = [];
public Dictionary<string, double> BackpackLoot { get; set; } = [];
[JsonPropertyName("pocketLoot")]
public Dictionary<string, double> PocketLoot
{
get;
set;
} = [];
public Dictionary<string, double> PocketLoot { get; set; } = [];
[JsonPropertyName("vestLoot")]
public Dictionary<string, double> VestLoot
{
get;
set;
} = [];
public Dictionary<string, double> VestLoot { get; set; } = [];
[JsonPropertyName("secureLoot")]
public Dictionary<string, double> SecureLoot
{
get;
set;
} = [];
public Dictionary<string, double> SecureLoot { get; set; } = [];
[JsonPropertyName("combinedPoolLoot")]
public Dictionary<string, double> CombinedPoolLoot
{
get;
set;
} = [];
public Dictionary<string, double> CombinedPoolLoot { get; set; } = [];
[JsonPropertyName("specialItems")]
public Dictionary<string, double> SpecialItems
{
get;
set;
} = [];
public Dictionary<string, double> SpecialItems { get; set; } = [];
[JsonPropertyName("healingItems")]
public Dictionary<string, double> HealingItems
{
get;
set;
} = [];
public Dictionary<string, double> HealingItems { get; set; } = [];
[JsonPropertyName("drugItems")]
public Dictionary<string, double> DrugItems
{
get;
set;
} = [];
public Dictionary<string, double> DrugItems { get; set; } = [];
[JsonPropertyName("foodItems")]
public Dictionary<string, double> FoodItems
{
get;
set;
} = [];
public Dictionary<string, double> FoodItems { get; set; } = [];
[JsonPropertyName("drinkItems")]
public Dictionary<string, double> DrinkItems
{
get;
set;
} = [];
public Dictionary<string, double> DrinkItems { get; set; } = [];
[JsonPropertyName("currencyItems")]
public Dictionary<string, double> CurrencyItems
{
get;
set;
} = [];
public Dictionary<string, double> CurrencyItems { get; set; } = [];
[JsonPropertyName("stimItems")]
public Dictionary<string, double> StimItems
{
get;
set;
} = [];
public Dictionary<string, double> StimItems { get; set; } = [];
[JsonPropertyName("grenadeItems")]
public Dictionary<string, double> GrenadeItems
{
get;
set;
} = [];
public Dictionary<string, double> GrenadeItems { get; set; } = [];
}
public record LootCacheType
@@ -9,23 +9,11 @@ public record Bots
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("types")]
public Dictionary<string, BotType?>? Types
{
get;
set;
}
public Dictionary<string, BotType?>? Types { get; set; }
[JsonPropertyName("base")]
public BotBase? Base
{
get;
set;
}
public BotBase? Base { get; set; }
[JsonPropertyName("core")]
public Dictionary<string, object>? Core
{
get;
set;
}
public Dictionary<string, object>? Core { get; set; }
}
@@ -8,37 +8,17 @@ public record ChooseRandomCompatibleModResult
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("incompatible")]
public bool? Incompatible
{
get;
set;
}
public bool? Incompatible { get; set; }
[JsonPropertyName("found")]
public bool? Found
{
get;
set;
}
public bool? Found { get; set; }
[JsonPropertyName("chosenTpl")]
public string? ChosenTemplate
{
get;
set;
}
public string? ChosenTemplate { get; set; }
[JsonPropertyName("reason")]
public string? Reason
{
get;
set;
}
public string? Reason { get; set; }
[JsonPropertyName("slotBlocked")]
public bool? SlotBlocked
{
get;
set;
}
public bool? SlotBlocked { get; set; }
}
@@ -8,18 +8,10 @@ public record FilterPlateModsForSlotByLevelResult
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("result")]
public Result? Result
{
get;
set;
}
public Result? Result { get; set; }
[JsonPropertyName("plateModTpls")]
public HashSet<string>? PlateModTemplates
{
get;
set;
}
public HashSet<string>? PlateModTemplates { get; set; }
}
public enum Result
@@ -28,5 +20,5 @@ public enum Result
SUCCESS = 1,
NO_DEFAULT_FILTER = 2,
NOT_PLATE_HOLDING_SLOT = 3,
LACKS_PLATE_WEIGHTS = 4
LACKS_PLATE_WEIGHTS = 4,
}
@@ -14,87 +14,47 @@ public record GenerateEquipmentProperties
/// Root Slot being generated
/// </summary>
[JsonPropertyName("rootEquipmentSlot")]
public EquipmentSlots RootEquipmentSlot
{
get;
set;
}
public EquipmentSlots RootEquipmentSlot { get; set; }
/// <summary>
/// Equipment pool for root slot being generated
/// </summary>
[JsonPropertyName("rootEquipmentPool")]
public Dictionary<string, double>? RootEquipmentPool
{
get;
set;
}
public Dictionary<string, double>? RootEquipmentPool { get; set; }
[JsonPropertyName("modPool")]
public GlobalMods? ModPool
{
get;
set;
}
public GlobalMods? ModPool { get; set; }
/// <summary>
/// Dictionary of mod items and their chance to spawn for this bot type
/// </summary>
[JsonPropertyName("spawnChances")]
public Chances? SpawnChances
{
get;
set;
}
public Chances? SpawnChances { get; set; }
/// <summary>
/// Bot-specific properties
/// </summary>
[JsonPropertyName("botData")]
public BotData? BotData
{
get;
set;
}
public BotData? BotData { get; set; }
[JsonPropertyName("inventory")]
public BotBaseInventory? Inventory
{
get;
set;
}
public BotBaseInventory? Inventory { get; set; }
[JsonPropertyName("botEquipmentConfig")]
public EquipmentFilters? BotEquipmentConfig
{
get;
set;
}
public EquipmentFilters? BotEquipmentConfig { get; set; }
/// <summary>
/// Settings from bot.json to adjust how item is generated
/// </summary>
[JsonPropertyName("randomisationDetails")]
public RandomisationDetails? RandomisationDetails
{
get;
set;
}
public RandomisationDetails? RandomisationDetails { get; set; }
/// <summary>
/// OPTIONAL - Do not generate mods for tpls in this array
/// </summary>
[JsonPropertyName("generateModsBlacklist")]
public HashSet<string>? GenerateModsBlacklist
{
get;
set;
}
public HashSet<string>? GenerateModsBlacklist { get; set; }
[JsonPropertyName("generatingPlayerLevel")]
public double? GeneratingPlayerLevel
{
get;
set;
}
public double? GeneratingPlayerLevel { get; set; }
}
@@ -12,101 +12,61 @@ public record GenerateWeaponRequest
/// Weapon to add mods to / result that is returned
/// </summary>
[JsonPropertyName("weapon")]
public List<Item>? Weapon
{
get;
set;
}
public List<Item>? Weapon { get; set; }
/// <summary>
/// Pool of compatible mods to attach to weapon
/// </summary>
[JsonPropertyName("modPool")]
public GlobalMods? ModPool
{
get;
set;
}
public GlobalMods? ModPool { get; set; }
/// <summary>
/// ParentId of weapon
/// </summary>
[JsonPropertyName("weaponId")]
public string? WeaponId
{
get;
set;
}
public string? WeaponId { get; set; }
/// <summary>
/// Weapon which mods will be generated on
/// </summary>
[JsonPropertyName("parentTemplate")]
public TemplateItem? ParentTemplate
{
get;
set;
}
public TemplateItem? ParentTemplate { get; set; }
/// <summary>
/// Chance values mod will be added
/// </summary>
[JsonPropertyName("modSpawnChances")]
public Dictionary<string, double>? ModSpawnChances
{
get;
set;
}
public Dictionary<string, double>? ModSpawnChances { get; set; }
/// <summary>
/// Ammo tpl to use when generating magazines/cartridges
/// </summary>
[JsonPropertyName("ammoTpl")]
public string? AmmoTpl
{
get;
set;
}
public string? AmmoTpl { get; set; }
/// <summary>
/// Bot-specific properties
/// </summary>
[JsonPropertyName("botData")]
public BotData? BotData
{
get;
set;
}
public BotData? BotData { get; set; }
/// <summary>
/// limits placed on certain mod types per gun
/// </summary>
[JsonPropertyName("modLimits")]
public BotModLimits? ModLimits
{
get;
set;
}
public BotModLimits? ModLimits { get; set; }
/// <summary>
/// Info related to the weapon being generated
/// </summary>
[JsonPropertyName("weaponStats")]
public WeaponStats? WeaponStats
{
get;
set;
}
public WeaponStats? WeaponStats { get; set; }
/// <summary>
/// Array of item tpls the weapon does not support
/// </summary>
[JsonPropertyName("conflictingItemTpls")]
public HashSet<string>? ConflictingItemTpls
{
get;
set;
}
public HashSet<string>? ConflictingItemTpls { get; set; }
}
public record BotData
@@ -118,31 +78,19 @@ public record BotData
/// Role of bot weapon is generated for
/// </summary>
[JsonPropertyName("role")]
public string? Role
{
get;
set;
}
public string? Role { get; set; }
/// <summary>
/// Level of the bot weapon is being generated for
/// </summary>
[JsonPropertyName("level")]
public int? Level
{
get;
set;
}
public int? Level { get; set; }
/// <summary>
/// role of bot when accessing bot.json equipment config settings
/// </summary>
[JsonPropertyName("equipmentRole")]
public string? EquipmentRole
{
get;
set;
}
public string? EquipmentRole { get; set; }
}
public record WeaponStats
@@ -151,25 +99,13 @@ public record WeaponStats
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("hasOptic")]
public bool? HasOptic
{
get;
set;
}
public bool? HasOptic { get; set; }
[JsonPropertyName("hasFrontIronSight")]
public bool? HasFrontIronSight
{
get;
set;
}
public bool? HasFrontIronSight { get; set; }
[JsonPropertyName("hasRearIronSight")]
public bool? HasRearIronSight
{
get;
set;
}
public bool? HasRearIronSight { get; set; }
}
public record BotModLimits
@@ -178,46 +114,22 @@ public record BotModLimits
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("scope")]
public ItemCount? Scope
{
get;
set;
}
public ItemCount? Scope { get; set; }
[JsonPropertyName("scopeMax")]
public int? ScopeMax
{
get;
set;
}
public int? ScopeMax { get; set; }
[JsonPropertyName("scopeBaseTypes")]
public List<string>? ScopeBaseTypes
{
get;
set;
}
public List<string>? ScopeBaseTypes { get; set; }
[JsonPropertyName("flashlightLaser")]
public ItemCount? FlashlightLaser
{
get;
set;
}
public ItemCount? FlashlightLaser { get; set; }
[JsonPropertyName("flashlightLaserMax")]
public int? FlashlightLaserMax
{
get;
set;
}
public int? FlashlightLaserMax { get; set; }
[JsonPropertyName("flashlightLaserBaseTypes")]
public List<string>? FlashlightLaserBaseTypes
{
get;
set;
}
public List<string>? FlashlightLaserBaseTypes { get; set; }
}
public record ItemCount
@@ -226,9 +138,5 @@ public record ItemCount
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("count")]
public int? Count
{
get;
set;
}
public int? Count { get; set; }
}
@@ -9,37 +9,17 @@ public record GenerateWeaponResult
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("weapon")]
public List<Item>? Weapon
{
get;
set;
}
public List<Item>? Weapon { get; set; }
[JsonPropertyName("chosenAmmoTpl")]
public string? ChosenAmmoTemplate
{
get;
set;
}
public string? ChosenAmmoTemplate { get; set; }
[JsonPropertyName("chosenUbglAmmoTpl")]
public string? ChosenUbglAmmoTemplate
{
get;
set;
}
public string? ChosenUbglAmmoTemplate { get; set; }
[JsonPropertyName("weaponMods")]
public GlobalMods? WeaponMods
{
get;
set;
}
public GlobalMods? WeaponMods { get; set; }
[JsonPropertyName("weaponTemplate")]
public TemplateItem? WeaponTemplate
{
get;
set;
}
public TemplateItem? WeaponTemplate { get; set; }
}
@@ -8,16 +8,8 @@ public record ItemSpawnLimitSettings
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("currentLimits")]
public Dictionary<string, double>? CurrentLimits
{
get;
set;
}
public Dictionary<string, double>? CurrentLimits { get; set; }
[JsonPropertyName("globalLimits")]
public Dictionary<string, double>? GlobalLimits
{
get;
set;
}
public Dictionary<string, double>? GlobalLimits { get; set; }
}
@@ -14,123 +14,71 @@ public record ModToSpawnRequest
/// Slot mod will fit into
/// </summary>
[JsonPropertyName("modSlot")]
public string? ModSlot
{
get;
set;
}
public string? ModSlot { get; set; }
/// <summary>
/// Will generate a randomised mod pool if true
/// </summary>
[JsonPropertyName("isRandomisableSlot")]
public bool? IsRandomisableSlot
{
get;
set;
}
public bool? IsRandomisableSlot { get; set; }
[JsonPropertyName("randomisationSettings")]
public RandomisationDetails? RandomisationSettings
{
get;
set;
}
public RandomisationDetails? RandomisationSettings { get; set; }
/// <summary>
/// Parent slot the item will be a part of
/// </summary>
[JsonPropertyName("botWeaponSightWhitelist")]
public Dictionary<string, List<string>>? BotWeaponSightWhitelist
{
get;
set;
}
public Dictionary<string, List<string>>? BotWeaponSightWhitelist { get; set; }
/// <summary>
/// Blacklist to prevent mods from being picked
/// </summary>
[JsonPropertyName("botEquipBlacklist")]
public EquipmentFilterDetails? BotEquipBlacklist
{
get;
set;
}
public EquipmentFilterDetails? BotEquipBlacklist { get; set; }
/// <summary>
/// Pool of items to pick from
/// </summary>
[JsonPropertyName("itemModPool")]
public Dictionary<string, HashSet<string>>? ItemModPool
{
get;
set;
}
public Dictionary<string, HashSet<string>>? ItemModPool { get; set; }
/// <summary>
/// List with only weapon tpl in it, ready for mods to be added
/// </summary>
[JsonPropertyName("weapon")]
public List<Item>? Weapon
{
get;
set;
}
public List<Item>? Weapon { get; set; }
/// <summary>
/// Ammo tpl to use if slot requires a cartridge to be added (e.g. mod_magazine)
/// </summary>
[JsonPropertyName("ammoTpl")]
public string? AmmoTpl
{
get;
set;
}
public string? AmmoTpl { get; set; }
/// <summary>
/// Parent item the mod will go into
/// </summary>
[JsonPropertyName("parentTemplate")]
public TemplateItem? ParentTemplate
{
get;
set;
}
public TemplateItem? ParentTemplate { get; set; }
/// <summary>
/// Should mod be spawned/skipped/use default
/// </summary>
[JsonPropertyName("modSpawnResult")]
public ModSpawn? ModSpawnResult
{
get;
set;
}
public ModSpawn? ModSpawnResult { get; set; }
/// <summary>
/// Weapon stats for weapon being generated
/// </summary>
[JsonPropertyName("weaponStats")]
public WeaponStats? WeaponStats
{
get;
set;
}
public WeaponStats? WeaponStats { get; set; }
/// <summary>
/// List of item tpls the weapon does not support
/// </summary>
[JsonPropertyName("conflictingItemTpls")]
public HashSet<string>? ConflictingItemTpls
{
get;
set;
}
public HashSet<string>? ConflictingItemTpls { get; set; }
[JsonPropertyName("botData")]
public BotData? BotData
{
get;
set;
}
public BotData? BotData { get; set; }
}
@@ -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; }
}
@@ -14,131 +14,79 @@ public record SendMessageDetails
/// Player id
/// </summary>
[JsonPropertyName("recipientId")]
public string? RecipientId
{
get;
set;
}
public string? RecipientId { get; set; }
/// <summary>
/// Who is sending this message
/// </summary>
[JsonPropertyName("sender")]
public MessageType? Sender
{
get;
set;
}
public MessageType? Sender { get; set; }
/// <summary>
/// Optional - leave blank to use sender value
/// </summary>
[JsonPropertyName("dialogType")]
public MessageType? DialogType
{
get;
set;
}
public MessageType? DialogType { get; set; }
/// <summary>
/// Optional - if sender is USER these details are used
/// </summary>
[JsonPropertyName("senderDetails")]
public UserDialogInfo? SenderDetails
{
get;
set;
}
public UserDialogInfo? SenderDetails { get; set; }
/// <summary>
/// Optional - the trader sending the message
/// </summary>
[JsonPropertyName("trader")]
public string? Trader
{
get;
set;
}
public string? Trader { get; set; }
/// <summary>
/// Optional - used in player/system messages, otherwise templateId is used
/// </summary>
[JsonPropertyName("messageText")]
public string? MessageText
{
get;
set;
}
public string? MessageText { get; set; }
/// <summary>
/// Optional - Items to send to player
/// </summary>
[JsonPropertyName("items")]
public List<Item>? Items
{
get;
set;
}
public List<Item>? Items { get; set; }
/// <summary>
/// Optional - How long items will be stored in mail before expiry
/// </summary>
[JsonPropertyName("itemsMaxStorageLifetimeSeconds")]
public long? ItemsMaxStorageLifetimeSeconds
{
get;
set;
}
public long? ItemsMaxStorageLifetimeSeconds { get; set; }
/// <summary>
/// Optional - Used when sending messages from traders who send text from locale json
/// </summary>
[JsonPropertyName("templateId")]
public string? TemplateId
{
get;
set;
}
public string? TemplateId { get; set; }
/// <summary>
/// Optional - ragfair related
/// </summary>
[JsonPropertyName("systemData")]
public SystemData? SystemData
{
get;
set;
}
public SystemData? SystemData { get; set; }
/// <summary>
/// Optional - Used by ragfair messages
/// </summary>
[JsonPropertyName("ragfairDetails")]
public MessageContentRagfair? RagfairDetails
{
get;
set;
}
public MessageContentRagfair? RagfairDetails { get; set; }
/// <summary>
/// OPTIONAL - allows modification of profile settings via mail
/// </summary>
[JsonPropertyName("profileChangeEvents")]
public List<ProfileChangeEvent>? ProfileChangeEvents
{
get;
set;
}
public List<ProfileChangeEvent>? ProfileChangeEvents { get; set; }
/// <summary>
/// Optional - the MongoID of the dialogue message to reply to
/// </summary>
[JsonPropertyName("replyTo")]
public string? ReplyTo
{
get;
set;
}
public string? ReplyTo { get; set; }
}
public record ProfileChangeEvent
@@ -147,37 +95,17 @@ public record ProfileChangeEvent
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("_id")]
public string? Id
{
get;
set;
}
public string? Id { get; set; }
[JsonPropertyName("Type")]
public string Type
{
get;
set;
}
public string Type { get; set; }
[JsonPropertyName("value")]
public double? Value
{
get;
set;
}
public double? Value { get; set; }
[JsonPropertyName("entity")]
public string? Entity
{
get;
set;
}
public string? Entity { get; set; }
[JsonPropertyName("data")]
public string? Data
{
get;
set;
}
public string? Data { get; set; }
}
@@ -9,23 +9,11 @@ public record CreateFenceAssortsResult
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("sptItems")]
public List<List<Item>>? SptItems
{
get;
set;
}
public List<List<Item>>? SptItems { get; set; }
[JsonPropertyName("barter_scheme")]
public Dictionary<string, List<List<BarterScheme>>>? BarterScheme
{
get;
set;
}
public Dictionary<string, List<List<BarterScheme>>>? BarterScheme { get; set; }
[JsonPropertyName("loyal_level_items")]
public Dictionary<string, int>? LoyalLevelItems
{
get;
set;
}
public Dictionary<string, int>? LoyalLevelItems { get; set; }
}
@@ -8,18 +8,10 @@ public record FenceAssortGenerationValues
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("normal")]
public GenerationAssortValues? Normal
{
get;
set;
}
public GenerationAssortValues? Normal { get; set; }
[JsonPropertyName("discount")]
public GenerationAssortValues? Discount
{
get;
set;
}
public GenerationAssortValues? Discount { get; set; }
}
public record GenerationAssortValues
@@ -28,23 +20,11 @@ public record GenerationAssortValues
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("item")]
public int? Item
{
get;
set;
}
public int? Item { get; set; }
[JsonPropertyName("weaponPreset")]
public int? WeaponPreset
{
get;
set;
}
public int? WeaponPreset { get; set; }
[JsonPropertyName("equipmentPreset")]
public int? EquipmentPreset
{
get;
set;
}
public int? EquipmentPreset { get; set; }
}
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
namespace SPTarkov.Server.Core.Models.Spt.Helper;
public record WeightedRandomResult<T>
@@ -6,15 +7,7 @@ public record WeightedRandomResult<T>
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required T Item
{
get;
set;
}
public required T Item { get; set; }
public required int Index
{
get;
set;
}
public required int Index { get; set; }
}
@@ -10,30 +10,14 @@ public record CircleCraftDetails
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("time")]
public required long Time
{
get;
set;
}
public required long Time { get; set; }
[JsonPropertyName("rewardType")]
public required CircleRewardType RewardType
{
get;
set;
}
public required CircleRewardType RewardType { get; set; }
[JsonPropertyName("rewardAmountRoubles")]
public required int RewardAmountRoubles
{
get;
set;
}
public required int RewardAmountRoubles { get; set; }
[JsonPropertyName("rewardDetails")]
public required CraftTimeThreshold RewardDetails
{
get;
set;
}
public required CraftTimeThreshold RewardDetails { get; set; }
}
@@ -9,44 +9,20 @@ public record Hideout
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("areas")]
public List<HideoutArea>? Areas
{
get;
set;
}
public List<HideoutArea>? Areas { get; set; }
[JsonPropertyName("customAreas")]
public List<HideoutArea>? CustomAreas
{
get;
set;
}
public List<HideoutArea>? CustomAreas { get; set; }
[JsonPropertyName("customisation")]
public HideoutCustomisation? Customisation
{
get;
set;
}
public HideoutCustomisation? Customisation { get; set; }
[JsonPropertyName("production")]
public HideoutProductionData? Production
{
get;
set;
}
public HideoutProductionData? Production { get; set; }
[JsonPropertyName("settings")]
public HideoutSettingsBase? Settings
{
get;
set;
}
public HideoutSettingsBase? Settings { get; set; }
[JsonPropertyName("qte")]
public List<QteData>? Qte
{
get;
set;
}
public List<QteData>? Qte { get; set; }
}
@@ -8,25 +8,13 @@ public record ScavCaseRewardCountsAndPrices
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("Common")]
public RewardCountAndPriceDetails? Common
{
get;
set;
}
public RewardCountAndPriceDetails? Common { get; set; }
[JsonPropertyName("Rare")]
public RewardCountAndPriceDetails? Rare
{
get;
set;
}
public RewardCountAndPriceDetails? Rare { get; set; }
[JsonPropertyName("Superrare")]
public RewardCountAndPriceDetails? Superrare
{
get;
set;
}
public RewardCountAndPriceDetails? Superrare { get; set; }
}
public record RewardCountAndPriceDetails
@@ -35,30 +23,14 @@ public record RewardCountAndPriceDetails
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("minCount")]
public double? MinCount
{
get;
set;
}
public double? MinCount { get; set; }
[JsonPropertyName("maxCount")]
public double? MaxCount
{
get;
set;
}
public double? MaxCount { get; set; }
[JsonPropertyName("minPriceRub")]
public double? MinPriceRub
{
get;
set;
}
public double? MinPriceRub { get; set; }
[JsonPropertyName("maxPriceRub")]
public double? MaxPriceRub
{
get;
set;
}
public double? MaxPriceRub { get; set; }
}
@@ -8,16 +8,8 @@ public record ItemSize
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("width")]
public required int Width
{
get;
set;
}
public required int Width { get; set; }
[JsonPropertyName("height")]
public required int Height
{
get;
set;
}
public required int Height { get; set; }
}
@@ -12,33 +12,17 @@ public record OwnerInventoryItems
/// Inventory items from source
/// </summary>
[JsonPropertyName("from")]
public List<Item>? From
{
get;
set;
}
public List<Item>? From { get; set; }
/// <summary>
/// Inventory items at destination
/// </summary>
[JsonPropertyName("to")]
public List<Item>? To
{
get;
set;
}
public List<Item>? To { get; set; }
[JsonPropertyName("sameInventory")]
public bool? SameInventory
{
get;
set;
}
public bool? SameInventory { get; set; }
[JsonPropertyName("isMail")]
public bool? IsMail
{
get;
set;
}
public bool? IsMail { get; set; }
}
@@ -8,15 +8,7 @@ public class LauncherV2CompatibleVersion : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required string SptVersion
{
get;
set;
}
public required string SptVersion { get; set; }
public required string EftVersion
{
get;
set;
}
public required string EftVersion { get; set; }
}
@@ -8,9 +8,5 @@ public class LauncherV2LoginResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required bool Response
{
get;
set;
}
public required bool Response { get; set; }
}
@@ -9,9 +9,5 @@ public class LauncherV2ModsResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required Dictionary<string, AbstractModMetadata> Response
{
get;
set;
}
public required Dictionary<string, AbstractModMetadata> Response { get; set; }
}
@@ -9,15 +9,7 @@ public class LauncherV2PasswordChangeResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required bool Response
{
get;
set;
}
public required bool Response { get; set; }
public required List<MiniProfile> Profiles
{
get;
set;
}
public required List<MiniProfile> Profiles { get; set; }
}
@@ -8,9 +8,5 @@ public class LauncherV2PingResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required string Response
{
get;
set;
}
public required string Response { get; set; }
}
@@ -9,9 +9,5 @@ public class LauncherV2ProfileResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public SptProfile Response
{
get;
set;
}
public SptProfile Response { get; set; }
}
@@ -9,9 +9,5 @@ public class LauncherV2ProfilesResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required List<MiniProfile> Response
{
get;
set;
}
public required List<MiniProfile> Response { get; set; }
}
@@ -9,15 +9,7 @@ public class LauncherV2RegisterResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required bool Response
{
get;
set;
}
public required bool Response { get; set; }
public required List<MiniProfile> Profiles
{
get;
set;
}
public required List<MiniProfile> Profiles { get; set; }
}
@@ -9,15 +9,7 @@ public class LauncherV2RemoveResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required bool Response
{
get;
set;
}
public required bool Response { get; set; }
public required List<MiniProfile> Profiles
{
get;
set;
}
public required List<MiniProfile> Profiles { get; set; }
}
@@ -8,9 +8,5 @@ public class LauncherV2TypesResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required Dictionary<string, string> Response
{
get;
set;
}
public required Dictionary<string, string> Response { get; set; }
}
@@ -8,9 +8,5 @@ public record LauncherV2VersionResponse : IRequestData
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public required LauncherV2CompatibleVersion Response
{
get;
set;
}
public required LauncherV2CompatibleVersion Response { get; set; }
}
@@ -4,6 +4,6 @@
{
Taken,
Short,
Valid
Valid,
}
}
@@ -11,71 +11,43 @@ public record RaidChanges
/// What percentage of dynamic loot should the map contain
/// </summary>
[JsonPropertyName("dynamicLootPercent")]
public double? DynamicLootPercent
{
get;
set;
}
public double? DynamicLootPercent { get; set; }
/// <summary>
/// What percentage of static loot should the map contain
/// </summary>
[JsonPropertyName("staticLootPercent")]
public double? StaticLootPercent
{
get;
set;
}
public double? StaticLootPercent { get; set; }
/// <summary>
/// How many seconds into the raid is the player simulated to spawn in at
/// </summary>
[JsonPropertyName("simulatedRaidStartSeconds")]
public double? SimulatedRaidStartSeconds
{
get;
set;
}
public double? SimulatedRaidStartSeconds { get; set; }
/// <summary>
/// How many minutes are in the raid total
/// </summary>
[JsonPropertyName("raidTimeMinutes")]
public double? RaidTimeMinutes
{
get;
set;
}
public double? RaidTimeMinutes { get; set; }
/// <summary>
/// The new number of seconds required to avoid a run through
/// </summary>
[JsonPropertyName("newSurviveTimeSeconds")]
public double? NewSurviveTimeSeconds
{
get;
set;
}
public double? NewSurviveTimeSeconds { get; set; }
/// <summary>
/// The original number of seconds required to avoid a run through
/// </summary>
[JsonPropertyName("originalSurvivalTimeSeconds")]
public double? OriginalSurvivalTimeSeconds
{
get;
set;
}
public double? OriginalSurvivalTimeSeconds { get; set; }
/// <summary>
/// Any changes required to the extract list
/// </summary>
[JsonPropertyName("exitChanges")]
public List<ExtractChange>? ExitChanges
{
get;
set;
}
public List<ExtractChange>? ExitChanges { get; set; }
}
public record ExtractChange
@@ -84,30 +56,14 @@ public record ExtractChange
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("Name")]
public string? Name
{
get;
set;
}
public string? Name { get; set; }
[JsonPropertyName("MinTime")]
public double? MinTime
{
get;
set;
}
public double? MinTime { get; set; }
[JsonPropertyName("MaxTime")]
public double? MaxTime
{
get;
set;
}
public double? MaxTime { get; set; }
[JsonPropertyName("Chance")]
public double? Chance
{
get;
set;
}
public double? Chance { get; set; }
}
@@ -10,40 +10,20 @@ public record ClientLogRequest : IRequestData
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("Source")]
public string? Source
{
get;
set;
}
public string? Source { get; set; }
[JsonPropertyName("Level")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public LogLevel? Level
{
get;
set;
}
public LogLevel? Level { get; set; }
[JsonPropertyName("Message")]
public string? Message
{
get;
set;
}
public string? Message { get; set; }
[JsonPropertyName("Color")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public LogTextColor? Color
{
get;
set;
}
public LogTextColor? Color { get; set; }
[JsonPropertyName("BackgroundColor")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public LogBackgroundColor? BackgroundColor
{
get;
set;
}
public LogBackgroundColor? BackgroundColor { get; set; }
}
@@ -14,6 +14,3 @@
// }
// TODO: this likely wont be used anymore, so commenting out insteaad of reimplementing
@@ -8,5 +8,5 @@ public enum LogLevel
Warn,
Info,
Debug,
Trace
Trace,
}
@@ -14,6 +14,3 @@
// }
// TODO: this likely wont be used anymore, so commenting out insteaad of reimplementing
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
namespace SPTarkov.Server.Core.Models.Spt.Logging;
public record SptLogger
@@ -6,35 +7,15 @@ public record SptLogger
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public object Error
{
get;
set;
} // error: (msg: string | Record<string, unknown>) => void;
public object Error { get; set; } // error: (msg: string | Record<string, unknown>) => void;
public object Warn
{
get;
set;
} // warn: (msg: string | Record<string, unknown>) => void;
public object Warn { get; set; } // warn: (msg: string | Record<string, unknown>) => void;
public object Succ
{
get;
set;
} // succ?: (msg: string | Record<string, unknown>) => void;
public object Succ { get; set; } // succ?: (msg: string | Record<string, unknown>) => void;
public object Info
{
get;
set;
} // info: (msg: string | Record<string, unknown>) => void;
public object Info { get; set; } // info: (msg: string | Record<string, unknown>) => void;
public object Debug
{
get;
set;
} // debug: (msg: string | Record<string, unknown>) => void;
public object Debug { get; set; } // debug: (msg: string | Record<string, unknown>) => void;
}
// TODO: needs to be reimplemented however we want to do it in this project
@@ -10,110 +10,62 @@ public abstract record AbstractModMetadata
/// <summary>
/// Name of this mod
/// </summary>
public abstract string Name
{
get;
set;
}
public abstract string Name { get; set; }
/// <summary>
/// Your username
/// </summary>
public abstract string Author
{
get;
set;
}
public abstract string Author { get; set; }
/// <summary>
/// People who have contributed to this mod
/// </summary>
public abstract List<string>? Contributors
{
get;
set;
}
public abstract List<string>? Contributors { get; set; }
/// <summary>
/// Semantic version of this mod, this uses the semver standard
/// </summary>
public abstract string Version
{
get;
set;
}
public abstract string Version { get; set; }
/// <summary>
/// SPT version this mod was built for
/// </summary>
public abstract string SptVersion
{
get;
set;
}
public abstract string SptVersion { get; set; }
/// <summary>
/// List of mods this mod should load before
/// </summary>
public abstract List<string>? LoadBefore
{
get;
set;
}
public abstract List<string>? LoadBefore { get; set; }
/// <summary>
/// List of mods this mod should load after
/// </summary>
public abstract List<string>? LoadAfter
{
get;
set;
}
public abstract List<string>? LoadAfter { get; set; }
/// <summary>
/// List of mods not compatible with this mod
/// </summary>
public abstract List<string>? Incompatibilities
{
get;
set;
}
public abstract List<string>? Incompatibilities { get; set; }
/// <summary>
/// Dictionary of mods this mod depends on.
///
/// Mod dependency is the key, version is the value
/// </summary>
public abstract Dictionary<string, string>? ModDependencies
{
get;
set;
}
public abstract Dictionary<string, string>? ModDependencies { get; set; }
/// <summary>
/// Link to this mod's mod page, or GitHub page
/// </summary>
public abstract string? Url
{
get;
set;
}
public abstract string? Url { get; set; }
/// <summary>
/// Does this mod load bundles
/// </summary>
public abstract bool? IsBundleMod
{
get;
set;
}
public abstract bool? IsBundleMod { get; set; }
/// <summary>
/// Name of the license this mod uses
/// </summary>
public abstract string? Licence
{
get;
set;
}
public abstract string? Licence { get; set; }
}
@@ -8,9 +8,5 @@ public class ModOrder
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("order")]
public List<string> Order
{
get;
set;
}
public List<string> Order { get; set; }
}
@@ -6,11 +6,7 @@ namespace SPTarkov.Server.Core.Models.Spt.Mod;
public record NewItemDetails : NewItemDetailsBase
{
[JsonPropertyName("newItem")]
public TemplateItem? NewItem
{
get;
set;
}
public TemplateItem? NewItem { get; set; }
}
public record NewItemFromCloneDetails : NewItemDetailsBase
@@ -19,42 +15,26 @@ public record NewItemFromCloneDetails : NewItemDetailsBase
/// Id of the item to copy and use as a base
/// </summary>
[JsonPropertyName("itemTplToClone")]
public string? ItemTplToClone
{
get;
set;
}
public string? ItemTplToClone { get; set; }
/// <summary>
/// Item properties that should be applied over the top of the cloned base
/// </summary>
[JsonPropertyName("overrideProperties")]
public Props? OverrideProperties
{
get;
set;
}
public Props? OverrideProperties { get; set; }
/// <summary>
/// ParentId for the new item (item type)
/// </summary>
[JsonPropertyName("parentId")]
public string? ParentId
{
get;
set;
}
public string? ParentId { get; set; }
/// <summary>
/// the id the new item should have, leave blank to have one generated for you.
/// This is often known as the TplId, or TemplateId
/// </summary>
[JsonPropertyName("newId")]
public string? NewId
{
get;
set;
} = "";
public string? NewId { get; set; } = "";
}
public record NewItemDetailsBase
@@ -63,32 +43,16 @@ public record NewItemDetailsBase
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("fleaPriceRoubles")]
public double? FleaPriceRoubles
{
get;
set;
}
public double? FleaPriceRoubles { get; set; }
[JsonPropertyName("handbookPriceRoubles")]
public double? HandbookPriceRoubles
{
get;
set;
}
public double? HandbookPriceRoubles { get; set; }
[JsonPropertyName("handbookParentId")]
public string? HandbookParentId
{
get;
set;
}
public string? HandbookParentId { get; set; }
[JsonPropertyName("locales")]
public Dictionary<string, LocaleDetails>? Locales
{
get;
set;
}
public Dictionary<string, LocaleDetails>? Locales { get; set; }
}
public record LocaleDetails
@@ -97,25 +61,13 @@ public record LocaleDetails
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("name")]
public string? Name
{
get;
set;
}
public string? Name { get; set; }
[JsonPropertyName("shortName")]
public string? ShortName
{
get;
set;
}
public string? ShortName { get; set; }
[JsonPropertyName("description")]
public string? Description
{
get;
set;
}
public string? Description { get; set; }
}
public record CreateItemResult
@@ -130,25 +82,13 @@ public record CreateItemResult
}
[JsonPropertyName("success")]
public bool? Success
{
get;
set;
}
public bool? Success { get; set; }
[JsonPropertyName("itemId")]
public string? ItemId
{
get;
set;
}
public string? ItemId { get; set; }
[JsonPropertyName("errors")]
public List<string>? Errors
{
get;
set;
}
public List<string>? Errors { get; set; }
}
// TODO: This needs to be reworked with however we do it for this project
@@ -9,23 +9,11 @@ public class SptMod
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("directory")]
public string Directory
{
get;
set;
}
public string Directory { get; set; }
[JsonPropertyName("modMetadata")]
public AbstractModMetadata? ModMetadata
{
get;
set;
}
public AbstractModMetadata? ModMetadata { get; set; }
[JsonPropertyName("assemblies")]
public List<Assembly>? Assemblies
{
get;
set;
}
public List<Assembly>? Assemblies { get; set; }
}
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
namespace SPTarkov.Server.Core.Models.Spt.Presets;
public record PresetCacheDetails
@@ -7,16 +8,8 @@ public record PresetCacheDetails
public Dictionary<string, object> ExtensionData { get; set; }
// Preset Ids related to the tpl
public HashSet<string> PresetIds
{
get;
set;
}
public HashSet<string> PresetIds { get; set; }
// Id of the default preset for this tpl
public string? DefaultId
{
get;
set;
}
public string? DefaultId { get; set; }
}
@@ -9,16 +9,8 @@ public record GetRepeatableByIdResult
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("quest")]
public RepeatableQuest? Quest
{
get;
set;
}
public RepeatableQuest? Quest { get; set; }
[JsonPropertyName("repeatableType")]
public PmcDataRepeatableQuest? RepeatableType
{
get;
set;
}
public PmcDataRepeatableQuest? RepeatableType { get; set; }
}
@@ -8,16 +8,8 @@ public record RagfairServerPrices
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("staticPrices")]
public Dictionary<string, double>? StaticPrices
{
get;
set;
}
public Dictionary<string, double>? StaticPrices { get; set; }
[JsonPropertyName("dynamicPrices")]
public Dictionary<string, double>? DynamicPrices
{
get;
set;
}
public Dictionary<string, double>? DynamicPrices { get; set; }
}
@@ -8,19 +8,11 @@ public record TplWithFleaPrice
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("tpl")]
public string? Tpl
{
get;
set;
}
public string? Tpl { get; set; }
/// <summary>
/// Roubles
/// </summary>
[JsonPropertyName("price")]
public double? Price
{
get;
set;
}
public double? Price { get; set; }
}
@@ -8,51 +8,23 @@ public record QuestRewardValues
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("skillPointReward")]
public double? SkillPointReward
{
get;
set;
}
public double? SkillPointReward { get; set; }
[JsonPropertyName("skillRewardChance")]
public double? SkillRewardChance
{
get;
set;
}
public double? SkillRewardChance { get; set; }
[JsonPropertyName("rewardReputation")]
public double? RewardReputation
{
get;
set;
}
public double? RewardReputation { get; set; }
[JsonPropertyName("rewardNumItems")]
public int? RewardNumItems
{
get;
set;
}
public int? RewardNumItems { get; set; }
[JsonPropertyName("rewardRoubles")]
public double? RewardRoubles
{
get;
set;
}
public double? RewardRoubles { get; set; }
[JsonPropertyName("gpCoinRewardCount")]
public double? GpCoinRewardCount
{
get;
set;
}
public double? GpCoinRewardCount { get; set; }
[JsonPropertyName("rewardXP")]
public double? RewardXP
{
get;
set;
}
public double? RewardXP { get; set; }
}
@@ -9,18 +9,10 @@ public record QuestTypePool
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("types")]
public List<string>? Types
{
get;
set;
}
public List<string>? Types { get; set; }
[JsonPropertyName("pool")]
public QuestPool? Pool
{
get;
set;
}
public QuestPool? Pool { get; set; }
}
public record QuestPool
@@ -29,25 +21,13 @@ public record QuestPool
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("Exploration")]
public ExplorationPool? Exploration
{
get;
set;
}
public ExplorationPool? Exploration { get; set; }
[JsonPropertyName("Elimination")]
public EliminationPool? Elimination
{
get;
set;
}
public EliminationPool? Elimination { get; set; }
[JsonPropertyName("Pickup")]
public ExplorationPool? Pickup
{
get;
set;
}
public ExplorationPool? Pickup { get; set; }
}
public record ExplorationPool
@@ -56,11 +36,7 @@ public record ExplorationPool
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("locations")]
public Dictionary<ELocationName, List<string>>? Locations
{
get;
set;
} // TODO: check the type, originally - Partial<Record<ELocationName, string[]>>
public Dictionary<ELocationName, List<string>>? Locations { get; set; } // TODO: check the type, originally - Partial<Record<ELocationName, string[]>>
}
public record EliminationPool
@@ -69,11 +45,7 @@ public record EliminationPool
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("targets")]
public Dictionary<string, TargetLocation>? Targets
{
get;
set;
}
public Dictionary<string, TargetLocation>? Targets { get; set; }
}
public record TargetLocation
@@ -82,9 +54,5 @@ public record TargetLocation
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("locations")]
public List<string>? Locations
{
get;
set;
}
public List<string>? Locations { get; set; }
}
@@ -9,63 +9,23 @@ public record DatabaseTables
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public Bots.Bots? Bots
{
get;
set;
}
public Bots.Bots? Bots { get; set; }
public Hideout.Hideout? Hideout
{
get;
set;
}
public Hideout.Hideout? Hideout { get; set; }
public LocaleBase? Locales
{
get;
set;
}
public LocaleBase? Locales { get; set; }
public Locations? Locations
{
get;
set;
}
public Locations? Locations { get; set; }
public Match? Match
{
get;
set;
}
public Match? Match { get; set; }
public Templates.Templates? Templates
{
get;
set;
}
public Templates.Templates? Templates { get; set; }
public Dictionary<string, Trader>? Traders
{
get;
set;
}
public Dictionary<string, Trader>? Traders { get; set; }
public Globals? Globals
{
get;
set;
}
public Globals? Globals { get; set; }
public ServerBase? Server
{
get;
set;
}
public ServerBase? Server { get; set; }
public SettingsBase? Settings
{
get;
set;
}
public SettingsBase? Settings { get; set; }
}
@@ -11,23 +11,11 @@ public record LocaleBase
[JsonPropertyName("global")]
/// DO NOT USE THIS PROPERTY DIRECTLY, USE LOCALESERVICE INSTEAD
/// THIS IS LAZY LOADED AND YOUR CHANGES WILL NOT BE SAVED
public required Dictionary<string, LazyLoad<Dictionary<string, string>>> Global
{
get;
set;
}
public required Dictionary<string, LazyLoad<Dictionary<string, string>>> Global { get; set; }
[JsonPropertyName("menu")]
public required Dictionary<string, Dictionary<string, object>> Menu
{
get;
set;
}
public required Dictionary<string, Dictionary<string, object>> Menu { get; set; }
[JsonPropertyName("languages")]
public required Dictionary<string, string> Languages
{
get;
set;
}
public required Dictionary<string, string> Languages { get; set; }
}
@@ -11,7 +11,10 @@ public record Locations
// sometimes we get the key or value given so save changing logic in each place
// have it key both
private readonly FrozenDictionary<string, string> _locationMappings = new Dictionary<string, string>
private readonly FrozenDictionary<string, string> _locationMappings = new Dictionary<
string,
string
>
{
// EFT
{ "factory4_day", "Factory4Day" },
@@ -33,7 +36,6 @@ public record Locations
{ "woods", "Woods" },
{ "sandbox", "Sandbox" },
{ "sandbox_high", "SandboxHigh" },
// SPT
{ "Factory4Day", "Factory4Day" },
{ "Bigmap", "Bigmap" },
@@ -53,153 +55,73 @@ public record Locations
{ "Woods", "Woods" },
{ "Labyrinth", "Labyrinth" },
{ "Sandbox", "Sandbox" },
{ "SandboxHigh", "SandboxHigh" }
{ "SandboxHigh", "SandboxHigh" },
}.ToFrozenDictionary();
private Dictionary<string, Eft.Common.Location>? _locationDictionaryCache;
[JsonPropertyName("bigmap")]
public Eft.Common.Location? Bigmap
{
get;
set;
}
public Eft.Common.Location? Bigmap { get; set; }
[JsonPropertyName("develop")]
public Eft.Common.Location? Develop
{
get;
set;
}
public Eft.Common.Location? Develop { get; set; }
[JsonPropertyName("factory4_day")]
public Eft.Common.Location? Factory4Day
{
get;
set;
}
public Eft.Common.Location? Factory4Day { get; set; }
[JsonPropertyName("factory4_night")]
public Eft.Common.Location? Factory4Night
{
get;
set;
}
public Eft.Common.Location? Factory4Night { get; set; }
[JsonPropertyName("hideout")]
public Eft.Common.Location? Hideout
{
get;
set;
}
public Eft.Common.Location? Hideout { get; set; }
[JsonPropertyName("interchange")]
public Eft.Common.Location? Interchange
{
get;
set;
}
public Eft.Common.Location? Interchange { get; set; }
[JsonPropertyName("laboratory")]
public Eft.Common.Location? Laboratory
{
get;
set;
}
public Eft.Common.Location? Laboratory { get; set; }
[JsonPropertyName("lighthouse")]
public Eft.Common.Location? Lighthouse
{
get;
set;
}
public Eft.Common.Location? Lighthouse { get; set; }
[JsonPropertyName("privatearea")]
public Eft.Common.Location? PrivateArea
{
get;
set;
}
public Eft.Common.Location? PrivateArea { get; set; }
[JsonPropertyName("rezervbase")]
public Eft.Common.Location? RezervBase
{
get;
set;
}
public Eft.Common.Location? RezervBase { get; set; }
[JsonPropertyName("shoreline")]
public Eft.Common.Location? Shoreline
{
get;
set;
}
public Eft.Common.Location? Shoreline { get; set; }
[JsonPropertyName("suburbs")]
public Eft.Common.Location? Suburbs
{
get;
set;
}
public Eft.Common.Location? Suburbs { get; set; }
[JsonPropertyName("tarkovstreets")]
public Eft.Common.Location? TarkovStreets
{
get;
set;
}
public Eft.Common.Location? TarkovStreets { get; set; }
[JsonPropertyName("labyrinth")]
public Eft.Common.Location? Labyrinth
{
get;
set;
}
public Eft.Common.Location? Labyrinth { get; set; }
[JsonPropertyName("terminal")]
public Eft.Common.Location? Terminal
{
get;
set;
}
public Eft.Common.Location? Terminal { get; set; }
[JsonPropertyName("town")]
public Eft.Common.Location? Town
{
get;
set;
}
public Eft.Common.Location? Town { get; set; }
[JsonPropertyName("woods")]
public Eft.Common.Location? Woods
{
get;
set;
}
public Eft.Common.Location? Woods { get; set; }
[JsonPropertyName("sandbox")]
public Eft.Common.Location? Sandbox
{
get;
set;
}
public Eft.Common.Location? Sandbox { get; set; }
[JsonPropertyName("sandbox_high")]
public Eft.Common.Location? SandboxHigh
{
get;
set;
}
public Eft.Common.Location? SandboxHigh { get; set; }
/// <summary>
/// Holds a mapping of the linkages between locations on the UI
/// </summary>
[JsonPropertyName("base")]
public LocationsBase? Base
{
get;
set;
}
public LocationsBase? Base { get; set; }
/// <summary>
/// Get map locations as a dictionary, keyed by its name e.g. Factory4Day
@@ -227,9 +149,13 @@ public record Locations
private void HydrateDictionary()
{
var classProps = typeof(Locations).GetProperties().Where(p => p.PropertyType == typeof(Eft.Common.Location) && p.Name != "Item");
_locationDictionaryCache = classProps
.ToDictionary(propertyInfo => propertyInfo.Name, propertyInfo => propertyInfo.GetValue(this, null) as Eft.Common.Location,
StringComparer.OrdinalIgnoreCase);
var classProps = typeof(Locations)
.GetProperties()
.Where(p => p.PropertyType == typeof(Eft.Common.Location) && p.Name != "Item");
_locationDictionaryCache = classProps.ToDictionary(
propertyInfo => propertyInfo.Name,
propertyInfo => propertyInfo.GetValue(this, null) as Eft.Common.Location,
StringComparer.OrdinalIgnoreCase
);
}
}
@@ -11,16 +11,8 @@ public record ServerBase
public Dictionary<string, object> ExtensionData { get; set; }
[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; }
}
@@ -9,11 +9,7 @@ public record SettingsBase
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("config")]
public Config? Configuration
{
get;
set;
}
public Config? Configuration { get; set; }
}
public record Config
@@ -22,200 +18,88 @@ public record Config
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("AFKTimeoutSeconds")]
public int? AFKTimeoutSeconds
{
get;
set;
}
public int? AFKTimeoutSeconds { get; set; }
[JsonPropertyName("AdditionalRandomDelaySeconds")]
public int? AdditionalRandomDelaySeconds
{
get;
set;
}
public int? AdditionalRandomDelaySeconds { get; set; }
[JsonPropertyName("AudioSettings")]
public AudioSettings? AudioSettings
{
get;
set;
}
public AudioSettings? AudioSettings { get; set; }
[JsonPropertyName("ClientSendRateLimit")]
public int? ClientSendRateLimit
{
get;
set;
}
public int? ClientSendRateLimit { get; set; }
[JsonPropertyName("CriticalRetriesCount")]
public int? CriticalRetriesCount
{
get;
set;
}
public int? CriticalRetriesCount { get; set; }
[JsonPropertyName("DefaultRetriesCount")]
public int? DefaultRetriesCount
{
get;
set;
}
public int? DefaultRetriesCount { get; set; }
[JsonPropertyName("FirstCycleDelaySeconds")]
public int? FirstCycleDelaySeconds
{
get;
set;
}
public int? FirstCycleDelaySeconds { get; set; }
[JsonPropertyName("FramerateLimit")]
public FramerateLimit? FramerateLimit
{
get;
set;
}
public FramerateLimit? FramerateLimit { get; set; }
[JsonPropertyName("GroupStatusInterval")]
public int? GroupStatusInterval
{
get;
set;
}
public int? GroupStatusInterval { get; set; }
[JsonPropertyName("GroupStatusButtonInterval")]
public int? GroupStatusButtonInterval
{
get;
set;
}
public int? GroupStatusButtonInterval { get; set; }
[JsonPropertyName("KeepAliveInterval")]
public int? KeepAliveInterval
{
get;
set;
}
public int? KeepAliveInterval { get; set; }
[JsonPropertyName("LobbyKeepAliveInterval")]
public int? LobbyKeepAliveInterval
{
get;
set;
}
public int? LobbyKeepAliveInterval { get; set; }
[JsonPropertyName("Mark502and504AsNonImportant")]
public bool? Mark502and504AsNonImportant
{
get;
set;
}
public bool? Mark502and504AsNonImportant { get; set; }
[JsonPropertyName("MemoryManagementSettings")]
public MemoryManagementSettings? MemoryManagementSettings
{
get;
set;
}
public MemoryManagementSettings? MemoryManagementSettings { get; set; }
[JsonPropertyName("NVidiaHighlights")]
public bool? NVidiaHighlights
{
get;
set;
}
public bool? NVidiaHighlights { get; set; }
[JsonPropertyName("NextCycleDelaySeconds")]
public int? NextCycleDelaySeconds
{
get;
set;
}
public int? NextCycleDelaySeconds { get; set; }
[JsonPropertyName("PingServerResultSendInterval")]
public int? PingServerResultSendInterval
{
get;
set;
}
public int? PingServerResultSendInterval { get; set; }
[JsonPropertyName("PingServersInterval")]
public int? PingServersInterval
{
get;
set;
}
public int? PingServersInterval { get; set; }
[JsonPropertyName("ReleaseProfiler")]
public ReleaseProfiler? ReleaseProfiler
{
get;
set;
}
public ReleaseProfiler? ReleaseProfiler { get; set; }
[JsonPropertyName("RequestConfirmationTimeouts")]
public List<double>? RequestConfirmationTimeouts
{
get;
set;
}
public List<double>? RequestConfirmationTimeouts { get; set; }
[JsonPropertyName("RequestsMadeThroughLobby")]
public List<string>? RequestsMadeThroughLobby
{
get;
set;
}
public List<string>? RequestsMadeThroughLobby { get; set; }
[JsonPropertyName("SecondCycleDelaySeconds")]
public int? SecondCycleDelaySeconds
{
get;
set;
}
public int? SecondCycleDelaySeconds { get; set; }
[JsonPropertyName("ShouldEstablishLobbyConnection")]
public bool? ShouldEstablishLobbyConnection
{
get;
set;
}
public bool? ShouldEstablishLobbyConnection { get; set; }
[JsonPropertyName("TurnOffLogging")]
public bool? TurnOffLogging
{
get;
set;
}
public bool? TurnOffLogging { get; set; }
[JsonPropertyName("WeaponOverlapDistanceCulling")]
public int? WeaponOverlapDistanceCulling
{
get;
set;
}
public int? WeaponOverlapDistanceCulling { get; set; }
[JsonPropertyName("WebDiagnosticsEnabled")]
public bool? WebDiagnosticsEnabled
{
get;
set;
}
public bool? WebDiagnosticsEnabled { get; set; }
[JsonPropertyName("NetworkStateView")]
public NetworkStateView? NetworkStateView
{
get;
set;
}
public NetworkStateView? NetworkStateView { get; set; }
[JsonPropertyName("WsReconnectionDelays")]
public List<int>? WsReconnectionDelays
{
get;
set;
}
public List<int>? WsReconnectionDelays { get; set; }
}
public record AudioSettings
@@ -224,46 +108,22 @@ public record AudioSettings
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("AudioGroupPresets")]
public List<AudioGroupPreset>? AudioGroupPresets
{
get;
set;
}
public List<AudioGroupPreset>? AudioGroupPresets { get; set; }
[JsonPropertyName("EnvironmentSettings")]
public EnvironmentSettings? EnvironmentSettings
{
get;
set;
}
public EnvironmentSettings? EnvironmentSettings { get; set; }
[JsonPropertyName("HeadphonesSettings")]
public HeadphoneSettings HeadphonesSettings
{
get;
set;
}
public HeadphoneSettings HeadphonesSettings { get; set; }
[JsonPropertyName("MetaXRAudioPluginSettings")]
public MetaXRAudioPluginSettings? MetaXRAudioPluginSettings
{
get;
set;
}
public MetaXRAudioPluginSettings? MetaXRAudioPluginSettings { get; set; }
[JsonPropertyName("PlayerSettings")]
public PlayerSettings? PlayerSettings
{
get;
set;
}
public PlayerSettings? PlayerSettings { get; set; }
[JsonPropertyName("RadioBroadcastSettings")]
public RadioBroadcastSettings? RadioBroadcastSettings
{
get;
set;
}
public RadioBroadcastSettings? RadioBroadcastSettings { get; set; }
}
public record FramerateLimit
@@ -272,25 +132,13 @@ public record FramerateLimit
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("MaxFramerateGameLimit")]
public int? MaxFramerateGameLimit
{
get;
set;
}
public int? MaxFramerateGameLimit { get; set; }
[JsonPropertyName("MaxFramerateLobbyLimit")]
public int? MaxFramerateLobbyLimit
{
get;
set;
}
public int? MaxFramerateLobbyLimit { get; set; }
[JsonPropertyName("MinFramerateLimit")]
public int? MinFramerateLimit
{
get;
set;
}
public int? MinFramerateLimit { get; set; }
}
public record MemoryManagementSettings
@@ -299,46 +147,22 @@ public record MemoryManagementSettings
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("AggressiveGC")]
public bool? AggressiveGC
{
get;
set;
}
public bool? AggressiveGC { get; set; }
[JsonPropertyName("GigabytesRequiredToDisableGCDuringRaid")]
public int? GigabytesRequiredToDisableGCDuringRaid
{
get;
set;
}
public int? GigabytesRequiredToDisableGCDuringRaid { get; set; }
[JsonPropertyName("HeapPreAllocationEnabled")]
public bool? HeapPreAllocationEnabled
{
get;
set;
}
public bool? HeapPreAllocationEnabled { get; set; }
[JsonPropertyName("HeapPreAllocationMB")]
public int? HeapPreAllocationMB
{
get;
set;
}
public int? HeapPreAllocationMB { get; set; }
[JsonPropertyName("OverrideRamCleanerSettings")]
public bool? OverrideRamCleanerSettings
{
get;
set;
}
public bool? OverrideRamCleanerSettings { get; set; }
[JsonPropertyName("RamCleanerEnabled")]
public bool? RamCleanerEnabled
{
get;
set;
}
public bool? RamCleanerEnabled { get; set; }
}
public record ReleaseProfiler
@@ -347,25 +171,13 @@ public record ReleaseProfiler
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("Enabled")]
public bool? Enabled
{
get;
set;
}
public bool? Enabled { get; set; }
[JsonPropertyName("MaxRecords")]
public int? MaxRecords
{
get;
set;
}
public int? MaxRecords { get; set; }
[JsonPropertyName("RecordTriggerValue")]
public int? RecordTriggerValue
{
get;
set;
}
public int? RecordTriggerValue { get; set; }
}
public record NetworkStateView
@@ -374,18 +186,10 @@ public record NetworkStateView
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("LossThreshold")]
public int? LossThreshold
{
get;
set;
}
public int? LossThreshold { get; set; }
[JsonPropertyName("RttThreshold")]
public int? RttThreshold
{
get;
set;
}
public int? RttThreshold { get; set; }
}
public record AudioGroupPreset
@@ -394,74 +198,34 @@ public record AudioGroupPreset
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("AngleToAllowBinaural")]
public double? AngleToAllowBinaural
{
get;
set;
}
public double? AngleToAllowBinaural { get; set; }
[JsonPropertyName("DisabledBinauralByDistance")]
public bool? DisabledBinauralByDistance
{
get;
set;
}
public bool? DisabledBinauralByDistance { get; set; }
[JsonPropertyName("DistanceToAllowBinaural")]
public double? DistanceToAllowBinaural
{
get;
set;
}
public double? DistanceToAllowBinaural { get; set; }
[JsonPropertyName("GroupType")]
public double? GroupType
{
get;
set;
}
public double? GroupType { get; set; }
[JsonPropertyName("HeightToAllowBinaural")]
public double? HeightToAllowBinaural
{
get;
set;
}
public double? HeightToAllowBinaural { get; set; }
[JsonPropertyName("Name")]
public string? Name
{
get;
set;
}
public string? Name { get; set; }
[JsonPropertyName("OcclusionEnabled")]
public bool? OcclusionEnabled
{
get;
set;
}
public bool? OcclusionEnabled { get; set; }
[JsonPropertyName("OcclusionIntensity")]
public double? OcclusionIntensity
{
get;
set;
}
public double? OcclusionIntensity { get; set; }
[JsonPropertyName("OcclusionRolloffScale")]
public double? OcclusionRolloffScale
{
get;
set;
}
public double? OcclusionRolloffScale { get; set; }
[JsonPropertyName("OverallVolume")]
public double? OverallVolume
{
get;
set;
}
public double? OverallVolume { get; set; }
}
public record EnvironmentSettings
@@ -470,60 +234,28 @@ public record EnvironmentSettings
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("AutumnLateSettings")]
public SeasonEnvironmentSettings AutumnLateSettings
{
get;
set;
}
public SeasonEnvironmentSettings AutumnLateSettings { get; set; }
[JsonPropertyName("AutumnSettings")]
public SeasonEnvironmentSettings AutumnSettings
{
get;
set;
}
public SeasonEnvironmentSettings AutumnSettings { get; set; }
[JsonPropertyName("SpringEarlySettings")]
public SeasonEnvironmentSettings SpringEarlySettings
{
get;
set;
}
public SeasonEnvironmentSettings SpringEarlySettings { get; set; }
[JsonPropertyName("SpringSettings")]
public SeasonEnvironmentSettings SpringSettings
{
get;
set;
}
public SeasonEnvironmentSettings SpringSettings { get; set; }
[JsonPropertyName("StormSettings")]
public SeasonEnvironmentSettings StormSettings
{
get;
set;
}
public SeasonEnvironmentSettings StormSettings { get; set; }
[JsonPropertyName("SummerSettings")]
public SeasonEnvironmentSettings SummerSettings
{
get;
set;
}
public SeasonEnvironmentSettings SummerSettings { get; set; }
[JsonPropertyName("WinterSettings")]
public SeasonEnvironmentSettings WinterSettings
{
get;
set;
}
public SeasonEnvironmentSettings WinterSettings { get; set; }
[JsonPropertyName("SurfaceMultipliers")]
public List<SurfaceMultiplier>? SurfaceMultipliers
{
get;
set;
}
public List<SurfaceMultiplier>? SurfaceMultipliers { get; set; }
}
public record SeasonEnvironmentSettings
@@ -532,25 +264,13 @@ public record SeasonEnvironmentSettings
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("RainSettings")]
public List<RainSetting> RainSettings
{
get;
set;
}
public List<RainSetting> RainSettings { get; set; }
[JsonPropertyName("StepsVolumeMultiplier")]
public double StepsVolumeMultiplier
{
get;
set;
}
public double StepsVolumeMultiplier { get; set; }
[JsonPropertyName("WindMultipliers")]
public List<WindMultiplier> WindMultipliers
{
get;
set;
}
public List<WindMultiplier> WindMultipliers { get; set; }
}
public record SurfaceMultiplier
@@ -558,17 +278,9 @@ public record SurfaceMultiplier
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public string SurfaceType
{
get;
set;
}
public string SurfaceType { get; set; }
public double VolumeMult
{
get;
set;
}
public double VolumeMult { get; set; }
}
public record WindMultiplier
@@ -577,18 +289,10 @@ public record WindMultiplier
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("VolumeMult")]
public double VolumeMult
{
get;
set;
}
public double VolumeMult { get; set; }
[JsonPropertyName("WindSpeed")]
public string WindSpeed
{
get;
set;
}
public string WindSpeed { get; set; }
}
public record RainSetting
@@ -597,25 +301,13 @@ public record RainSetting
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("IndoorVolumeMult")]
public int IndoorVolumeMult
{
get;
set;
}
public int IndoorVolumeMult { get; set; }
[JsonPropertyName("OutdoorVolumeMult")]
public double OutdoorVolumeMult
{
get;
set;
}
public double OutdoorVolumeMult { get; set; }
[JsonPropertyName("RainIntensity")]
public string RainIntensity
{
get;
set;
}
public string RainIntensity { get; set; }
}
public record HeadphoneSettings
@@ -623,23 +315,11 @@ public record HeadphoneSettings
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public double FadeDuration
{
get;
set;
}
public double FadeDuration { get; set; }
public string FadeIn
{
get;
set;
}
public string FadeIn { get; set; }
public string FadeOut
{
get;
set;
}
public string FadeOut { get; set; }
}
public record MetaXRAudioPluginSettings
@@ -647,15 +327,7 @@ public record MetaXRAudioPluginSettings
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
public bool? EnabledPluginErrorChecker
{
get;
set;
}
public bool? EnabledPluginErrorChecker { get; set; }
public double? OutputVolumeCheckCooldown
{
get;
set;
}
public double? OutputVolumeCheckCooldown { get; set; }
}
@@ -10,30 +10,14 @@ public record InsuranceEquipmentPkg
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("sessionID")]
public string? SessionId
{
get;
set;
}
public string? SessionId { get; set; }
[JsonPropertyName("pmcData")]
public PmcData? PmcData
{
get;
set;
}
public PmcData? PmcData { get; set; }
[JsonPropertyName("itemToReturnToPlayer")]
public Item? ItemToReturnToPlayer
{
get;
set;
}
public Item? ItemToReturnToPlayer { get; set; }
[JsonPropertyName("traderId")]
public string? TraderId
{
get;
set;
}
public string? TraderId { get; set; }
}
@@ -8,30 +8,14 @@ public record LootItem
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("id")]
public string? Id
{
get;
set;
}
public string? Id { get; set; }
[JsonPropertyName("tpl")]
public string? Tpl
{
get;
set;
}
public string? Tpl { get; set; }
[JsonPropertyName("isPreset")]
public bool? IsPreset
{
get;
set;
}
public bool? IsPreset { get; set; }
[JsonPropertyName("stackCount")]
public int? StackCount
{
get;
set;
}
public int? StackCount { get; set; }
}
@@ -13,138 +13,82 @@ public record LootRequest
/// Count of weapons to generate
/// </summary>
[JsonPropertyName("weaponPresetCount")]
public MinMax<int>? WeaponPresetCount
{
get;
set;
}
public MinMax<int>? WeaponPresetCount { get; set; }
/// <summary>
/// Count of armor to generate
/// </summary>
[JsonPropertyName("armorPresetCount")]
public MinMax<int>? ArmorPresetCount
{
get;
set;
}
public MinMax<int>? ArmorPresetCount { get; set; }
/// <summary>
/// Count of items to generate
/// </summary>
[JsonPropertyName("itemCount")]
public MinMax<int>? ItemCount
{
get;
set;
}
public MinMax<int>? ItemCount { get; set; }
/// <summary>
/// Count of sealed weapon crates to generate
/// </summary>
[JsonPropertyName("weaponCrateCount")]
public MinMax<int>? WeaponCrateCount
{
get;
set;
}
public MinMax<int>? WeaponCrateCount { get; set; }
/// <summary>
/// Item tpl blacklist to exclude
/// </summary>
[JsonPropertyName("itemBlacklist")]
public HashSet<string>? ItemBlacklist
{
get;
set;
}
public HashSet<string>? ItemBlacklist { get; set; }
/// <summary>
/// Item tpl whitelist to pick from
/// </summary>
[JsonPropertyName("itemTypeWhitelist")]
public List<string>? ItemTypeWhitelist
{
get;
set;
}
public List<string>? ItemTypeWhitelist { get; set; }
/// <summary>
/// key: item base type: value: max count
/// </summary>
[JsonPropertyName("itemLimits")]
public Dictionary<string, int>? ItemLimits
{
get;
set;
}
public Dictionary<string, int>? ItemLimits { get; set; }
[JsonPropertyName("itemStackLimits")]
public Dictionary<string, MinMax<int>>? ItemStackLimits
{
get;
set;
}
public Dictionary<string, MinMax<int>>? ItemStackLimits { get; set; }
/// <summary>
/// Allowed armor plate levels 2/3/4/5/6 for armor generated
/// </summary>
[JsonPropertyName("armorLevelWhitelist")]
public List<int>? ArmorLevelWhitelist
{
get;
set;
}
public List<int>? ArmorLevelWhitelist { get; set; }
/// <summary>
/// Should boss items be included in allowed items
/// </summary>
[JsonPropertyName("allowBossItems")]
public bool? AllowBossItems
{
get;
set;
}
public bool? AllowBossItems { get; set; }
/// <summary>
/// Should item.json item reward blacklist be used
/// </summary>
[JsonPropertyName("useRewardItemBlacklist")]
public bool? UseRewardItemBlacklist
{
get;
set;
}
public bool? UseRewardItemBlacklist { get; set; }
/// <summary>
/// Should forced loot be used instead of randomised loot
/// </summary>
[JsonPropertyName("useForcedLoot")]
public bool? UseForcedLoot
{
get;
set;
}
public bool? UseForcedLoot { get; set; }
/// <summary>
/// Item tpls + count of items to force include
/// </summary>
[JsonPropertyName("forcedLoot")]
public Dictionary<string, MinMax<int>>? ForcedLoot
{
get;
set;
}
public Dictionary<string, MinMax<int>>? ForcedLoot { get; set; }
/// <summary>
/// Should seasonal items appear when it's not the season for them
/// </summary>
[JsonPropertyName("blockSeasonalItemsOutOfSeason")]
public bool? BlockSeasonalItemsOutOfSeason
{
get;
set;
}
public bool? BlockSeasonalItemsOutOfSeason { get; set; }
}
public record AirdropLootRequest : LootRequest
@@ -153,9 +97,5 @@ public record AirdropLootRequest : LootRequest
/// Airdrop icon used by client to show crate type
/// </summary>
[JsonPropertyName("icon")]
public AirdropTypeEnum? Icon
{
get;
set;
}
public AirdropTypeEnum? Icon { get; set; }
}
@@ -16,5 +16,4 @@ namespace SPTarkov.Server.Core.Models.Spt.Services
public RaidChanges? RaidAdjustments { get; set; } = null;
public LocationTransit? LocationTransit { get; set; } = null;
}
}
@@ -10,39 +10,19 @@ public record TraderServiceModel
[JsonPropertyName("serviceType")]
[JsonConverter(typeof(JsonStringEnumConverter))]
public TraderServiceType? ServiceType
{
get;
set;
}
public TraderServiceType? ServiceType { get; set; }
[JsonPropertyName("itemsToPay")]
public Dictionary<string, int>? ItemsToPay
{
get;
set;
}
public Dictionary<string, int>? ItemsToPay { get; set; }
[JsonPropertyName("itemsToReceive")]
public List<string>? ItemsToReceive
{
get;
set;
}
public List<string>? ItemsToReceive { get; set; }
[JsonPropertyName("subServices")]
public Dictionary<string, int>? SubServices
{
get;
set;
}
public Dictionary<string, int>? SubServices { get; set; }
[JsonPropertyName("requirements")]
public TraderServiceRequirementsModel? Requirements
{
get;
set;
}
public TraderServiceRequirementsModel? Requirements { get; set; }
}
public record TraderServiceRequirementsModel
@@ -51,16 +31,8 @@ public record TraderServiceRequirementsModel
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("completedQuests")]
public List<string>? CompletedQuests
{
get;
set;
}
public List<string>? CompletedQuests { get; set; }
[JsonPropertyName("standings")]
public Dictionary<string, double>? Standings
{
get;
set;
}
public Dictionary<string, double>? Standings { get; set; }
}
@@ -10,118 +10,62 @@ public record Templates
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("character")]
public List<string>? Character
{
get;
set;
}
public List<string>? Character { get; set; }
[JsonPropertyName("customisationStorage")]
public List<CustomisationStorage>? CustomisationStorage
{
get;
set;
}
public List<CustomisationStorage>? CustomisationStorage { get; set; }
[JsonPropertyName("items")]
public Dictionary<string, TemplateItem>? Items
{
get;
set;
}
public Dictionary<string, TemplateItem>? Items { get; set; }
[JsonPropertyName("prestige")]
public Prestige? Prestige
{
get;
set;
}
public Prestige? Prestige { get; set; }
[JsonPropertyName("quests")]
public Dictionary<string, Quest>? Quests
{
get;
set;
}
public Dictionary<string, Quest>? Quests { get; set; }
[JsonPropertyName("repeatableQuests")]
public RepeatableQuestDatabase? RepeatableQuests
{
get;
set;
}
public RepeatableQuestDatabase? RepeatableQuests { get; set; }
[JsonPropertyName("handbook")]
public HandbookBase? Handbook
{
get;
set;
}
public HandbookBase? Handbook { get; set; }
[JsonPropertyName("customization")]
public Dictionary<string, CustomizationItem>? Customization
{
get;
set;
}
public Dictionary<string, CustomizationItem>? Customization { get; set; }
/// <summary>
/// The profile templates listed in the launcher on profile creation, split by account type (e.g. Standard) then side (e.g. bear/usec)
/// </summary>
[JsonPropertyName("profiles")]
public Dictionary<string, ProfileSides>? Profiles
{
get;
set;
}
public Dictionary<string, ProfileSides>? Profiles { get; set; }
/// <summary>
/// Flea prices of items - gathered from online flea market dump
/// </summary>
[JsonPropertyName("prices")]
public Dictionary<string, double>? Prices
{
get;
set;
}
public Dictionary<string, double>? Prices { get; set; }
/// <summary>
/// Default equipment loadouts that show on main inventory screen
/// </summary>
[JsonPropertyName("defaultEquipmentPresets")]
public List<DefaultEquipmentPreset>? DefaultEquipmentPresets
{
get;
set;
}
public List<DefaultEquipmentPreset>? DefaultEquipmentPresets { get; set; }
/// <summary>
/// Achievements
/// </summary>
[JsonPropertyName("achievements")]
public List<Achievement>? Achievements
{
get;
set;
}
public List<Achievement>? Achievements { get; set; }
/// <summary>
/// Achievements
/// </summary>
[JsonPropertyName("customAchievements")]
public List<Achievement>? CustomAchievements
{
get;
set;
}
public List<Achievement>? CustomAchievements { get; set; }
/// <summary>
/// Location services data
/// </summary>
[JsonPropertyName("locationServices")]
public LocationServices? LocationServices
{
get;
set;
}
public LocationServices? LocationServices { get; set; }
}
@@ -9,16 +9,8 @@ public record GetLocalWeatherResponseData
public Dictionary<string, object> ExtensionData { get; set; }
[JsonPropertyName("season")]
public Season? Season
{
get;
set;
}
public Season? Season { get; set; }
[JsonPropertyName("weather")]
public List<Eft.Weather.Weather>? Weather
{
get;
set;
}
public List<Eft.Weather.Weather>? Weather { get; set; }
}