diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
index 504a9cd2e..2ddef0fe0 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
@@ -836,13 +836,21 @@ namespace Barotrauma
private static string humanConfigFile;
public static string HumanConfigFile
{
- get
+ get
{
if (string.IsNullOrEmpty(humanConfigFile))
{
- humanConfigFile = GetConfigFile("Human");
+ humanConfigFile = GameMain.Instance.GetFilesOfType(ContentType.Character)?
+ .FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == "human.xml");
+
+ if (humanConfigFile == null)
+ {
+ DebugConsole.ThrowError($"Couldn't find a human config file from the selected content packages!");
+ DebugConsole.ThrowError($"(The config file must end with \"human.xml\")");
+ return string.Empty;
+ }
}
- return humanConfigFile;
+ return humanConfigFile;
}
}
@@ -859,6 +867,46 @@ namespace Barotrauma
}
}
+ ///
+ /// Searches for a character config file from all currently selected content packages,
+ /// or from a specific package if the contentPackage parameter is given.
+ ///
+ public static string GetConfigFile(string speciesName, ContentPackage contentPackage = null)
+ {
+ string configFile = null;
+ if (contentPackage == null)
+ {
+ configFile = GameMain.Instance.GetFilesOfType(ContentType.Character)
+ .FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == $"{speciesName.ToLowerInvariant()}.xml");
+ }
+ else
+ {
+ configFile = contentPackage.GetFilesOfType(ContentType.Character)?
+ .FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == $"{speciesName.ToLowerInvariant()}.xml");
+ }
+
+ if (configFile == null)
+ {
+ DebugConsole.ThrowError($"Couldn't find a config file for {speciesName} from the selected content packages!");
+ DebugConsole.ThrowError($"(The config file must end with \"{speciesName}.xml\")");
+ return string.Empty;
+ }
+ return configFile;
+ }
+
+ private static IEnumerable characterConfigFiles;
+ private static IEnumerable CharacterConfigFiles
+ {
+ get
+ {
+ if (characterConfigFiles == null)
+ {
+ characterConfigFiles = GameMain.Instance.GetFilesOfType(ContentType.Character);
+ }
+ return characterConfigFiles;
+ }
+ }
+
public static string GetConfigFile(string speciesName, ContentPackage contentPackage = null)
{
string configFile = null;