.NET Format Style Fixes
This commit is contained in:
@@ -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; }
|
||||
}
|
||||
|
||||
+3
-11
@@ -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; }
|
||||
}
|
||||
|
||||
+2
-10
@@ -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; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user