Compare commits

...

7 Commits

Author SHA1 Message Date
DrakiaXYZ
90e0c2c4b9 Resolve missing static forced containers/weapons when using loot dumps from multiple versions
Instead of only using the static forced containers from the first dump, merge all static forced containers so we can utilize dumps from multiple versions
2024-11-04 20:41:05 -08:00
0719a7bfdd
Resolves ArgumentException when processing 0.15.5 loot
Resolves the following exception:

System.ArgumentException: .NET number values such as positive and negative infinity cannot be written as valid JSON. To make it work when using 'JsonSerializer', consider specifying 'JsonNumberHandling.AllowNamedFloatingPointLiterals'
2024-10-31 22:42:26 -04:00
f6f2acd842
Updated Unknown Key Static Container ID 2024-09-16 11:21:44 -04:00
1821756680
Forced Static Loot Update
- Updates streets 'backup hideout key' container ID.
- Adds sandbox_high to the forced static loot config with the same static spawns as sandbox.
2024-09-10 10:52:30 -04:00
235249599e
Updates Sandbox-Scav-Near-Exit Container ID in Static Loot 2024-09-08 20:39:51 -04:00
c011c2dc58
Updates Unknown Key Container ID in Static Loot 2024-09-08 15:26:26 -04:00
a320d24ee4
Changes for 3.10 (32160)
- Updates the Model/Input classes to match the new export JSON structure
- Updates references to model structure
- Updates SevenZipSharp package
- Adds a few null checks
2024-08-22 15:33:27 -04:00
45 changed files with 1136 additions and 474 deletions

View File

@ -12,8 +12,10 @@ bigmap:
- 5937fd0086f7742bf33fc198 # Bronze pocket watch on a chain - 5937fd0086f7742bf33fc198 # Bronze pocket watch on a chain
- 5939a00786f7742fe8132936 # Golden Zibbo lighter - 5939a00786f7742fe8132936 # Golden Zibbo lighter
- 5939e5a786f77461f11c0098 # Secure Folder 0013 - 5939e5a786f77461f11c0098 # Secure Folder 0013
- 64e74a3d4d49d23b2c39d319 # item_quest_clock_07 (Out of Time) - 64e74a3d4d49d23b2c39d319 # item_quest_clock_07 (Out of Time)
- 6614230055afee107f05e998 # The Unheard's phone - 6614230055afee107f05e998 # The Unheard's phone
- 664fce7a90294949fe2d81cb # Item_barter_info_host_quest
- 66b22630a6b4e5ec7c02cdb7 # item_quest_instruments
#- 64bd1abff3a668f08805ce4f # Secure Flash drive V4 REMOVED BY BSG #- 64bd1abff3a668f08805ce4f # Secure Flash drive V4 REMOVED BY BSG
woods: woods:
@ -22,6 +24,9 @@ woods:
- 5af04e0a86f7743a532b79e2 # Single-axis Fiber Optic Gyroscope: item_barter_electr_gyroscope - 5af04e0a86f7743a532b79e2 # Single-axis Fiber Optic Gyroscope: item_barter_electr_gyroscope
- 5a687e7886f7740c4a5133fb # Blood sample - 5a687e7886f7740c4a5133fb # Blood sample
- 5af04c0b86f774138708f78e # Motor Controller: item_barter_electr_controller - 5af04c0b86f774138708f78e # Motor Controller: item_barter_electr_controller
- 664a5775f3d3570fba06be64 # quest_flyers
- 664b69c5a082271bc46c4e11 # quest_flyers2
- 664b69e8e1238e506d3630af # quest_flyers3
#- 64bde2248f3a947a990aa4a5 # Sliderkey Secure Flash drive #1 REMOVED BY BSG #- 64bde2248f3a947a990aa4a5 # Sliderkey Secure Flash drive #1 REMOVED BY BSG
#- 64bde265807321a9b905f076 # Sliderkey Secure Flash drive #2 REMOVED BY BSG #- 64bde265807321a9b905f076 # Sliderkey Secure Flash drive #2 REMOVED BY BSG
@ -41,11 +46,13 @@ shoreline:
- 5b4c72c686f77462ac37e907 # Motor Controller: item_barter_electr_controller3 - 5b4c72c686f77462ac37e907 # Motor Controller: item_barter_electr_controller3
- 5b43237186f7742f3a4ab252 # Chemical container: item_quest_chem_container - 5b43237186f7742f3a4ab252 # Chemical container: item_quest_chem_container
- 5a29284f86f77463ef3db363 # Toughbook reinforced laptop - 5a29284f86f77463ef3db363 # Toughbook reinforced laptop
- 64e74a534d49d23b2c39d31b # item_quest_clock_10 (Out of Time) - 64e74a534d49d23b2c39d31b # item_quest_clock_10 (Out of Time)
- 6614238e0d240a5f5d0f679d # Skier and Peacekeeper correspondence - 6614238e0d240a5f5d0f679d # Skier and Peacekeeper correspondence
- 661421c7c1f2f548c50ee649 # The Unheard's laptop - 661421c7c1f2f548c50ee649 # The Unheard's laptop
- 6614217b6d9d5abcad0ff098 # The Unheard's phone - 6614217b6d9d5abcad0ff098 # The Unheard's phone
- 661423200d240a5f5d0f679b # The Unheard's laptop - 661423200d240a5f5d0f679b # The Unheard's laptop
- 666073159916667083033cb9 # Item_quest_tattered_diary
- 66760b3deb51b08bd40c2b08 # item_barter_electr_hdd_NosQuests_quest
interchange: interchange:
- 5ae9a18586f7746e381e16a3 # OLI cargo manifests - 5ae9a18586f7746e381e16a3 # OLI cargo manifests
@ -56,11 +63,17 @@ interchange:
- 5ae9a4fc86f7746e381e1753 # Clothes design handbook - Part 2 - 5ae9a4fc86f7746e381e1753 # Clothes design handbook - Part 2
- 5b4c81a086f77417d26be63f # Chemical container item_quest_chem_container2 - 5b4c81a086f77417d26be63f # Chemical container item_quest_chem_container2
- 5b4c81bd86f77418a75ae159 # Chemical container item_quest_chem_container3 - 5b4c81bd86f77418a75ae159 # Chemical container item_quest_chem_container3
- 64e74a5ac2b4f829615ec336 # item_quest_clock_11 (Out of Time) - 64e74a5ac2b4f829615ec336 # item_quest_clock_11 (Out of Time)
- 667a8ef464eea5fdef0db135 # item_quest_gamemagazine
factory4_day: factory4_day:
- 591093bb86f7747caa7bb2ee # On the neck of the dead scav in the bunker (Postman Pat Part 2) - 591093bb86f7747caa7bb2ee # On the neck of the dead scav in the bunker (Postman Pat Part 2)
- 593a87af86f774122f54a951 # Syringe with a chemical - 593a87af86f774122f54a951 # Syringe with a chemical
- 66a0e523e749756c920d02d0 # item_quest_chem_container_nf2024
- 669fac549b0ce3feae01a137 # item_quest_chimicalsample
- 66c0b90c8398582e4b0c2e27 # item_quest_factoryflight_journal
- 66c0b39ca1f68fcc1d0c0cc3 # item_quest_factorylab_journal
- 66a0f0926fee20fa70036da6 # item_barter_quest_blood_nf2024
factory4_night: factory4_night:
- 591093bb86f7747caa7bb2ee # On the neck of the dead scav in the bunker (Postman Pat Part 2) - 591093bb86f7747caa7bb2ee # On the neck of the dead scav in the bunker (Postman Pat Part 2)
@ -76,9 +89,8 @@ lighthouse:
- 6331bb0d1aa9f42b804997a6 # V3 Flash Drive - 6331bb0d1aa9f42b804997a6 # V3 Flash Drive
- 6398a0861c712b1e1d4dadf1 # Forged Lightkeeper intelligence (Snatch) - 6398a0861c712b1e1d4dadf1 # Forged Lightkeeper intelligence (Snatch)
- 6399f54b0a36db13c823ad21 # Radio transmitter body (Key to the Tower) - 6399f54b0a36db13c823ad21 # Radio transmitter body (Key to the Tower)
- 64e74a64aac4cd0a7264ecdf # item_quest_clock_12 (Out of Time) - 64e74a64aac4cd0a7264ecdf # item_quest_clock_12 (Out of Time)
- 578f87a3245977356274f2cb # - 661666458c2aa9cb1602503b # Hard drive
- 661666458c2aa9cb1602503b # Hard drive
# - 64b91627dd13d43b9d01d6d1 # Toughbook reinforced laptop (Event quest) REMOVED BY BSG # - 64b91627dd13d43b9d01d6d1 # Toughbook reinforced laptop (Event quest) REMOVED BY BSG
rezervbase: rezervbase:
@ -90,13 +102,14 @@ rezervbase:
- 609267a2bb3f46069c3e6c7d # T-90M Commander Control Panel - 609267a2bb3f46069c3e6c7d # T-90M Commander Control Panel
- 60c080eb991ac167ad1c3ad4 # MBT Integrated Navigation System - 60c080eb991ac167ad1c3ad4 # MBT Integrated Navigation System
- 6398a072e301557ae24cec92 # Original Lightkeeper Intelligence (Snatch) - 6398a072e301557ae24cec92 # Original Lightkeeper Intelligence (Snatch)
- 64e74a4baac4cd0a7264ecdd # item_quest_clock_09 (Out of Time) - 64e74a4baac4cd0a7264ecdd # item_quest_clock_09 (Out of Time)
laboratory: laboratory:
- 5eff135be0d3331e9d282b7b # Flash drive marked with blue tape (TerraGroup employee) - 5eff135be0d3331e9d282b7b # Flash drive marked with blue tape (TerraGroup employee)
- 6398a4cfb5992f573c6562b3 # Secured tape - 6398a4cfb5992f573c6562b3 # Secured tape
- 64e74a44c2b4f829615ec334 # Picture 8 - 64e74a44c2b4f829615ec334 # Picture 8
#- 64e74a44c2b4f829615ec334 # item_quest_clock_08 (Out of Time) #1 REMOVED BY BSG - 666879d498b97e3a8f09f1ae # Item_barter_medical_transilluminator_quest
#- 64e74a44c2b4f829615ec334 # item_quest_clock_08 (Out of Time) #1 REMOVED BY BSG
#- 64bdcfed8f3a947a990aa49a # Hermetic container for storing various chemicals #1 REMOVED BY BSG #- 64bdcfed8f3a947a990aa49a # Hermetic container for storing various chemicals #1 REMOVED BY BSG
#- 64bdd008b0bf3baa6702f35f # Hermetic container for storing various chemicals #2 REMOVED BY BSG #- 64bdd008b0bf3baa6702f35f # Hermetic container for storing various chemicals #2 REMOVED BY BSG
#- 64bdd014f3a668f08805ce64 # Hermetic container for storing various chemicals #3 REMOVED BY BSG #- 64bdd014f3a668f08805ce64 # Hermetic container for storing various chemicals #3 REMOVED BY BSG
@ -113,22 +126,23 @@ tarkovstreets:
- 63989ced706b793c7d60cfef # Informant's journal (Missing Informant) - 63989ced706b793c7d60cfef # Informant's journal (Missing Informant)
- 638cbb3ba63f1b49be6a300e # Secure Flash drive (Your Car Needs a Service) - 638cbb3ba63f1b49be6a300e # Secure Flash drive (Your Car Needs a Service)
- 63a39e1d234195315d4020bd # Primorsky 46-48 skybridge key - 63a39e1d234195315d4020bd # Primorsky 46-48 skybridge key
- 64e73909cd54ef0580746af3 # item_quest_clock_01 (Out of Time) - 64e73909cd54ef0580746af3 # item_quest_clock_01 (Out of Time)
- 64e74a186393886f74114a96 # item_quest_clock_02 (Out of Time) - 64e74a186393886f74114a96 # item_quest_clock_02 (Out of Time)
- 64e74a1faac4cd0a7264ecd9 # item_quest_clock_03 (Out of Time) - 64e74a1faac4cd0a7264ecd9 # item_quest_clock_03 (Out of Time)
- 64e74a274d49d23b2c39d317 # item_quest_clock_04 (Out of Time) - 64e74a274d49d23b2c39d317 # item_quest_clock_04 (Out of Time)
- 64e74a2fc2b4f829615ec332 # item_quest_clock_05 (Out of Time) - 64e74a2fc2b4f829615ec332 # item_quest_clock_05 (Out of Time)
- 64e74a35aac4cd0a7264ecdb # item_quest_clock_06 (Out of Time) - 64e74a35aac4cd0a7264ecdb # item_quest_clock_06 (Out of Time)
- 64f09c02b63b74469b6c149f # Paramedic's GPhone X (Ambulances Again) - 64f09c02b63b74469b6c149f # Paramedic's GPhone X (Ambulances Again)
- 64f07f7726cfa02c506f8ac0 # Journal item_quest_kpss2 (Glory To CPSU P2) - 64f07f7726cfa02c506f8ac0 # Journal item_quest_kpss2 (Glory To CPSU P2)
- 64f69b4267e11a7c6206e010 # Chef's diary (Beyond the Red Meat - Part 1) - 64f69b4267e11a7c6206e010 # Chef's diary (Beyond the Red Meat - Part 1)
- 64f5b4f71a5f313cb144c06c # Secret component (Beyond the Red Meat - Part 2) - 64f5b4f71a5f313cb144c06c # Secret component (Beyond the Red Meat - Part 2)
- 657acb2ac900be5902191ac9 # Cadastral registry records - 657acb2ac900be5902191ac9 # Cadastral registry records
- 66687bc89111279d600b5062 # keyFromCity_quest
sandbox: sandbox:
- 6582bd252b50c61c565828e2 # Bottle of Le Jean wine - 6582bd252b50c61c565828e2 # Bottle of Le Jean wine
- 6575a6ca8778e96ded05a802 # TerraGroup scientist's hard drive - 6575a6ca8778e96ded05a802 # TerraGroup scientist's hard drive
sandbox_high: sandbox_high:
- 6582bd252b50c61c565828e2 # Bottle of Le Jean wine - 6582bd252b50c61c565828e2 # Bottle of Le Jean wine
- 6575a6ca8778e96ded05a802 # TerraGroup scientist's hard drive - 6575a6ca8778e96ded05a802 # TerraGroup scientist's hard drive

