From aa8911f5aaa27303d5a8ead78f579f9dcf192f82 Mon Sep 17 00:00:00 2001
From: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Date: Mon, 20 Oct 2025 12:17:50 -0700
Subject: [PATCH] Add sanity checks to CustomItemService's AddToLocaleDbs
method
---
.../Services/Mod/CustomItemService.cs | 21 +++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs b/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs
index 4595f039..7f982923 100644
--- a/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/Mod/CustomItemService.cs
@@ -240,21 +240,34 @@ public class CustomItemService(
/// ID of the item being created
protected void AddToLocaleDbs(Dictionary localeDetails, string newItemId)
{
+ // Validate that there's atleast one locale to use as a default
+ var defaultLocale = localeDetails.Keys.FirstOrDefault();
+ if (defaultLocale == null)
+ {
+ return;
+ }
+
var languages = databaseService.GetLocales().Languages;
foreach (var shortNameKey in languages)
{
// Get locale details passed in, if not provided by caller use first record in newItemDetails.locales
localeDetails.TryGetValue(shortNameKey.Key, out var newLocaleDetails);
- newLocaleDetails ??= localeDetails[localeDetails.Keys.FirstOrDefault()];
+ newLocaleDetails ??= localeDetails[defaultLocale];
+
+ // If there's no name defined, don't add a transformer, the mod is probably handling locales elsewhere
+ if (newLocaleDetails.Name == null)
+ {
+ continue;
+ }
if (databaseService.GetLocales().Global.TryGetValue(shortNameKey.Key, out var lazyLoad))
{
lazyLoad.AddTransformer(localeData =>
{
- localeData![$"{newItemId} Name"] = newLocaleDetails.Name!;
- localeData[$"{newItemId} ShortName"] = newLocaleDetails.ShortName!;
- localeData[$"{newItemId} Description"] = newLocaleDetails.Description!;
+ localeData![$"{newItemId} Name"] = newLocaleDetails.Name;
+ localeData[$"{newItemId} ShortName"] = newLocaleDetails.ShortName ?? "";
+ localeData[$"{newItemId} Description"] = newLocaleDetails.Description ?? "";
return localeData;
});