Remove unused properties from configs, cleanup nullability

This commit is contained in:
Archangel
2025-07-12 14:24:21 +02:00
parent 5eaf177f67
commit 73269806cc
26 changed files with 60 additions and 436 deletions
@@ -436,27 +436,7 @@
"weaponModLimits": {
"lightLaserLimit": 2,
"scopeLimit": 1
},
"weightingAdjustmentsByPlayerLevel": [
{
"equipment": {
"add": {},
"edit": {
"FaceCover": {
"572b7fa524597762b747ce82": 30
},
"FirstPrimaryWeapon": {
"54491c4f4bdc2db1078b4568": 90,
"5a38e6bac4a2826c6e06d79b": 90
}
}
},
"levelRange": {
"max": 6,
"min": 1
}
}
]
}
},
"assaultgroup": {},
"bossboar": {
@@ -2853,45 +2833,6 @@
"tagillaHelperAgro": 5,
"test": 30
},
"revenge": {
"arenaFighter": [
"pmcBot",
"gifter"
],
"arenaFighterEvent": [
"pmcBot",
"gifter"
],
"bossKnight": [
"exUsec",
"gifter",
"bossKnight",
"followerBigPipe",
"followerBirdEye"
],
"exUsec": [
"exUsec",
"gifter",
"bossKnight",
"followerBigPipe",
"followerBirdEye"
],
"followerBigPipe": [
"exUsec",
"gifter",
"bossKnight",
"followerBigPipe",
"followerBirdEye"
],
"pmcBot": [
"pmcBot",
"gifter"
],
"spiritWinter": [
"pmcBot",
"gifter"
]
},
"secureContainerAmmoStackCount": 20,
"showTypeInNickname": false,
"walletLoot": {
@@ -439,7 +439,6 @@
],
"sender": "System",
"messageText": "Merry christmas!",
"timestampToSend": 42069,
"associatedEvent": "Christmas",
"collectionTimeHours": 48,
"maxToSendPlayer": 1
@@ -579,7 +578,6 @@
],
"sender": "System",
"messageText": "1CLICKDRESSUP",
"timestampToSend": 42069,
"collectionTimeHours": 48,
"associatedEvent": "Promo",
"maxToSendPlayer": 1
@@ -722,7 +720,6 @@
],
"sender": "System",
"messageText": "BARMALEY",
"timestampToSend": 42069,
"collectionTimeHours": 48,
"associatedEvent": "Promo",
"maxToSendPlayer": 1
@@ -792,7 +789,6 @@
],
"sender": "System",
"messageText": "S00NS00N",
"timestampToSend": 42069,
"collectionTimeHours": 48,
"associatedEvent": "Promo",
"maxToSendPlayer": 1
@@ -942,7 +938,6 @@
],
"sender": "System",
"messageText": "TRAMBON",
"timestampToSend": 42069,
"collectionTimeHours": 48,
"associatedEvent": "Promo",
"maxToSendPlayer": 1
@@ -1020,7 +1015,6 @@
],
"sender": "System",
"messageText": "PINEWOOD",
"timestampToSend": 42069,
"collectionTimeHours": 48,
"associatedEvent": "Promo",
"maxToSendPlayer": 1
@@ -1428,7 +1422,6 @@
"messageText": "JONKLER NO",
"collectionTimeHours": 48,
"associatedEvent": "Promo",
"maxToSendToPlayer": 1,
"maxToSendPlayer": 1
},
"BSGBIRTHDAY2023": {
@@ -1,10 +1,8 @@
{
"healthMultipliers": {
"death": 0.3,
"blacked": 0.1
},
"save": {
"health": true,
"effects": true
"health": true
}
}
@@ -17,7 +17,6 @@
"max": 1.4
},
"bonusChanceMultiplier": 0.25,
"bonusAmountMultiplier": 0.43,
"highValueThresholdRub": 70000,
"hideoutTaskRewardTimeSeconds": 21600,
"hideoutCraftSacrificeThresholdRub": 400000,
@@ -3,8 +3,6 @@
"port": 6969,
"backendIp": "127.0.0.1",
"backendPort": 6969,
"webSocketPingDelayMs": 90000,
"logRequests": true,
"serverImagePathOverride": {},
"certificatePassword": ""
"serverImagePathOverride": {}
}
@@ -9,9 +9,6 @@
"randomWeather": false,
"randomTime": false
},
"save": {
"loot": true
},
"carExtracts": ["Dorms V-Ex", "PP Exfil", "V-Ex_light", "South V-Ex", "E7_car", "Sandbox_VExit", "Shorl_V-Ex"],
"coopExtracts": [
"Interchange Cooperation",
@@ -25,7 +22,6 @@
"carExtractBaseStandingGain": 0.2,
"coopExtractBaseStandingGain": 0.25,
"scavExtractStandingGain": 0.01,
"pmcKillProbabilityForScavGain": 0.2,
"keepFiRSecureContainerOnDeath": false,
"alwaysKeepFoundInRaidOnRaidEnd": false,
"playerScavHostileChancePercent": 15
@@ -3,8 +3,6 @@
"54cb50c76803fa8b248b4571": 85,
"54cb57776803fa99248b456e": 95
},
"blacklistedEquipment": ["SpecialSlot1", "SpecialSlot2", "SpecialSlot3"],
"slotIdsToAlwaysRemove": ["cartridges", "patron_in_weapon"],
"returnTimeOverrideSeconds": 0,
"storageTimeOverrideSeconds": 0,
"runIntervalSeconds": 600,
@@ -1,5 +1,4 @@
{
"newItemsMarkedFound": false,
"randomLootContainers": {
"634959225289190e5e773b3b": {
"rewardCount": 6,
@@ -1,15 +1,3 @@
{
"enabled": false,
"randomiseMapContainers": {
"tarkovstreets": false,
"factory4_day": false,
"factory4_night": false,
"bigmap": false,
"woods": false,
"shoreline": false,
"interchange": false,
"lighthouse": false,
"laboratory": false,
"rezervbase": false
}
"enabled": false
}
@@ -77,7 +77,6 @@
"whitelist": {}
}
},
"labsAccessCardChancePercent": 0,
"lootItemsToAddChancePercent": {}
},
"-6": {
@@ -420,7 +420,6 @@
}
},
"forceHealingItemsIntoSecure": true,
"addPrefixToSameNamePMCAsPlayerChance": 40,
"allPMCsHavePlayerNameWithRandomPrefixChance": 1,
"locationSpecificPmcLevelOverride": {
"sandbox": {
@@ -1,7 +1,6 @@
{
"priceMultiplier": 1,
"applyRandomizeDurabilityLoss": true,
"weaponSkillRepairGain": 4.06,
"armorKitSkillPointGainPerRepairPointMultiplier": 0.05,
"repairKitIntellectGainMultiplier": {
"weapon": 0.045,
@@ -38,13 +38,6 @@ public record BotConfig : BaseConfig
RandomisedResourceDetails
> LootItemResourceRandomization { get; set; }
/// <summary>
/// Control what bots are added to a bots revenge list <br />
/// key: bottype, value: bottypes to revenge on seeing their death
/// </summary>
[JsonPropertyName("revenge")]
public required Dictionary<string, List<string>> Revenge { get; set; }
/// <summary>
/// Control how many items are allowed to spawn on a bot <br />
/// key: bottype, value: <br />
@@ -162,7 +155,7 @@ public record WeeklyBossSettings
/// Bosses that can be picked
/// </summary>
[JsonPropertyName("bossPool")]
public List<WildSpawnType> BossPool { get; set; }
public required List<WildSpawnType> BossPool { get; set; }
/// <summary>
/// Day of week boss choice resets
@@ -172,150 +165,6 @@ public record WeeklyBossSettings
public DayOfWeek ResetDay { get; set; }
}
/// <summary>
/// Number of bots to generate and store in cache on raid start per bot type
/// </summary>
public record PresetBatch
{
[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }
[JsonPropertyName("assault")]
public int Assault { get; set; }
[JsonPropertyName("bossBully")]
public int BossBully { get; set; }
[JsonPropertyName("bossGluhar")]
public int BossGluhar { get; set; }
[JsonPropertyName("bossKilla")]
public int BossKilla { get; set; }
[JsonPropertyName("bossKojaniy")]
public int BossKojaniy { get; set; }
[JsonPropertyName("bossSanitar")]
public int BossSanitar { get; set; }
[JsonPropertyName("bossTagilla")]
public int BossTagilla { get; set; }
[JsonPropertyName("bossKnight")]
public int BossKnight { get; set; }
[JsonPropertyName("bossZryachiy")]
public int BossZryachiy { get; set; }
[JsonPropertyName("bossKolontay")]
public int BossKolontay { get; set; }
[JsonPropertyName("bossPartisan")]
public int BossPartisan { get; set; }
[JsonPropertyName("bossTest")]
public int BossTest { get; set; }
[JsonPropertyName("cursedAssault")]
public int CursedAssault { get; set; }
[JsonPropertyName("followerBully")]
public int FollowerBully { get; set; }
[JsonPropertyName("followerGluharAssault")]
public int FollowerGluharAssault { get; set; }
[JsonPropertyName("followerGluharScout")]
public int FollowerGluharScout { get; set; }
[JsonPropertyName("followerGluharSecurity")]
public int FollowerGluharSecurity { get; set; }
[JsonPropertyName("followerGluharSnipe")]
public int FollowerGluharSnipe { get; set; }
[JsonPropertyName("followerKojaniy")]
public int FollowerKojaniy { get; set; }
[JsonPropertyName("followerSanitar")]
public int FollowerSanitar { get; set; }
[JsonPropertyName("followerTagilla")]
public int FollowerTagilla { get; set; }
[JsonPropertyName("followerBirdEye")]
public int FollowerBirdEye { get; set; }
[JsonPropertyName("followerBigPipe")]
public int FollowerBigPipe { get; set; }
[JsonPropertyName("followerTest")]
public int FollowerTest { get; set; }
[JsonPropertyName("followerBoar")]
public int FollowerBoar { get; set; }
[JsonPropertyName("followerBoarClose1")]
public int FollowerBoarClose1 { get; set; }
[JsonPropertyName("followerBoarClose2")]
public int FollowerBoarClose2 { get; set; }
[JsonPropertyName("followerZryachiy")]
public int FollowerZryachiy { get; set; }
[JsonPropertyName("followerKolontayAssault")]
public int FollowerKolontayAssault { get; set; }
[JsonPropertyName("followerKolontaySecurity")]
public int FollowerKolontaySecurity { get; set; }
[JsonPropertyName("marksman")]
public int Marksman { get; set; }
[JsonPropertyName("pmcBot")]
public int PmcBot { get; set; }
[JsonPropertyName("sectantPriest")]
public int SectantPriest { get; set; }
[JsonPropertyName("sectantWarrior")]
public int SectantWarrior { get; set; }
[JsonPropertyName("gifter")]
public int Gifter { get; set; }
[JsonPropertyName("test")]
public int Test { get; set; }
[JsonPropertyName("exUsec")]
public int ExUsec { get; set; }
[JsonPropertyName("arenaFighterEvent")]
public int ArenaFighterEvent { get; set; }
[JsonPropertyName("arenaFighter")]
public int ArenaFighter { get; set; }
[JsonPropertyName("crazyAssaultEvent")]
public int CrazyAssaultEvent { get; set; }
[JsonPropertyName("bossBoar")]
public int BossBoar { get; set; }
[JsonPropertyName("bossBoarSniper")]
public int BossBoarSniper { get; set; }
[JsonPropertyName("pmcUSEC")]
public int PmcUSEC { get; set; }
[JsonPropertyName("pmcBEAR")]
public int PmcBEAR { get; set; }
[JsonPropertyName("shooterBTR")]
public int ShooterBTR { get; set; }
}
public record WalletLootSettings
{
[JsonExtensionData]
@@ -352,49 +201,13 @@ public record EquipmentFilters
/// Limits for mod types per weapon .e.g. scopes
/// </summary>
[JsonPropertyName("weaponModLimits")]
public ModLimits WeaponModLimits { get; set; }
public ModLimits? WeaponModLimits { get; set; }
/// <summary>
/// Whitelist for weapon sight types allowed per gun
/// </summary>
[JsonPropertyName("weaponSightWhitelist")]
public Dictionary<MongoId, List<MongoId>> WeaponSightWhitelist { get; set; }
/// <summary>
/// Chance face shield is down/active
/// </summary>
[JsonPropertyName("faceShieldIsActiveChancePercent")]
public double? FaceShieldIsActiveChancePercent { get; set; }
/// <summary>
/// Chance gun flashlight is active during the day
/// </summary>
[JsonPropertyName("lightIsActiveDayChancePercent")]
public double? LightIsActiveDayChancePercent { get; set; }
/// <summary>
/// Chance gun flashlight is active during the night
/// </summary>
[JsonPropertyName("lightIsActiveNightChancePercent")]
public double? LightIsActiveNightChancePercent { get; set; }
/// <summary>
/// Chance gun laser is active during the day
/// </summary>
[JsonPropertyName("laserIsActiveChancePercent")]
public double? LaserIsActiveChancePercent { get; set; }
/// <summary>
/// Chance NODS are down/active during the day
/// </summary>
[JsonPropertyName("nvgIsActiveChanceDayPercent")]
public double? NvgIsActiveChanceDayPercent { get; set; }
/// <summary>
/// Chance NODS are down/active during the night
/// </summary>
[JsonPropertyName("nvgIsActiveChanceNightPercent")]
public double? NvgIsActiveChanceNightPercent { get; set; }
public Dictionary<MongoId, List<MongoId>>? WeaponSightWhitelist { get; set; }
[JsonPropertyName("forceOnlyArmoredRigWhenNoArmor")]
public bool? ForceOnlyArmoredRigWhenNoArmor { get; set; }
@@ -415,31 +228,25 @@ public record EquipmentFilters
/// Adjust weighting/chances of items on bot by level of bot
/// </summary>
[JsonPropertyName("randomisation")]
public List<RandomisationDetails> Randomisation { get; set; }
public List<RandomisationDetails>? Randomisation { get; set; }
/// <summary>
/// Blacklist equipment by level of bot
/// </summary>
[JsonPropertyName("blacklist")]
public List<EquipmentFilterDetails> Blacklist { get; set; }
public List<EquipmentFilterDetails>? Blacklist { get; set; }
/// <summary>
/// Whitelist equipment by level of bot
/// </summary>
[JsonPropertyName("whitelist")]
public List<EquipmentFilterDetails> Whitelist { get; set; }
public List<EquipmentFilterDetails>? Whitelist { get; set; }
/// <summary>
/// Adjust equipment/ammo
/// </summary>
[JsonPropertyName("weightingAdjustmentsByBotLevel")]
public List<WeightingAdjustmentDetails> WeightingAdjustmentsByBotLevel { get; set; }
/// <summary>
/// Same as weightingAdjustments but based on player level instead of bot level
/// </summary>
[JsonPropertyName("weightingAdjustmentsByPlayerLevel")]
public List<WeightingAdjustmentDetails>? WeightingAdjustmentsByPlayerLevel { get; set; }
public List<WeightingAdjustmentDetails>? WeightingAdjustmentsByBotLevel { get; set; }
/// <summary>
/// Should the stock mod be forced to spawn on bot
@@ -481,7 +288,7 @@ public record RandomisationDetails
/// Between what levels do these randomisation setting apply to
/// </summary>
[JsonPropertyName("levelRange")]
public MinMax<int> LevelRange { get; set; }
public required MinMax<int> LevelRange { get; set; }
[JsonPropertyName("generation")]
public Dictionary<string, GenerationData>? Generation { get; set; }
@@ -535,10 +342,7 @@ public record NighttimeChanges
/// Applies changes to values stored in equipmentMods
/// </summary>
[JsonPropertyName("equipmentModsModifiers")]
public Dictionary<string, float> EquipmentModsModifiers { get; set; }
[JsonPropertyName("weaponModsModifiers")]
public Dictionary<string, float> WeaponModsModifiers { get; set; } // TODO: currently not in use anywhere
public required Dictionary<string, float> EquipmentModsModifiers { get; set; }
}
public record EquipmentFilterDetails
@@ -580,7 +384,7 @@ public record WeightingAdjustmentDetails
/// Between what levels do these weight settings apply to
/// </summary>
[JsonPropertyName("levelRange")]
public MinMax<int> LevelRange { get; set; }
public required MinMax<int> LevelRange { get; set; }
/// <summary>
/// Key: ammo type e.g. Caliber556x45NATO, value: item tpl + weight
@@ -607,10 +411,10 @@ public record AdjustmentDetails
public Dictionary<string, object>? ExtensionData { get; set; }
[JsonPropertyName("add")]
public Dictionary<string, Dictionary<string, float>> Add { get; set; }
public Dictionary<string, Dictionary<string, float>>? Add { get; set; }
[JsonPropertyName("edit")]
public Dictionary<string, Dictionary<string, float>> Edit { get; set; }
public Dictionary<string, Dictionary<string, float>>? Edit { get; set; }
}
public class ArmorPlateWeights
@@ -619,10 +423,10 @@ public class ArmorPlateWeights
public Dictionary<string, object>? ExtensionData { get; set; }
[JsonPropertyName("levelRange")]
public MinMax<int> LevelRange { get; set; }
public required MinMax<int> LevelRange { get; set; }
[JsonPropertyName("values")]
public Dictionary<string, Dictionary<string, double>> Values { get; set; }
public required Dictionary<string, Dictionary<string, double>> Values { get; set; }
}
public record RandomisedResourceDetails
@@ -631,10 +435,10 @@ public record RandomisedResourceDetails
public Dictionary<string, object>? ExtensionData { get; set; }
[JsonPropertyName("food")]
public RandomisedResourceValues Food { get; set; }
public RandomisedResourceValues? Food { get; set; }
[JsonPropertyName("meds")]
public RandomisedResourceValues Meds { get; set; }
public RandomisedResourceValues? Meds { get; set; }
}
public record RandomisedResourceValues
@@ -32,12 +32,6 @@ public record Gift
[JsonPropertyName("sender")]
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; }
[JsonPropertyName("senderDetails")]
public UserDialogInfo? SenderDetails { get; set; }
@@ -56,12 +50,6 @@ public record Gift
[JsonPropertyName("localeTextId")]
public string? LocaleTextId { get; set; }
/// <summary>
/// Optional - Used by Seasonal events to send on specific day
/// </summary>
[JsonPropertyName("timestampToSend")]
public long? TimestampToSend { get; set; }
[JsonPropertyName("associatedEvent")]
public SeasonalEventType AssociatedEvent { get; set; }
@@ -76,7 +64,4 @@ public record Gift
[JsonPropertyName("maxToSendPlayer")]
public int? MaxToSendPlayer { get; set; }
[JsonPropertyName("maxToSendToPlayer")]
public int? MaxToSendToPlayer { get; set; }
}
@@ -19,9 +19,6 @@ public record HealthMultipliers
[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }
[JsonPropertyName("death")]
public double Death { get; set; }
[JsonPropertyName("blacked")]
public double Blacked { get; set; }
}
@@ -33,7 +30,4 @@ public record HealthSave
[JsonPropertyName("health")]
public bool Health { get; set; }
[JsonPropertyName("effects")]
public bool Effects { get; set; }
}
@@ -81,12 +81,6 @@ public record CultistCircleSettings
[JsonPropertyName("rewardPriceMultiplerMinMax")]
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; }
[JsonPropertyName("bonusChanceMultiplier")]
public double BonusChanceMultiplier { get; set; }
@@ -25,9 +25,6 @@ public record HttpConfig : BaseConfig
[JsonPropertyName("backendPort")]
public required int BackendPort { get; set; }
[JsonPropertyName("webSocketPingDelayMs")]
public required int WebSocketPingDelayMs { get; set; }
[JsonPropertyName("logRequests")]
public required bool LogRequests { get; set; }
@@ -36,7 +33,4 @@ public record HttpConfig : BaseConfig
/// </summary>
[JsonPropertyName("serverImagePathOverride")]
public required Dictionary<string, string> ServerImagePathOverride { get; set; }
[JsonPropertyName("certificatePassword")]
public required string CertificatePassword { get; set; }
}
@@ -13,12 +13,6 @@ public record InRaidConfig : BaseConfig
[JsonPropertyName("raidMenuSettings")]
public required RaidMenuSettings RaidMenuSettings { get; set; }
/// <summary>
/// What effects should be saved post-raid
/// </summary>
[JsonPropertyName("save")]
public RaidSave Save { get; set; }
/// <summary>
/// Names of car extracts
/// </summary>
@@ -49,12 +43,6 @@ public record InRaidConfig : BaseConfig
[JsonPropertyName("scavExtractStandingGain")]
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; }
/// <summary>
/// On death should items in your secure keep their Find in raid status regardless of how you finished the raid
/// </summary>
@@ -103,15 +91,3 @@ public record RaidMenuSettings
[JsonPropertyName("randomTime")]
public bool RandomTime { get; set; }
}
public record RaidSave
{
[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }
/// <summary>
/// Should loot gained from raid be saved
/// </summary>
[JsonPropertyName("loot")]
public bool Loot { get; set; }
}
@@ -14,18 +14,6 @@ public record InsuranceConfig : BaseConfig
[JsonPropertyName("returnChancePercent")]
public Dictionary<MongoId, double> ReturnChancePercent { get; set; } = [];
/// <summary>
/// Item slots that should never be returned as insurance
/// </summary>
[JsonPropertyName("blacklistedEquipment")]
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; } = [];
/// <summary>
/// Override to control how quickly insurance is processed/returned in seconds
/// </summary>
@@ -8,12 +8,6 @@ public record InventoryConfig : BaseConfig
[JsonPropertyName("kind")]
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; }
[JsonPropertyName("randomLootContainers")]
public required Dictionary<MongoId, RewardDetails> RandomLootContainers { get; set; }
@@ -9,7 +9,4 @@ public record MatchConfig : BaseConfig
[JsonPropertyName("enabled")]
public bool Enabled { get; set; }
[JsonPropertyName("randomiseMapContainers")]
public required Dictionary<string, bool> RandomiseMapContainers { get; set; }
}
@@ -31,9 +31,6 @@ public record KarmaLevel
[JsonPropertyName("equipmentBlacklist")]
public required Dictionary<EquipmentSlots, List<MongoId>> EquipmentBlacklist { get; set; }
[JsonPropertyName("labsAccessCardChancePercent")]
public double? LabsAccessCardChancePercent { get; set; }
[JsonPropertyName("lootItemsToAddChancePercent")]
public required Dictionary<MongoId, double> LootItemsToAddChancePercent { get; set; }
}
@@ -148,9 +148,6 @@ public record PmcConfig : BaseConfig
[JsonPropertyName("addSecureContainerLootFromBotConfig")]
public required bool AddSecureContainerLootFromBotConfig { get; set; }
[JsonPropertyName("addPrefixToSameNamePMCAsPlayerChance")]
public required int? AddPrefixToSameNamePMCAsPlayerChance { get; set; }
[JsonPropertyName("lootItemLimitsRub")]
public required List<MinMaxLootItemValue>? LootItemLimitsRub { get; set; }
@@ -18,13 +18,13 @@ public record RagfairConfig : BaseConfig
/// Default values used to hydrate `runIntervalSeconds` with
/// </summary>
[JsonPropertyName("runIntervalValues")]
public RunIntervalValues RunIntervalValues { get; set; }
public required RunIntervalValues RunIntervalValues { get; set; }
/// <summary>
/// Player listing settings
/// </summary>
[JsonPropertyName("sell")]
public Sell Sell { get; set; }
public required Sell Sell { get; set; }
/// <summary>
/// Trader ids + should their assorts be listed on flea
@@ -33,10 +33,10 @@ public record RagfairConfig : BaseConfig
public required Dictionary<MongoId, bool> Traders { get; set; }
[JsonPropertyName("dynamic")]
public Dynamic Dynamic { get; set; }
public required Dynamic Dynamic { get; set; }
[JsonPropertyName("tieredFlea")]
public TieredFlea TieredFlea { get; set; }
public required TieredFlea TieredFlea { get; set; }
}
public record Sell
@@ -54,13 +54,13 @@ public record Sell
/// Settings to control chances of offer being sold
/// </summary>
[JsonPropertyName("chance")]
public Chance Chance { get; set; }
public required 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 required MinMax<double> Time { get; set; }
/// <summary>
/// Seconds from clicking remove to remove offer from market
@@ -120,16 +120,16 @@ public record Dynamic
/// Barter offer specific settings
/// </summary>
[JsonPropertyName("barter")]
public BarterDetails Barter { get; set; }
public required BarterDetails Barter { get; set; }
[JsonPropertyName("pack")]
public PackDetails Pack { get; set; }
public required PackDetails Pack { get; set; }
/// <summary>
/// Dynamic offer price below handbook adjustment values
/// </summary>
[JsonPropertyName("offerAdjustment")]
public OfferAdjustment OfferAdjustment { get; set; }
public required OfferAdjustment OfferAdjustment { get; set; }
/// <summary>
/// How many offers should expire before an offer regeneration occurs
@@ -141,13 +141,13 @@ public record Dynamic
/// How many offers should be listed
/// </summary>
[JsonPropertyName("offerItemCount")]
public Dictionary<string, MinMax<int>> OfferItemCount { get; set; }
public required 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 required PriceRanges PriceRanges { get; set; }
/// <summary>
/// Should default presets to listed only or should non-standard presets found in globals.json be listed too
@@ -159,40 +159,40 @@ public record Dynamic
/// 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<MongoId> IgnoreQualityPriceVarianceBlacklist { get; set; }
public required HashSet<MongoId> IgnoreQualityPriceVarianceBlacklist { get; set; }
[JsonPropertyName("endTimeSeconds")]
public MinMax<int> EndTimeSeconds { get; set; }
public required MinMax<int> EndTimeSeconds { get; set; }
/// <summary>
/// Settings to control the durability range of item items listed on flea
/// </summary>
[JsonPropertyName("condition")]
public Dictionary<MongoId, Condition> Condition { get; set; }
public required Dictionary<MongoId, 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 required 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 required MinMax<int> NonStackableCount { get; set; }
/// <summary>
/// Range of rating offers for items being listed
/// </summary>
[JsonPropertyName("rating")]
public MinMax<double> Rating { get; set; }
public required MinMax<double> Rating { get; set; }
/// <summary>
/// Armor specific flea settings
/// </summary>
[JsonPropertyName("armor")]
public ArmorSettings Armor { get; set; }
public required ArmorSettings Armor { get; set; }
/// <summary>
/// A multipler to apply to individual tpls price just prior to item quality adjustment
@@ -207,13 +207,13 @@ public record Dynamic
/// Percentages to sell offers in each currency
/// </summary>
[JsonPropertyName("currencies")]
public Dictionary<MongoId, double> Currencies { get; set; }
public required Dictionary<MongoId, double> Currencies { get; set; }
/// <summary>
/// Item tpls that should be forced to sell as a single item
/// </summary>
[JsonPropertyName("showAsSingleStack")]
public HashSet<MongoId> ShowAsSingleStack { get; set; }
public required HashSet<MongoId> ShowAsSingleStack { get; set; }
/// <summary>
/// Should christmas/halloween items be removed from flea when not within the seasonal bounds
@@ -225,19 +225,19 @@ public record Dynamic
/// Flea blacklist settings
/// </summary>
[JsonPropertyName("blacklist")]
public RagfairBlacklist Blacklist { get; set; }
public required RagfairBlacklist Blacklist { get; set; }
/// <summary>
/// Dict of price limits keyed by item type
/// </summary>
[JsonPropertyName("unreasonableModPrices")]
public Dictionary<MongoId, UnreasonableModPrices> UnreasonableModPrices { get; set; }
public required Dictionary<MongoId, UnreasonableModPrices> UnreasonableModPrices { get; set; }
/// <summary>
/// Custom rouble prices for items to override values from prices.json
/// </summary>
[JsonPropertyName("itemPriceOverrideRouble")]
public Dictionary<MongoId, double> ItemPriceOverrideRouble { get; set; }
public required Dictionary<MongoId, double> ItemPriceOverrideRouble { get; set; }
}
public record PriceRanges
@@ -246,13 +246,13 @@ public record PriceRanges
public Dictionary<string, object>? ExtensionData { get; set; }
[JsonPropertyName("default")]
public MinMax<double> Default { get; set; }
public required MinMax<double> Default { get; set; }
[JsonPropertyName("preset")]
public MinMax<double> Preset { get; set; }
public required MinMax<double> Preset { get; set; }
[JsonPropertyName("pack")]
public MinMax<double> Pack { get; set; }
public required MinMax<double> Pack { get; set; }
}
public record BarterDetails
@@ -300,7 +300,7 @@ public record BarterDetails
/// Item Tpls to never be turned into a barter
/// </summary>
[JsonPropertyName("itemTypeBlacklist")]
public HashSet<MongoId> ItemTypeBlacklist { get; set; }
public required HashSet<MongoId> ItemTypeBlacklist { get; set; }
}
public record PackDetails
@@ -330,7 +330,7 @@ public record PackDetails
/// item types to allow being a pack
/// </summary>
[JsonPropertyName("itemTypeWhitelist")]
public HashSet<MongoId> ItemTypeWhitelist { get; set; }
public required HashSet<MongoId> ItemTypeWhitelist { get; set; }
}
public record OfferAdjustment
@@ -375,13 +375,13 @@ public record Condition
public double ConditionChance { get; set; }
[JsonPropertyName("current")]
public MinMax<double> Current { get; set; }
public required MinMax<double> Current { get; set; }
[JsonPropertyName("max")]
public MinMax<double> Max { get; set; }
public required MinMax<double> Max { get; set; }
[JsonPropertyName("_name")]
public string Name { get; set; }
public string? Name { get; set; }
}
public record RagfairBlacklist
@@ -399,7 +399,7 @@ public record RagfairBlacklist
/// Custom blacklist for item Tpls
/// </summary>
[JsonPropertyName("custom")]
public HashSet<MongoId> Custom { get; set; }
public required HashSet<MongoId> Custom { get; set; }
/// <summary>
/// BSG blacklist a large number of items from flea, true = use blacklist
@@ -423,7 +423,7 @@ public record RagfairBlacklist
/// Maximum level an armor plate can be found in a flea-listed armor item
/// </summary>
[JsonPropertyName("armorPlate")]
public ArmorPlateBlacklistSettings ArmorPlate { get; set; }
public required ArmorPlateBlacklistSettings ArmorPlate { get; set; }
/// <summary>
/// Should specific categories be blacklisted from the flea, true = use blacklist
@@ -435,7 +435,7 @@ public record RagfairBlacklist
/// Custom category blacklist for parent Ids
/// </summary>
[JsonPropertyName("customItemCategoryList")]
public HashSet<string> CustomItemCategoryList { get; set; }
public required HashSet<string> CustomItemCategoryList { get; set; }
}
public record ArmorPlateBlacklistSettings
@@ -453,7 +453,7 @@ public record ArmorPlateBlacklistSettings
/// Item slots to NOT remove from items on flea
/// </summary>
[JsonPropertyName("ignoreSlots")]
public HashSet<string> IgnoreSlots { get; set; }
public required HashSet<string> IgnoreSlots { get; set; }
}
public record UnreasonableModPrices
@@ -480,7 +480,7 @@ public record UnreasonableModPrices
public int NewPriceHandbookMultiplier { get; set; }
[JsonPropertyName("itemType")]
public string ItemType { get; set; }
public string? ItemType { get; set; }
}
public record ArmorSettings
@@ -513,13 +513,13 @@ public record TieredFlea
/// key: tpl, value: playerlevel
/// </summary>
[JsonPropertyName("unlocksTpl")]
public Dictionary<MongoId, int> UnlocksTpl { get; set; }
public required Dictionary<MongoId, int> UnlocksTpl { get; set; }
/// <summary>
/// key: item type id, value: playerlevel
/// </summary>
[JsonPropertyName("unlocksType")]
public Dictionary<MongoId, int> UnlocksType { get; set; }
public required Dictionary<MongoId, int> UnlocksType { get; set; }
[JsonPropertyName("ammoTplUnlocks")]
public Dictionary<MongoId, int>? AmmoTplUnlocks { get; set; }
@@ -14,9 +14,6 @@ public record RepairConfig : BaseConfig
[JsonPropertyName("applyRandomizeDurabilityLoss")]
public bool ApplyRandomizeDurabilityLoss { get; set; }
[JsonPropertyName("weaponSkillRepairGain")]
public double WeaponSkillRepairGain { get; set; }
[JsonPropertyName("armorKitSkillPointGainPerRepairPointMultiplier")]
public double ArmorKitSkillPointGainPerRepairPointMultiplier { get; set; }
@@ -14,10 +14,10 @@ public record WeatherConfig : BaseConfig
public double? Acceleration { get; set; }
[JsonPropertyName("weather")]
public WeatherValues? Weather { get; set; }
public required WeatherValues Weather { get; set; }
[JsonPropertyName("seasonDates")]
public List<SeasonDateTimes>? SeasonDates { get; set; }
public required List<SeasonDateTimes> SeasonDates { get; set; }
[JsonPropertyName("overrideSeason")]
public Season? OverrideSeason { get; set; }