View File

@ -6,17 +6,21 @@ static_weapon_ids:
forced_items: forced_items:
bigmap: bigmap:
# unknown key - containerId: container_custom_DesignStuff_00060 # unknown key
- containerId: custom_multiScene_00058
itemTpl: 593962ca86f774068014d9af itemTpl: 593962ca86f774068014d9af
tarkovstreets: tarkovstreets:
# Backup hideout key - containerId: container_City_SE_02_DesignStuff_00091 # Backup hideout key
- containerId: container_City_SE_02_Primorskiy_51_indoor_00001
itemTpl: 6398fd8ad3de3849057f5128 itemTpl: 6398fd8ad3de3849057f5128
sandbox: sandbox:
- containerId: container_Test_for_export_00002 # Lab technician body - containerId: container_Test_for_export_00002 # Lab technician body
itemTpl: 658199aa38c79576a2569e13 # TerraGroup science office key itemTpl: 658199aa38c79576a2569e13 # TerraGroup science office key
- containerId: container_custom_DesignStuff_00029 # dead body of scav near exit - containerId: container_Sandbox_Design_Stuff_00008 # dead body of scav near exit
itemTpl: 6217726288ed9f0845317459 # RSP-30 reactive signal cartridge (Green)
sandbox_high:
- containerId: container_Test_for_export_00002 # Lab technician body
itemTpl: 658199aa38c79576a2569e13 # TerraGroup science office key
- containerId: container_Sandbox_Design_Stuff_00008 # dead body of scav near exit
itemTpl: 6217726288ed9f0845317459 # RSP-30 reactive signal cartridge (Green) itemTpl: 6217726288ed9f0845317459 # RSP-30 reactive signal cartridge (Green)

View File

@ -13,7 +13,7 @@
<PackageReference Include="7z.Libs" Version="21.7.0" /> <PackageReference Include="7z.Libs" Version="21.7.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="NumSharp" Version="0.30.0" /> <PackageReference Include="NumSharp" Version="0.30.0" />
<PackageReference Include="SevenZipSharp.Interop" Version="19.0.2" /> <PackageReference Include="SevenZipSharp.Interop" Version="19.1.0" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" /> <PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" />
<PackageReference Include="YamlDotNet" Version="13.0.0" /> <PackageReference Include="YamlDotNet" Version="13.0.0" />
</ItemGroup> </ItemGroup>

View File

