diff --git a/Core/Callbacks/HideoutCallbacks.cs b/Core/Callbacks/HideoutCallbacks.cs
index 335e319e..26a22479 100644
--- a/Core/Callbacks/HideoutCallbacks.cs
+++ b/Core/Callbacks/HideoutCallbacks.cs
@@ -32,9 +32,9 @@ public class HideoutCallbacks : OnUpdate
///
/// Handle HideoutUpgrade event
///
- public ItemEventRouterResponse Upgrade(PmcData pmcData, HideoutUpgradeRequestData info, string sessionID, ItemEventRouterResponse output)
+ public ItemEventRouterResponse Upgrade(PmcData pmcData, HideoutUpgradeRequestData request, string sessionID, ItemEventRouterResponse output)
{
- _hideoutController.StartUpgrade(pmcData, info, sessionID, output);
+ _hideoutController.StartUpgrade(pmcData, request, sessionID, output);
return output;
}
@@ -42,9 +42,9 @@ public class HideoutCallbacks : OnUpdate
///
/// Handle HideoutUpgradeComplete event
///
- public ItemEventRouterResponse UpgradeComplete(PmcData pmcData, HideoutUpgradeCompleteRequestData info, string sessionID, ItemEventRouterResponse output)
+ public ItemEventRouterResponse UpgradeComplete(PmcData pmcData, HideoutUpgradeCompleteRequestData request, string sessionID, ItemEventRouterResponse output)
{
- _hideoutController.UpgradeComplete(pmcData, info, sessionID, output);
+ _hideoutController.UpgradeComplete(pmcData, request, sessionID, output);
return output;
}
@@ -52,49 +52,49 @@ public class HideoutCallbacks : OnUpdate
///
/// Handle HideoutPutItemsInAreaSlots
///
- public ItemEventRouterResponse PutItemsInAreaSlots(PmcData pmcData, HideoutPutItemInRequestData info, string sessionID)
+ public ItemEventRouterResponse PutItemsInAreaSlots(PmcData pmcData, HideoutPutItemInRequestData request, string sessionID)
{
- return _hideoutController.PutItemsInAreaSlots(pmcData, info, sessionID);
+ return _hideoutController.PutItemsInAreaSlots(pmcData, request, sessionID);
}
///
/// Handle HideoutTakeItemsFromAreaSlots event
///
- public ItemEventRouterResponse TakeItemsFromAreaSlots(PmcData pmcData, HideoutTakeItemOutRequestData info, string sessionID)
+ public ItemEventRouterResponse TakeItemsFromAreaSlots(PmcData pmcData, HideoutTakeItemOutRequestData request, string sessionID)
{
- return _hideoutController.TakeItemsFromAreaSlots(pmcData, info, sessionID);
+ return _hideoutController.TakeItemsFromAreaSlots(pmcData, request, sessionID);
}
///
/// Handle HideoutToggleArea event
///
- public ItemEventRouterResponse ToggleArea(PmcData pmcData, HideoutToggleAreaRequestData info, string sessionID)
+ public ItemEventRouterResponse ToggleArea(PmcData pmcData, HideoutToggleAreaRequestData request, string sessionID)
{
- return _hideoutController.ToggleArea(pmcData, info, sessionID);
+ return _hideoutController.ToggleArea(pmcData, request, sessionID);
}
///
/// Handle HideoutSingleProductionStart event
///
- public ItemEventRouterResponse SingleProductionStart(PmcData pmcData, HideoutSingleProductionStartRequestData info, string sessionID)
+ public ItemEventRouterResponse SingleProductionStart(PmcData pmcData, HideoutSingleProductionStartRequestData request, string sessionID)
{
- return _hideoutController.SingleProductionStart(pmcData, info, sessionID);
+ return _hideoutController.SingleProductionStart(pmcData, request, sessionID);
}
///
/// Handle HideoutScavCaseProductionStart event
///
- public ItemEventRouterResponse ScavCaseProductionStart(PmcData pmcData, HideoutScavCaseStartRequestData info, string sessionID)
+ public ItemEventRouterResponse ScavCaseProductionStart(PmcData pmcData, HideoutScavCaseStartRequestData request, string sessionID)
{
- return _hideoutController.ScavCaseProductionStart(pmcData, info, sessionID);
+ return _hideoutController.ScavCaseProductionStart(pmcData, request, sessionID);
}
///
/// Handle HideoutContinuousProductionStart
///
- public ItemEventRouterResponse ContinuousProductionStart(PmcData pmcData, HideoutContinuousProductionStartRequestData info, string sessionID)
+ public ItemEventRouterResponse ContinuousProductionStart(PmcData pmcData, HideoutContinuousProductionStartRequestData request, string sessionID)
{
- return _hideoutController.ContinuousProductionStart(pmcData, info, sessionID);
+ return _hideoutController.ContinuousProductionStart(pmcData, request, sessionID);
}
///
diff --git a/Core/Helpers/ProfileHelper.cs b/Core/Helpers/ProfileHelper.cs
index 8de4d0dd..02255ad2 100644
--- a/Core/Helpers/ProfileHelper.cs
+++ b/Core/Helpers/ProfileHelper.cs
@@ -662,9 +662,9 @@ public class ProfileHelper
}
var customisationTemplateDb = _databaseService.GetTemplates().Customization;
- var matchingCustomisation = customisationTemplateDb[reward.Target];
+ var matchingCustomisation = customisationTemplateDb.GetValueOrDefault(reward.Target, null);
- if (matchingCustomisation != null)
+ if (matchingCustomisation is null)
{
var rewardToStore = new CustomisationStorage
{
diff --git a/Core/Models/Eft/Common/Globals.cs b/Core/Models/Eft/Common/Globals.cs
index f1c7609c..5f341e59 100644
--- a/Core/Models/Eft/Common/Globals.cs
+++ b/Core/Models/Eft/Common/Globals.cs
@@ -1,4 +1,4 @@
-using Core.Models.Eft.Common.Tables;
+using Core.Models.Eft.Common.Tables;
using Core.Models.Eft.Hideout;
namespace Core.Models.Eft.Common;
@@ -1294,13 +1294,13 @@ public class Mastering
public class Customization
{
[JsonPropertyName("SavageHead")]
- public Dictionary>? Head { get; set; }
+ public Dictionary>? Head { get; set; }
[JsonPropertyName("SavageBody")]
- public Dictionary>? Body { get; set; }
+ public Dictionary>? Body { get; set; }
[JsonPropertyName("SavageFeet")]
- public Dictionary>? Feet { get; set; }
+ public Dictionary>? Feet { get; set; }
[JsonPropertyName("CustomizationVoice")]
public List? VoiceOptions { get; set; }
@@ -1309,6 +1309,41 @@ public class Customization
public BodyParts? BodyParts { get; set; }
}
+public class WildHead
+{
+ [JsonPropertyName("head")]
+ public string Head { get; set; }
+
+ [JsonPropertyName("isNotRandom")]
+ public string IsNotRandom { get; set; }
+
+ [JsonPropertyName("NotRandom")]
+ public string NotRandom { get; set; }
+}
+
+public class WildBody
+{
+ [JsonPropertyName("body")]
+ public string Body { get; set; }
+
+ [JsonPropertyName("hands")]
+ public string Hands { get; set; }
+
+ [JsonPropertyName("isNotRandom")]
+ public string IsNotRandom { get; set; }
+}
+public class WildFeet
+{
+ [JsonPropertyName("head")]
+ public string Head { get; set; }
+
+ [JsonPropertyName("isNotRandom")]
+ public string IsNotRandom { get; set; }
+
+ [JsonPropertyName("NotRandom")]
+ public string NotRandom { get; set; }
+}
+
public class CustomizationVoice
{
[JsonPropertyName("voice")]
diff --git a/Core/Models/Spt/Config/LocationConfig.cs b/Core/Models/Spt/Config/LocationConfig.cs
index 2d751689..e6b9ffb0 100644
--- a/Core/Models/Spt/Config/LocationConfig.cs
+++ b/Core/Models/Spt/Config/LocationConfig.cs
@@ -1,4 +1,4 @@
-using System.Text.Json.Serialization;
+using System.Text.Json.Serialization;
using Core.Models.Common;
using Core.Models.Eft.Common;
@@ -131,7 +131,10 @@ public class LocationConfig : BaseConfig
///
[JsonPropertyName("reserveRaiderSpawnChanceOverrides")]
public ReserveRaiderSpawnChanceOverrides ReserveRaiderSpawnChanceOverrides { get; set; }
-
+
+ ///
+ /// Containers to remove all children from when generating static/loose loot
+ ///
[JsonPropertyName("tplsToStripChildItemsFrom")]
public List TplsToStripChildItemsFrom { get; set; }
diff --git a/Core/Utils/TimerUtil.cs b/Core/Utils/TimerUtil.cs
new file mode 100644
index 00000000..76ada3bf
--- /dev/null
+++ b/Core/Utils/TimerUtil.cs
@@ -0,0 +1,30 @@
+using System.Diagnostics;
+using Core.Annotations;
+
+namespace Core.Utils
+{
+ [Injectable]
+ public class TimerUtil
+ {
+ private readonly Stopwatch _stopwatch;
+
+ public TimerUtil()
+ {
+ _stopwatch = new Stopwatch();
+ _stopwatch.Start();
+ }
+
+ public int Stop(string unit = "sec")
+ {
+ _stopwatch.Stop();
+ var timePassed = _stopwatch.Elapsed;
+
+ return unit switch
+ {
+ "ns" => timePassed.Nanoseconds,
+ "ms" => timePassed.Milliseconds,
+ _ => timePassed.Seconds
+ };
+ }
+ }
+}