@ -0,0 +1,52 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class AdditionalHostilitySetting
{
[JsonProperty("BotRole", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotRole")]
public string? BotRole { get; set; }
[JsonProperty("AlwaysEnemies", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AlwaysEnemies")]
public List<string>? AlwaysEnemies { get; set; }
[JsonProperty("ChancedEnemies", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ChancedEnemies")]
public List<ChancedEnemy>? ChancedEnemies { get; set; }
[JsonProperty("Warn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Warn")]
public List<string>? Warn { get; set; }
[JsonProperty("Neutral", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Neutral")]
public List<string>? Neutral { get; set; }
[JsonProperty("AlwaysFriends", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AlwaysFriends")]
public List<string>? AlwaysFriends { get; set; }
[JsonProperty("SavagePlayerBehaviour", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SavagePlayerBehaviour")]
public string? SavagePlayerBehaviour { get; set; }
[JsonProperty("BearPlayerBehaviour", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BearPlayerBehaviour")]
public string? BearPlayerBehaviour { get; set; }
[JsonProperty("BearEnemyChance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BearEnemyChance")]
public int? BearEnemyChance { get; set; }
[JsonProperty("UsecPlayerBehaviour", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("UsecPlayerBehaviour")]
public string? UsecPlayerBehaviour { get; set; }
[JsonProperty("UsecEnemyChance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("UsecEnemyChance")]
public int? UsecEnemyChance { get; set; }
}
}

View File

@ -1,4 +1,4 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
@ -19,7 +19,7 @@ namespace LootDumpProcessor.Model.Input
[JsonProperty("PlaneAirdropChance", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("PlaneAirdropChance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PlaneAirdropChance")] [JsonPropertyName("PlaneAirdropChance")]
public double? PlaneAirdropChance { get; set; } public float? PlaneAirdropChance { get; set; }
[JsonProperty("PlaneAirdropMax", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("PlaneAirdropMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PlaneAirdropMax")] [JsonPropertyName("PlaneAirdropMax")]

View File

@ -0,0 +1,68 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class BTRServerSettings
{
[JsonProperty("ChanceSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ChanceSpawn")]
public float? ChanceSpawn { get; set; }
[JsonProperty("SpawnPeriod", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SpawnPeriod")]
public Vector3? SpawnPeriod { get; set; }
[JsonProperty("MoveSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MoveSpeed")]
public float? MoveSpeed { get; set; }
[JsonProperty("ReadyToDepartureTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ReadyToDepartureTime")]
public float? ReadyToDepartureTime { get; set; }
[JsonProperty("CheckTurnDistanceTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("CheckTurnDistanceTime")]
public float? CheckTurnDistanceTime { get; set; }
[JsonProperty("TurnCheckSensitivity", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TurnCheckSensitivity")]
public float? TurnCheckSensitivity { get; set; }
[JsonProperty("DecreaseSpeedOnTurnLimit", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DecreaseSpeedOnTurnLimit")]
public float? DecreaseSpeedOnTurnLimit { get; set; }
[JsonProperty("EndSplineDecelerationDistance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EndSplineDecelerationDistance")]
public float? EndSplineDecelerationDistance { get; set; }
[JsonProperty("AccelerationSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AccelerationSpeed")]
public float? AccelerationSpeed { get; set; }
[JsonProperty("DecelerationSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DecelerationSpeed")]
public float? DecelerationSpeed { get; set; }
[JsonProperty("PauseDurationRange", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PauseDurationRange")]
public Vector3? PauseDurationRange { get; set; }
[JsonProperty("BodySwingReturnSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BodySwingReturnSpeed")]
public float? BodySwingReturnSpeed { get; set; }
[JsonProperty("BodySwingDamping", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BodySwingDamping")]
public float? BodySwingDamping { get; set; }
[JsonProperty("BodySwingIntensity", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BodySwingIntensity")]
public float? BodySwingIntensity { get; set; }
[JsonProperty("ServerMapBTRSettings", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ServerMapBTRSettings")]
public ServerMapBTRSettings? ServerMapBTRSettings { get; set; }
}
}

View File

@ -1,14 +1,16 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
{ {
public class Banner public class Banner
{ {
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)] [JsonPropertyName("id")] [JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("id")]
public string? Id { get; set; } public string? Id { get; set; }
[JsonProperty("pic")] [JsonPropertyName("pic")] [JsonProperty("pic", NullValueHandling = NullValueHandling.Ignore)]
public Preview? Pic { get; set; } [JsonPropertyName("pic")]
public Pic? Pic { get; set; }
} }
} }

View File

@ -1,4 +1,4 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
@ -7,22 +7,58 @@ namespace LootDumpProcessor.Model.Input
{ {
[JsonProperty("AccuracySpeed", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("AccuracySpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AccuracySpeed")] [JsonPropertyName("AccuracySpeed")]
public double? AccuracySpeed { get; set; } public float? AccuracySpeed { get; set; }
[JsonProperty("Scattering", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Scattering", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Scattering")] [JsonPropertyName("Scattering")]
public double? Scattering { get; set; } public float? Scattering { get; set; }
[JsonProperty("GainSight", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("GainSight", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("GainSight")] [JsonPropertyName("GainSight")]
public double? GainSight { get; set; } public float? GainSight { get; set; }
[JsonProperty("MarksmanAccuratyCoef", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("MarksmanAccuratyCoef", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MarksmanAccuratyCoef")] [JsonPropertyName("MarksmanAccuratyCoef")]
public double? MarksmanAccuratyCoef { get; set; } public float? MarksmanAccuratyCoef { get; set; }
[JsonProperty("VisibleDistance", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("VisibleDistance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("VisibleDistance")] [JsonPropertyName("VisibleDistance")]
public double? VisibleDistance { get; set; } public float? VisibleDistance { get; set; }
[JsonProperty("DistToPersueAxemanCoef", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DistToPersueAxemanCoef")]
public float? DistToPersueAxemanCoef { get; set; }
[JsonProperty("KhorovodChance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("KhorovodChance")]
public int? KhorovodChance { get; set; }
[JsonProperty("MinExfiltrationTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinExfiltrationTime")]
public float? MinExfiltrationTime { get; set; }
[JsonProperty("MaxExfiltrationTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxExfiltrationTime")]
public float? MaxExfiltrationTime { get; set; }
[JsonProperty("DistToActivatePvE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DistToActivatePvE")]
public float? DistToActivatePvE { get; set; }
[JsonProperty("DistToSleepPvE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DistToSleepPvE")]
public float? DistToSleepPvE { get; set; }
[JsonProperty("DistToActivate", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DistToActivate")]
public float? DistToActivate { get; set; }
[JsonProperty("DistToSleep", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DistToSleep")]
public float? DistToSleep { get; set; }
[JsonProperty("AdditionalHostilitySettings", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AdditionalHostilitySettings")]
public List<AdditionalHostilitySetting>? AdditionalHostilitySettings { get; set; }
} }
} }

View File

@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class ChancedEnemy
{
[JsonProperty("EnemyChance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EnemyChance")]
public int? EnemyChance { get; set; }
[JsonProperty("Role", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Role")]
public string? Role { get; set; }
}
}

View File

@ -1,12 +1,13 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using LootDumpProcessor.Model.Tarkov;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
{ {
public class ColliderParams public class ColliderParams
{ {
[JsonProperty("_parent", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Parent", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("_parent")] [JsonPropertyName("Parent")]
public string? Parent { get; set; } public string? Parent { get; set; }
[JsonProperty("_props", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("_props", NullValueHandling = NullValueHandling.Ignore)]

View File

@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class CompletedQuest
{
[JsonProperty("QuestId", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("QuestId")]
public string? QuestID { get; set; }
}
}

View File

@ -5,316 +5,20 @@ namespace LootDumpProcessor.Model.Input
{ {
public class Data public class Data
{ {
[JsonProperty("Enabled", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("serverId", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Enabled")] [JsonPropertyName("serverId")]
public bool? Enabled { get; set; } public string? ServerID { get; set; }
[JsonProperty("EnableCoop", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("serverSettings", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EnableCoop")] [JsonPropertyName("serverSettings")]
public bool? EnableCoop { get; set; } public ServerSettings? ServerSettings { get; set; }
[JsonProperty("Locked", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("profile", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Locked")] [JsonPropertyName("profile")]
public bool? Locked { get; set; } public object? Profile { get; set; }
[JsonProperty("Insurance", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("locationLoot", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Insurance")] [JsonPropertyName("locationLoot")]
public bool? Insurance { get; set; } public required LocationLoot LocationLoot { get; set; }
[JsonProperty("SafeLocation", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SafeLocation")]
public bool? SafeLocation { get; set; }
[JsonProperty("Name", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Name")]
public string? Name { get; set; }
[JsonProperty("Description", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Description")]
public string? Description { get; set; }
[JsonProperty("Scene", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Scene")]
public Preview? Scene { get; set; }
[JsonProperty("Area", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Area")]
public double? Area { get; set; }
[JsonProperty("RequiredPlayerLevel", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("RequiredPlayerLevel")]
public int? RequiredPlayerLevel { get; set; }
[JsonProperty("PmcMaxPlayersInGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PmcMaxPlayersInGroup")]
public int? PmcMaxPlayersInGroup { get; set; }
[JsonProperty("ScavMaxPlayersInGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ScavMaxPlayersInGroup")]
public int? ScavMaxPlayersInGroup { get; set; }
[JsonProperty("MinPlayers", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinPlayers")]
public int? MinPlayers { get; set; }
[JsonProperty("MaxPlayers", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxPlayers")]
public int? MaxPlayers { get; set; }
[JsonProperty("MaxCoopGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxCoopGroup")]
public int? MaxCoopGroup { get; set; }
[JsonProperty("exit_count", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("exit_count")]
public int? ExitCount { get; set; }
[JsonProperty("exit_access_time", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("exit_access_time")]
public int? ExitAccessTime { get; set; }
[JsonProperty("exit_time", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("exit_time")]
public int? ExitTime { get; set; }
[JsonProperty("Preview", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Preview")]
public Preview? Preview { get; set; }
[JsonProperty("IconX", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("IconX")]
public int? IconX { get; set; }
[JsonProperty("IconY", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("IconY")]
public int? IconY { get; set; }
[JsonProperty("filter_ex", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("filter_ex")]
public List<object>? FilterEx { get; set; }
[JsonProperty("waves", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("waves")]
public List<Wave>? Waves { get; set; }
[JsonProperty("limits", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("limits")]
public List<object>? Limits { get; set; }
[JsonProperty("AveragePlayTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AveragePlayTime")]
public int? AveragePlayTime { get; set; }
[JsonProperty("AveragePlayerLevel", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AveragePlayerLevel")]
public int? AveragePlayerLevel { get; set; }
[JsonProperty("EscapeTimeLimit", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EscapeTimeLimit")]
public int? EscapeTimeLimit { get; set; }
[JsonProperty("EscapeTimeLimitCoop", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EscapeTimeLimitCoop")]
public int? EscapeTimeLimitCoop { get; set; }
[JsonProperty("Rules", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Rules")]
public string? Rules { get; set; }
[JsonProperty("IsSecret", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("IsSecret")]
public bool? IsSecret { get; set; }
[JsonProperty("doors", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("doors")]
public List<object>? Doors { get; set; }
[JsonProperty("tmp_location_field_remove_me", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("tmp_location_field_remove_me")]
public int? TmpLocationFieldRemoveMe { get; set; }
[JsonProperty("MinDistToExitPoint", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinDistToExitPoint")]
public int? MinDistToExitPoint { get; set; }
[JsonProperty("MaxDistToFreePoint", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxDistToFreePoint")]
public int? MaxDistToFreePoint { get; set; }
[JsonProperty("MinDistToFreePoint", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinDistToFreePoint")]
public int? MinDistToFreePoint { get; set; }
[JsonProperty("MaxBotPerZone", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxBotPerZone")]
public int? MaxBotPerZone { get; set; }
[JsonProperty("OpenZones", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OpenZones")]
public string? OpenZones { get; set; }
[JsonProperty("OcculsionCullingEnabled", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OcculsionCullingEnabled")]
public bool? OcculsionCullingEnabled { get; set; }
[JsonProperty("GlobalLootChanceModifier", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("GlobalLootChanceModifier")]
public double? GlobalLootChanceModifier { get; set; }
[JsonProperty("OldSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OldSpawn")]
public bool? OldSpawn { get; set; }
[JsonProperty("NewSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("NewSpawn")]
public bool? NewSpawn { get; set; }
[JsonProperty("BotMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMax")]
public int? BotMax { get; set; }
[JsonProperty("BotStart", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotStart")]
public int? BotStart { get; set; }
[JsonProperty("BotStop", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotStop")]
public int? BotStop { get; set; }
[JsonProperty("BotMaxTimePlayer", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMaxTimePlayer")]
public int? BotMaxTimePlayer { get; set; }
[JsonProperty("BotSpawnTimeOnMin", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOnMin")]
public int? BotSpawnTimeOnMin { get; set; }
[JsonProperty("BotSpawnTimeOnMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOnMax")]
public int? BotSpawnTimeOnMax { get; set; }
[JsonProperty("BotSpawnTimeOffMin", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOffMin")]
public int? BotSpawnTimeOffMin { get; set; }
[JsonProperty("BotSpawnTimeOffMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOffMax")]
public int? BotSpawnTimeOffMax { get; set; }
[JsonProperty("BotMaxPlayer", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMaxPlayer")]
public int? BotMaxPlayer { get; set; }
[JsonProperty("BotEasy", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotEasy")]
public int? BotEasy { get; set; }
[JsonProperty("BotNormal", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotNormal")]
public int? BotNormal { get; set; }
[JsonProperty("BotHard", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotHard")]
public int? BotHard { get; set; }
[JsonProperty("BotImpossible", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotImpossible")]
public int? BotImpossible { get; set; }
[JsonProperty("BotAssault", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotAssault")]
public int? BotAssault { get; set; }
[JsonProperty("BotMarksman", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMarksman")]
public int? BotMarksman { get; set; }
[JsonProperty("DisabledScavExits", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DisabledScavExits")]
public string? DisabledScavExits { get; set; }
[JsonProperty("AccessKeys", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AccessKeys")]
public List<object>? AccessKeys { get; set; }
[JsonProperty("UnixDateTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("UnixDateTime")]
public int? UnixDateTime { get; set; }
[JsonProperty("users_gather_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_gather_seconds")]
public int? UsersGatherSeconds { get; set; }
[JsonProperty("users_spawn_seconds_n", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_spawn_seconds_n")]
public int? UsersSpawnSecondsN { get; set; }
[JsonProperty("users_spawn_seconds_n2", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_spawn_seconds_n2")]
public int? UsersSpawnSecondsN2 { get; set; }
[JsonProperty("users_summon_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_summon_seconds")]
public int? UsersSummonSeconds { get; set; }
[JsonProperty("sav_summon_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("sav_summon_seconds")]
public int? SavSummonSeconds { get; set; }
[JsonProperty("matching_min_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("matching_min_seconds")]
public int? MatchingMinSeconds { get; set; }
[JsonProperty("GenerateLocalLootCache", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("GenerateLocalLootCache")]
public bool? GenerateLocalLootCache { get; set; }
[JsonProperty("MinMaxBots", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinMaxBots")]
public List<object>? MinMaxBots { get; set; }
[JsonProperty("BotLocationModifier", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotLocationModifier")]
public BotLocationModifier? BotLocationModifier { get; set; }
[JsonProperty("exits", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("exits")]
public List<Exit>? Exits { get; set; }
[JsonProperty("DisabledForScav", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DisabledForScav")]
public bool? DisabledForScav { get; set; }
[JsonProperty("ExitZones", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ExitZones")]
public ExitZones? ExitZones { get; set; }
[JsonProperty("SpawnPointParams", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SpawnPointParams")]
public List<SpawnPointParam>? SpawnPointParams { get; set; }
[JsonProperty("AirdropParameters", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AirdropParameters")]
public List<AirdropParameter>? AirdropParameters { get; set; }
[JsonProperty("Id", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Id")]
public string? Id { get; set; }
[JsonProperty("_Id", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("_Id")]
public string? _Id { get; set; }
[JsonProperty("Loot", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Loot")]
public List<Template>? Loot { get; set; }
[JsonProperty("Banners", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Banners")]
public List<Banner>? Banners { get; set; }
[JsonProperty("BossLocationSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BossLocationSpawn")]
public List<object>? BossLocationSpawn { get; set; }
} }
} }

View File

@ -1,4 +1,4 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
@ -15,7 +15,7 @@ namespace LootDumpProcessor.Model.Input
[JsonProperty("Chance", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Chance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Chance")] [JsonPropertyName("Chance")]
public int? Chance { get; set; } public float? Chance { get; set; }
[JsonProperty("MinTime", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("MinTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinTime")] [JsonPropertyName("MinTime")]
@ -31,7 +31,7 @@ namespace LootDumpProcessor.Model.Input
[JsonProperty("ExfiltrationTime", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("ExfiltrationTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ExfiltrationTime")] [JsonPropertyName("ExfiltrationTime")]
public int? ExfiltrationTime { get; set; } public float? ExfiltrationTime { get; set; }
[JsonProperty("PassageRequirement", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("PassageRequirement", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PassageRequirement")] [JsonPropertyName("PassageRequirement")]
@ -56,5 +56,33 @@ namespace LootDumpProcessor.Model.Input
[JsonProperty("Count", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Count", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Count")] [JsonPropertyName("Count")]
public int? Count { get; set; } public int? Count { get; set; }
[JsonProperty("EventAvailable", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EventAvailable")]
public bool? EventAvailable { get; set; }
[JsonProperty("MinTimePVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinTimePVE")]
public int? MinTimePVE { get; set; }
[JsonProperty("MaxTimePVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxTimePVE")]
public int? MaxTimePVE { get; set; }
[JsonProperty("ChancePVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ChancePVE")]
public float? ChancePVE { get; set; }
[JsonProperty("CountPVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("CountPVE")]
public int? CountPVE { get; set; }
[JsonProperty("ExfiltrationTimePVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ExfiltrationTimePVE")]
public float? ExfiltrationTimePVE { get; set; }
[JsonProperty("PlayersCountPVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PlayersCountPVE")]
public int? PlayersCountPVE { get; set; }
} }
} }

View File

@ -1,12 +0,0 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class ExitZones
{
[JsonProperty("$oid", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("$oid")]
public string? Oid { get; set; }
}
}

12
Model/Input/ItemCost.cs Normal file
View File

@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class ItemCost
{
[JsonProperty("Count", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Count")]
public int? Count { get; set; }
}
}

384
Model/Input/LocationLoot.cs Normal file
View File

@ -0,0 +1,384 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class LocationLoot
{
[JsonProperty("Enabled", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Enabled")]
public bool? Enabled { get; set; }
[JsonProperty("EnableCoop", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EnableCoop")]
public bool? EnableCoop { get; set; }
[JsonProperty("ForceOnlineRaidInPVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ForceOnlineRaidInPVE")]
public bool? ForceOnlineRaidInPVE { get; set; }
[JsonProperty("Locked", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Locked")]
public bool? Locked { get; set; }
[JsonProperty("Insurance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Insurance")]
public bool? Insurance { get; set; }
[JsonProperty("SafeLocation", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SafeLocation")]
public bool? SafeLocation { get; set; }
[JsonProperty("Name", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Name")]
public string? Name { get; set; }
[JsonProperty("Description", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Description")]
public string? Description { get; set; }
[JsonProperty("Scene", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Scene")]
public Scene? Scene { get; set; }
[JsonProperty("Area", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Area")]
public float? Area { get; set; }
[JsonProperty("RequiredPlayerLevelMin", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("RequiredPlayerLevelMin")]
public int? RequiredPlayerLevelMin { get; set; }
[JsonProperty("RequiredPlayerLevelMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("RequiredPlayerLevelMax")]
public int? RequiredPlayerLevelMax { get; set; }
[JsonProperty("PmcMaxPlayersInGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PmcMaxPlayersInGroup")]
public int? PmcMaxPlayersInGroup { get; set; }
[JsonProperty("ScavMaxPlayersInGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ScavMaxPlayersInGroup")]
public int? ScavMaxPlayersInGroup { get; set; }
[JsonProperty("MinPlayers", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinPlayers")]
public int? MinPlayers { get; set; }
[JsonProperty("MaxPlayers", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxPlayers")]
public int? MaxPlayers { get; set; }
[JsonProperty("MaxCoopGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxCoopGroup")]
public int? MaxCoopGroup { get; set; }
[JsonProperty("exit_count", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("exit_count")]
public int? ExitCount { get; set; }
[JsonProperty("exit_access_time", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("exit_access_time")]
public int? ExitAccessTime { get; set; }
[JsonProperty("exit_time", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("exit_time")]
public int? ExitTime { get; set; }
[JsonProperty("Preview", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Preview")]
public Preview? Preview { get; set; }
[JsonProperty("IconX", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("IconX")]
public int? IconX { get; set; }
[JsonProperty("IconY", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("IconY")]
public int? IconY { get; set; }
[JsonProperty("filter_ex", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("filter_ex")]
public List<object>? FilterEx { get; set; }
[JsonProperty("waves", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("waves")]
public List<object>? Waves { get; set; }
[JsonProperty("limits", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("limits")]
public List<object>? Limits { get; set; }
[JsonProperty("AveragePlayTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AveragePlayTime")]
public int? AveragePlayTime { get; set; }
[JsonProperty("AveragePlayerLevel", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AveragePlayerLevel")]
public int? AveragePlayerLevel { get; set; }
[JsonProperty("EscapeTimeLimit", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EscapeTimeLimit")]
public int? EscapeTimeLimit { get; set; }
[JsonProperty("EscapeTimeLimitPVE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EscapeTimeLimitPVE")]
public int? EscapeTimeLimitPVE { get; set; }
[JsonProperty("EscapeTimeLimitCoop", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EscapeTimeLimitCoop")]
public int? EscapeTimeLimitCoop { get; set; }
[JsonProperty("Rules", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Rules")]
public string? Rules { get; set; }
[JsonProperty("IsSecret", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("IsSecret")]
public bool? IsSecret { get; set; }
[JsonProperty("doors", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("doors")]
public List<object>? Doors { get; set; }
[JsonProperty("tmp_location_field_remove_me", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("tmp_location_field_remove_me")]
public int? TmpLocationFieldRemoveMe { get; set; }
[JsonProperty("MinDistToExitPoint", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinDistToExitPoint")]
public int? MinDistToExitPoint { get; set; }
[JsonProperty("MaxDistToFreePoint", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxDistToFreePoint")]
public int? MaxDistToFreePoint { get; set; }
[JsonProperty("MinDistToFreePoint", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinDistToFreePoint")]
public int? MinDistToFreePoint { get; set; }
[JsonProperty("MaxBotPerZone", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxBotPerZone")]
public int? MaxBotPerZone { get; set; }
[JsonProperty("OpenZones", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OpenZones")]
public string? OpenZones { get; set; }
[JsonProperty("OcculsionCullingEnabled", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OcculsionCullingEnabled")]
public bool? OcculsionCullingEnabled { get; set; }
[JsonProperty("GlobalLootChanceModifier", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("GlobalLootChanceModifier")]
public float? GlobalLootChanceModifier { get; set; }
[JsonProperty("GlobalLootChanceModifierPvE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("GlobalLootChanceModifierPvE")]
public float? GlobalLootChanceModifierPvE { get; set; }
[JsonProperty("OldSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OldSpawn")]
public bool? OldSpawn { get; set; }
[JsonProperty("OfflineOldSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OfflineOldSpawn")]
public bool? OfflineOldSpawn { get; set; }
[JsonProperty("NewSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("NewSpawn")]
public bool? NewSpawn { get; set; }
[JsonProperty("OfflineNewSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("OfflineNewSpawn")]
public bool? OfflineNewSpawn { get; set; }
[JsonProperty("BotMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMax")]
public int? BotMax { get; set; }
[JsonProperty("BotMaxPvE", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMaxPvE")]
public int? BotMaxPvE { get; set; }
[JsonProperty("BotStart", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotStart")]
public int? BotStart { get; set; }
[JsonProperty("BotStartPlayer", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotStartPlayer")]
public int? BotStartPlayer { get; set; }
[JsonProperty("BotStop", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotStop")]
public int? BotStop { get; set; }
[JsonProperty("BotMaxTimePlayer", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMaxTimePlayer")]
public int? BotMaxTimePlayer { get; set; }
[JsonProperty("BotSpawnTimeOnMin", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOnMin")]
public int? BotSpawnTimeOnMin { get; set; }
[JsonProperty("BotSpawnTimeOnMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOnMax")]
public int? BotSpawnTimeOnMax { get; set; }
[JsonProperty("BotSpawnTimeOffMin", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOffMin")]
public int? BotSpawnTimeOffMin { get; set; }
[JsonProperty("BotSpawnTimeOffMax", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnTimeOffMax")]
public int? BotSpawnTimeOffMax { get; set; }
[JsonProperty("BotMaxPlayer", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMaxPlayer")]
public int? BotMaxPlayer { get; set; }
[JsonProperty("BotEasy", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotEasy")]
public int? BotEasy { get; set; }
[JsonProperty("BotNormal", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotNormal")]
public int? BotNormal { get; set; }
[JsonProperty("BotHard", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotHard")]
public int? BotHard { get; set; }
[JsonProperty("BotImpossible", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotImpossible")]
public int? BotImpossible { get; set; }
[JsonProperty("BotAssault", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotAssault")]
public int? BotAssault { get; set; }
[JsonProperty("BotMarksman", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotMarksman")]
public int? BotMarksman { get; set; }
[JsonProperty("DisabledScavExits", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DisabledScavExits")]
public string? DisabledScavExits { get; set; }
[JsonProperty("MinPlayerLvlAccessKeys", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinPlayerLvlAccessKeys")]
public int? MinPlayerLvlAccessKeys { get; set; }
[JsonProperty("AccessKeys", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AccessKeys")]
public List<object>? AccessKeys { get; set; }
[JsonProperty("UnixDateTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("UnixDateTime")]
public int? UnixDateTime { get; set; }
[JsonProperty("users_gather_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_gather_seconds")]
public int? UsersGatherSeconds { get; set; }
[JsonProperty("users_spawn_seconds_n", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_spawn_seconds_n")]
public int? UsersSpawnSecondsN { get; set; }
[JsonProperty("users_spawn_seconds_n2", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_spawn_seconds_n2")]
public int? UsersSpawnSecondsN2 { get; set; }
[JsonProperty("users_summon_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("users_summon_seconds")]
public int? UsersSummonSeconds { get; set; }
[JsonProperty("sav_summon_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("sav_summon_seconds")]
public int? SavSummonSeconds { get; set; }
[JsonProperty("matching_min_seconds", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("matching_min_seconds")]
public int? MatchingMinSeconds { get; set; }
[JsonProperty("GenerateLocalLootCache", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("GenerateLocalLootCache")]
public bool? GenerateLocalLootCache { get; set; }
[JsonProperty("PlayersRequestCount", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PlayersRequestCount")]
public int? PlayersRequestCount { get; set; }
[JsonProperty("NonWaveGroupScenario", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("NonWaveGroupScenario")]
public NonWaveGroupScenario? NonWaveGroupScenario { get; set; }
[JsonProperty("BotSpawnCountStep", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnCountStep")]
public int? BotSpawnCountStep { get; set; }
[JsonProperty("BotSpawnPeriodCheck", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSpawnPeriodCheck")]
public int? BotSpawnPeriodCheck { get; set; }
[JsonProperty("GlobalContainerChanceModifier", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("GlobalContainerChanceModifier")]
public float? GlobalContainerChanceModifier { get; set; }
[JsonProperty("MinMaxBots", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinMaxBots")]
public List<object>? MinMaxBots { get; set; }
[JsonProperty("BotLocationModifier", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotLocationModifier")]
public BotLocationModifier? BotLocationModifier { get; set; }
[JsonProperty("Exits", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Exits")]
public List<Exit>? Exits { get; set; }
[JsonProperty("DisabledForScav", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DisabledForScav")]
public bool? DisabledForScav { get; set; }
[JsonProperty("BossLocationSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BossLocationSpawn")]
public List<object>? BossLocationSpawn { get; set; }
[JsonProperty("SpawnPointParams", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SpawnPointParams")]
public List<SpawnPointParam>? SpawnPointParams { get; set; }
[JsonProperty("MaxItemCountInLocation", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxItemCountInLocation")]
public List<object>? MaxItemCountInLocation { get; set; }
[JsonProperty("AirdropParameters", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AirdropParameters")]
public List<AirdropParameter>? AirdropParameters { get; set; }
[JsonProperty("MatchMakerMinPlayersByWaitTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MatchMakerMinPlayersByWaitTime")]
public List<MatchMakerMinPlayersByWaitTime>? MatchMakerMinPlayersByWaitTime { get; set; }
[JsonProperty("Transits", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Transits")]
public List<Transit>? Transits { get; set; }
[JsonProperty("Id", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Id")]
public required string Id { get; set; }
[JsonProperty("_Id", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("_Id")]
public string? Id0 { get; set; }
[JsonProperty("Loot")]
[JsonPropertyName("Loot")]
public required List<Template> Loot { get; set; }
[JsonProperty("Banners", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Banners")]
public List<Banner>? Banners { get; set; }
}
}

View File

@ -0,0 +1,68 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class MapSettings
{
[JsonProperty("MapID", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MapID")]
public string? MapID { get; set; }
[JsonProperty("ChanceSpawn", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ChanceSpawn")]
public float? ChanceSpawn { get; set; }
[JsonProperty("SpawnPeriod", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SpawnPeriod")]
public Vector3? SpawnPeriod { get; set; }
[JsonProperty("MoveSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MoveSpeed")]
public float? MoveSpeed { get; set; }
[JsonProperty("ReadyToDepartureTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ReadyToDepartureTime")]
public float? ReadyToDepartureTime { get; set; }
[JsonProperty("CheckTurnDistanceTime", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("CheckTurnDistanceTime")]
public float? CheckTurnDistanceTime { get; set; }
[JsonProperty("TurnCheckSensitivity", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TurnCheckSensitivity")]
public float? TurnCheckSensitivity { get; set; }
[JsonProperty("DecreaseSpeedOnTurnLimit", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DecreaseSpeedOnTurnLimit")]
public float? DecreaseSpeedOnTurnLimit { get; set; }
[JsonProperty("EndSplineDecelerationDistance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("EndSplineDecelerationDistance")]
public float? EndSplineDecelerationDistance { get; set; }
[JsonProperty("AccelerationSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("AccelerationSpeed")]
public float? AccelerationSpeed { get; set; }
[JsonProperty("DecelerationSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DecelerationSpeed")]
public float? DecelerationSpeed { get; set; }
[JsonProperty("PauseDurationRange", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PauseDurationRange")]
public Vector3? PauseDurationRange { get; set; }
[JsonProperty("BodySwingReturnSpeed", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BodySwingReturnSpeed")]
public float? BodySwingReturnSpeed { get; set; }
[JsonProperty("BodySwingDamping", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BodySwingDamping")]
public float? BodySwingDamping { get; set; }
[JsonProperty("BodySwingIntensity", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BodySwingIntensity")]
public float? BodySwingIntensity { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class MatchMakerMinPlayersByWaitTime
{
[JsonProperty("time", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("time")]
public int? Time { get; set; }
[JsonProperty("minPlayers", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("minPlayers")]
public int? MinPlayers { get; set; }
}
}

View File

@ -0,0 +1,24 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class NonWaveGroupScenario
{
[JsonProperty("MinToBeGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MinToBeGroup")]
public int? MinToBeGroup { get; set; }
[JsonProperty("MaxToBeGroup", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("MaxToBeGroup")]
public int? MaxToBeGroup { get; set; }
[JsonProperty("Chance", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Chance")]
public float? Chance { get; set; }
[JsonProperty("Enabled", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Enabled")]
public bool? Enabled { get; set; }
}
}

16
Model/Input/Pic.cs Normal file
View File

@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class Pic
{
[JsonProperty("path", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("path")]
public string? Path { get; set; }
[JsonProperty("rcid", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("rcid")]
public string? Rcid { get; set; }
}
}

View File

@ -1,4 +1,4 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input

View File

@ -1,4 +1,5 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using LootDumpProcessor.Model.Tarkov;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
@ -11,6 +12,6 @@ namespace LootDumpProcessor.Model.Input
[JsonProperty("Radius", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Radius", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Radius")] [JsonPropertyName("Radius")]
public double? Radius { get; set; } public float? Radius { get; set; }
} }
} }

View File

@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class Requirements
{
[JsonProperty("CompletedQuests", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("CompletedQuests")]
public List<CompletedQuest>? CompletedQuests { get; set; }
[JsonProperty("Standings", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Standings")]
public object? Standings { get; set; }
}
}

View File

@ -1,4 +1,4 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
@ -9,12 +9,12 @@ namespace LootDumpProcessor.Model.Input
[JsonPropertyName("err")] [JsonPropertyName("err")]
public int? Err { get; set; } public int? Err { get; set; }
[JsonProperty("errmsg")]
[JsonPropertyName("errmsg")]
public object? errmsg { get; set; }
[JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("data")] [JsonPropertyName("data")]
public Data? Data { get; set; } public required Data Data { get; set; }
[JsonProperty("errmsg", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("errmsg")]
public object? Errmsg { get; set; }
} }
} }

16
Model/Input/Scene.cs Normal file
View File

@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class Scene
{
[JsonProperty("path", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("path")]
public string? Path { get; set; }
[JsonProperty("rcid", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("rcid")]
public string? Rcid { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class ServerMapBTRSettings
{
[JsonProperty("Develop", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Develop")]
public MapSettings? Develop { get; set; }
[JsonProperty("TarkovStreets", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TarkovStreets")]
public MapSettings? TarkovStreets { get; set; }
[JsonProperty("Woods", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Woods")]
public MapSettings? Woods { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class ServerSettings
{
[JsonProperty("TraderServerSettings", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TraderServerSettings")]
public TraderServerSettings? TraderServerSettings { get; set; }
[JsonProperty("BTRServerSettings", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BTRServerSettings")]
public BTRServerSettings? BTRServerSettings { get; set; }
}
}

View File

@ -0,0 +1,11 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class ServiceItemCost
{
[JsonProperty]
public Dictionary<string, ItemCost>? Costs { get; set; }
}
}

View File

@ -1,4 +1,4 @@
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input namespace LootDumpProcessor.Model.Input
@ -15,7 +15,7 @@ namespace LootDumpProcessor.Model.Input
[JsonProperty("Rotation", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Rotation", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Rotation")] [JsonPropertyName("Rotation")]
public double? Rotation { get; set; } public float? Rotation { get; set; }
[JsonProperty("Sides", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Sides", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Sides")] [JsonPropertyName("Sides")]
@ -31,10 +31,18 @@ namespace LootDumpProcessor.Model.Input
[JsonProperty("DelayToCanSpawnSec", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("DelayToCanSpawnSec", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("DelayToCanSpawnSec")] [JsonPropertyName("DelayToCanSpawnSec")]
public int? DelayToCanSpawnSec { get; set; } public float? DelayToCanSpawnSec { get; set; }
[JsonProperty("ColliderParams", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("ColliderParams", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ColliderParams")] [JsonPropertyName("ColliderParams")]
public ColliderParams? ColliderParams { get; set; } public ColliderParams? ColliderParams { get; set; }
[JsonProperty("BotZoneName", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotZoneName")]
public string? BotZoneName { get; set; }
[JsonProperty("CorePointId", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("CorePointId")]
public int? CorePointId { get; set; }
} }
} }

12
Model/Input/Standing.cs Normal file
View File

@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class Standing
{
[JsonProperty("Value", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Value")]
public float? Value { get; set; }
}
}

View File

@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class TraderServerSettings
{
[JsonProperty("TraderServices", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TraderServices")]
public TraderServices? TraderServices { get; set; }
}
}

View File

@ -0,0 +1,28 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class TraderService
{
[JsonProperty("TraderId", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TraderId")]
public string? TraderID { get; set; }
[JsonProperty("TraderServiceType", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TraderServiceType")]
public string? TraderServiceType { get; set; }
[JsonProperty("Requirements", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("Requirements")]
public Requirements? Requirements { get; set; }
[JsonProperty("ServiceItemCost", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ServiceItemCost")]
public object? ServiceItemCost { get; set; }
[JsonProperty("UniqueItems", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("UniqueItems")]
public List<object>? UniqueItems { get; set; }
}
}

View File

@ -0,0 +1,36 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class TraderServices
{
[JsonProperty("ExUsecLoyalty", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ExUsecLoyalty")]
public TraderService? ExUsecLoyalty { get; set; }
[JsonProperty("ZryachiyAid", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("ZryachiyAid")]
public TraderService? ZryachiyAid { get; set; }
[JsonProperty("CultistsAid", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("CultistsAid")]
public TraderService? CultistsAid { get; set; }
[JsonProperty("PlayerTaxi", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("PlayerTaxi")]
public TraderService? PlayerTaxi { get; set; }
[JsonProperty("BtrItemsDelivery", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BtrItemsDelivery")]
public TraderService? BtrItemsDelivery { get; set; }
[JsonProperty("BtrBotCover", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BtrBotCover")]
public TraderService? BtrBotCover { get; set; }
[JsonProperty("TransitItemsDelivery", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("TransitItemsDelivery")]
public TraderService? TransitItemsDelivery { get; set; }
}
}

44
Model/Input/Transit.cs Normal file
View File

@ -0,0 +1,44 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class Transit
{
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("id")]
public int? Id { get; set; }
[JsonProperty("active", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("active")]
public bool? Active { get; set; }
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("name")]
public string? Name { get; set; }
[JsonProperty("location", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("location")]
public string? Location { get; set; }
[JsonProperty("description", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("description")]
public string? Description { get; set; }
[JsonProperty("activateAfterSec", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("activateAfterSec")]
public int? ActivateAfterSec { get; set; }
[JsonProperty("target", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("target")]
public string? Target { get; set; }
[JsonProperty("time", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("time")]
public int? Time { get; set; }
[JsonProperty("conditions", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("conditions")]
public string? Conditions { get; set; }
}
}

12
Model/Input/Update.cs Normal file
View File

@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class Update
{
[JsonProperty("StackObjectsCount", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("StackObjectsCount")]
public int? StackObjectsCount { get; set; }
}
}

View File

@ -1,48 +0,0 @@
using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Model.Input
{
public class Wave
{
[JsonProperty("number", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("number")]
public int? Number { get; set; }
[JsonProperty("time_min", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("time_min")]
public int? TimeMin { get; set; }
[JsonProperty("time_max", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("time_max")]
public int? TimeMax { get; set; }
[JsonProperty("slots_min", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("slots_min")]
public int? SlotsMin { get; set; }
[JsonProperty("slots_max", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("slots_max")]
public int? SlotsMax { get; set; }
[JsonProperty("SpawnPoints", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("SpawnPoints")]
public string? SpawnPoints { get; set; }
[JsonProperty("BotSide", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotSide")]
public string? BotSide { get; set; }
[JsonProperty("BotPreset", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("BotPreset")]
public string? BotPreset { get; set; }
[JsonProperty("isPlayers", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("isPlayers")]
public bool? IsPlayers { get; set; }
[JsonProperty("WildSpawnType", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("WildSpawnType")]
public string? WildSpawnType { get; set; }
}
}

View File

@ -14,6 +14,10 @@ namespace LootDumpProcessor.Model
[JsonPropertyName("_tpl")] [JsonPropertyName("_tpl")]
public string? Tpl { get; set; } public string? Tpl { get; set; }
[JsonProperty("upd", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("upd")]
public Upd? Upd { get; set; }
[JsonProperty("parentId", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("parentId", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("parentId")] [JsonPropertyName("parentId")]
public string? ParentId { get; set; } public string? ParentId { get; set; }
@ -26,10 +30,6 @@ namespace LootDumpProcessor.Model
[JsonPropertyName("location")] [JsonPropertyName("location")]
public object? Location { get; set; } public object? Location { get; set; }
[JsonProperty("upd", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("upd")]
public Upd? Upd { get; set; }
public override bool Equals(object? obj) public override bool Equals(object? obj)
{ {
if (obj is not Item parsed) if (obj is not Item parsed)

View File

@ -5,12 +5,12 @@ namespace LootDumpProcessor.Model.Processing;
public class BasicInfo public class BasicInfo
{ {
public string Map { get; set; } public required string Map { get; set; }
public string FileHash { get; set; } public required string FileHash { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public RootData Data { get; set; } public RootData? Data { get; set; }
public DateTime Date { get; set; } public DateTime Date { get; set; }
public string FileName { get; set; } public required string FileName { get; set; }
public override bool Equals(object? obj) public override bool Equals(object? obj)
{ {

View File

@ -51,9 +51,9 @@ namespace LootDumpProcessor.Model
[JsonPropertyName("Root")] [JsonPropertyName("Root")]
public string? Root { get; set; } public string? Root { get; set; }
[JsonProperty("Items", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("Items")]
[JsonPropertyName("Items")] [JsonPropertyName("Items")]
public List<Item>? Items { get; set; } public required List<Item> Items { get; set; }
protected bool Equals(Template other) protected bool Equals(Template other)
{ {

View File

@ -7,15 +7,15 @@ namespace LootDumpProcessor.Model
{ {
[JsonProperty("x", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("x", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("x")] [JsonPropertyName("x")]
public double? X { get; set; } public float? X { get; set; }
[JsonProperty("y", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("y", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("y")] [JsonPropertyName("y")]
public double? Y { get; set; } public float? Y { get; set; }
[JsonProperty("z", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("z", NullValueHandling = NullValueHandling.Ignore)]
[JsonPropertyName("z")] [JsonPropertyName("z")]
public double? Z { get; set; } public float? Z { get; set; }
public object Clone() public object Clone()
{ {

View File

@ -54,22 +54,43 @@ public class MultithreadSteppedDumpProcessor : IDumpProcessor
{ {
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug)) if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug))
LoggerFactory.GetInstance().Log($"Processing static data for file {dumped.BasicInfo.FileName}", LogLevel.Debug); LoggerFactory.GetInstance().Log($"Processing static data for file {dumped.BasicInfo.FileName}", LogLevel.Debug);
var dataDump = _jsonSerializer.Deserialize<RootData>(File.ReadAllText(dumped.BasicInfo.FileName));
//var mapName = dataDump.Data.Name;
var mapId = dataDump.Data.Id.ToLower();
// the if statement below takes care of processing "forced" or real static data for each map, only need var dataDump = _jsonSerializer.Deserialize<RootData>(File.ReadAllText(dumped.BasicInfo.FileName));
// to do this once per map, we dont care about doing it again
if (dataDump == null)
{
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Error))
LoggerFactory.GetInstance().Log($"Failed to deserialize data from file {dumped.BasicInfo.FileName}", LogLevel.Error);
return; // Skip processing this dump
}
var mapId = dataDump.Data.LocationLoot.Id.ToLower();
// Because we may use multiple version dumps for map data, merge the static loot between dumps
lock (staticContainersLock) lock (staticContainersLock)
{ {
if (!staticContainers.ContainsKey(mapId)) if (!staticContainers.TryGetValue(mapId, out var mapStaticLoot))
{ {
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info)) if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Info))
LoggerFactory.GetInstance().Log($"Doing first time process for map {mapId} of real static data", LogLevel.Info); LoggerFactory.GetInstance().Log($"Doing first time process for map {mapId} of real static data", LogLevel.Info);
var mapStaticContainers = StaticLootProcessor.CreateStaticWeaponsAndStaticForcedContainers(dataDump);
staticContainers[mapId] = new MapStaticLoot
{
StaticWeapons = new List<Template>(),
StaticForced = new List<StaticForced>()
};
}
else
{
// .Item1 = map name // .Item1 = map name
// .Item2 = force/weapon static arrays // .Item2 = force/weapon static arrays
staticContainers[mapStaticContainers.Item1] = mapStaticContainers.Item2; var mapStaticContainers = StaticLootProcessor.CreateStaticWeaponsAndStaticForcedContainers(dataDump);
var newStaticWeapons = mapStaticContainers.Item2.StaticWeapons.Where(x => !mapStaticLoot.StaticWeapons.Exists(y => y.Id == x.Id));
var newStaticForced = mapStaticContainers.Item2.StaticForced.Where(x => !mapStaticLoot.StaticForced.Exists(y => y.ContainerId == x.ContainerId));
mapStaticLoot.StaticWeapons.AddRange(newStaticWeapons);
mapStaticLoot.StaticForced.AddRange(newStaticForced);
} }
} }

View File

@ -11,10 +11,11 @@ public class FileProcessor : IFileProcessor
{ {
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug)) if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug))
LoggerFactory.GetInstance().Log($"Processing file {parsedData.FileName}...", LogLevel.Debug); LoggerFactory.GetInstance().Log($"Processing file {parsedData.FileName}...", LogLevel.Debug);
List<Template> looseLoot = new List<Template>(); List<Template> looseLoot = new List<Template>();
List<Template> staticLoot = new List<Template>(); List<Template> staticLoot = new List<Template>();
foreach (var item in parsedData.Data.Data.Loot) foreach (var item in parsedData.Data.Data.LocationLoot.Loot)
{ {
if (item.IsContainer ?? false) if (item.IsContainer ?? false)
staticLoot.Add(item); staticLoot.Add(item);

View File

@ -33,9 +33,9 @@ public static class StaticLootProcessor
public static Tuple<string, MapStaticLoot> CreateStaticWeaponsAndStaticForcedContainers(RootData rawMapDump) public static Tuple<string, MapStaticLoot> CreateStaticWeaponsAndStaticForcedContainers(RootData rawMapDump)
{ {
var mapName = rawMapDump.Data.Name; var mapName = rawMapDump.Data.LocationLoot.Name;
var mapId = rawMapDump.Data.Id.ToLower(); var mapId = rawMapDump.Data.LocationLoot.Id.ToLower();
var staticLootPositions = (from li in rawMapDump.Data.Loot var staticLootPositions = (from li in rawMapDump.Data.LocationLoot.Loot
where li.IsContainer ?? false where li.IsContainer ?? false
select li).ToList(); select li).ToList();
var staticWeapons = new List<Template>(); var staticWeapons = new List<Template>();
@ -62,7 +62,7 @@ public static class StaticLootProcessor
public static List<Template> CreateDynamicStaticContainers(RootData rawMapDump) public static List<Template> CreateDynamicStaticContainers(RootData rawMapDump)
{ {
var data = (from li in rawMapDump.Data.Loot var data = (from li in rawMapDump.Data.LocationLoot.Loot
where (li.IsContainer ?? false) && (!LootDumpProcessorContext.GetStaticWeaponIds().Contains(li.Items[0].Tpl)) where (li.IsContainer ?? false) && (!LootDumpProcessorContext.GetStaticWeaponIds().Contains(li.Items[0].Tpl))
select li).ToList(); select li).ToList();

View File

@ -19,6 +19,16 @@ public class JsonFileIntakeReader : IIntakeReader
public bool Read(string file, out BasicInfo basicInfo) public bool Read(string file, out BasicInfo basicInfo)
{ {
var fileData = File.ReadAllText(file); var fileData = File.ReadAllText(file);
if (fileData == null)
{
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Error))
LoggerFactory.GetInstance().Log($"Couldnt parse date from file: {file}", LogLevel.Error);
basicInfo = null;
return false;
}
// If the file format changes it may screw up this date parser // If the file format changes it may screw up this date parser
if (!FileDateParser.TryParseFileDate(file, out var date)) if (!FileDateParser.TryParseFileDate(file, out var date))
{ {
@ -27,25 +37,27 @@ public class JsonFileIntakeReader : IIntakeReader
} }
var fi = _jsonSerializer.Deserialize<RootData>(fileData); var fi = _jsonSerializer.Deserialize<RootData>(fileData);
if (fi.Data?.Name != null && (!_ignoredLocations?.Contains(fi.Data.Name) ?? true)) if (fi?.Data?.LocationLoot?.Name != null && (!_ignoredLocations?.Contains(fi.Data.LocationLoot.Name) ?? true))
{ {
if (!_totalMapDumpsCounter.TryGetValue(fi.Data.Name, out var counter)) if (!_totalMapDumpsCounter.TryGetValue(fi.Data.LocationLoot.Name, out var counter))
{ {
counter = 0; counter = 0;
_totalMapDumpsCounter[fi.Data.Name] = counter; _totalMapDumpsCounter[fi.Data.LocationLoot.Name] = counter;
} }
if (counter < (LootDumpProcessorContext.GetConfig().ReaderConfig.IntakeReaderConfig?.MaxDumpsPerMap ?? 1500)) if (counter < (LootDumpProcessorContext.GetConfig().ReaderConfig.IntakeReaderConfig?.MaxDumpsPerMap ?? 1500))
{ {
basicInfo = new BasicInfo basicInfo = new BasicInfo
{ {
Map = fi.Data.Id.ToLower(), Map = fi.Data.LocationLoot.Id.ToLower(),
FileHash = ProcessorUtil.HashFile(fileData), FileHash = ProcessorUtil.HashFile(fileData),
Data = fi, Data = fi,
Date = date.Value, Date = date ?? DateTime.MinValue,
FileName = file FileName = file
}; };
_totalMapDumpsCounter[fi.Data.Name] += 1;
_totalMapDumpsCounter[fi.Data.LocationLoot.Name] += 1;
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug)) if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug))
LoggerFactory.GetInstance().Log($"File {file} fully read, returning data", LogLevel.Debug); LoggerFactory.GetInstance().Log($"File {file} fully read, returning data", LogLevel.Debug);
@ -54,17 +66,15 @@ public class JsonFileIntakeReader : IIntakeReader
// Map dump limit reached, exit // Map dump limit reached, exit
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug)) if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Debug))
LoggerFactory.GetInstance().Log($"Ignoring file {file} as the file cap for map {fi.Data.Id} has been reached", LogLevel.Debug); LoggerFactory.GetInstance().Log($"Ignoring file {file} as the file cap for map {fi.Data.LocationLoot.Id} has been reached", LogLevel.Debug);
basicInfo = null;
basicInfo = null;
return false; return false;
} }
if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Warning)) if (LoggerFactory.GetInstance().CanBeLogged(LogLevel.Warning))
LoggerFactory.GetInstance().Log( LoggerFactory.GetInstance().Log($"File {file} was not eligible for dump data, it did not contain a location name or it was on ignored locations config", LogLevel.Warning);
$"File {file} was not eligible for dump data, it did not contain a location name or it was on ignored locations config",
LogLevel.Warning
);
basicInfo = null; basicInfo = null;
return false; return false;
} }

View File

@ -9,6 +9,7 @@ public class NetJsonSerializer : IJsonSerializer
private static JsonSerializerOptions _serializeOptions = new() private static JsonSerializerOptions _serializeOptions = new()
{ {
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals,
Converters = Converters =
{ {
new NetJsonKeyConverter(), new NetJsonKeyConverter(),