Skip to content

Mantis Spawn Loadout Fix#1029

Merged
fenndragon merged 3 commits intoHardLightSector:masterfrom
LoboFrontale:mantis-spawn-loadout-fix
Mar 20, 2026
Merged

Mantis Spawn Loadout Fix#1029
fenndragon merged 3 commits intoHardLightSector:masterfrom
LoboFrontale:mantis-spawn-loadout-fix

Conversation

@LoboFrontale
Copy link
Contributor

@LoboFrontale LoboFrontale commented Mar 19, 2026

About the PR

Fixes the Mantis role spawning without their loadout.

This is a YAML only fix which adds missing mantis entries. It affects three files. Two only needed to be edited with entries for the Mantis' loadout group and role loadout, transplanted over from Delta-V. And the other is the respective Mantis loadout YAML which was previously missing. I've added it to _HL as it is not a standard job.

Why / Balance

This allows the Mantis to spawn with their proper equipment, making it so there won't be more 'Nakey Mantis' admin help messages.

Technical details

I've added missing roleLoadout and loadout group entries for the Mantis role, alongside adding the missing Loadout file that I've taken from Delta-V

How to test

  • Spawn in as Mantis
  • Check that your character has all items belonging to the Mantis

Breaking changes

None, this does not remove or impact other roles, or existing code. It simply adds missing entries and a YAML for the Mantis.

🆑

  • fix: Mantis now spawns with the proper loadout!

@fenndragon
Copy link
Collaborator

Unhandled exception. NUnit.Framework.AssertionException: CLIENT: 10.444s [ERRO] eng: Exception whilst loading prototypes from /Prototypes/Loadouts/loadout_groups.yml:
Robust.Shared.Prototypes.PrototypeLoadException: Duplicate ID: 'JobForensicMantis' for kind 'Content.Shared.Preferences.Loadouts.RoleLoadoutPrototype
at Robust.Shared.Prototypes.PrototypeManager.LoadDirectory(ResPath path, Boolean overwrite, Dictionary2 changed) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Prototypes/PrototypeManager.YamlLoad.cs:line 103 Exception: at NUnit.Framework.Assert.ReportFailure(String message) at NUnit.Framework.Assert.Fail(String message) at Content.IntegrationTests.PoolTestLogHandler.Log(String sawmillName, LogEvent message) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolTestLogHandler.cs:line 66 at Robust.Shared.Log.LogManager.Sawmill.LogInternal(String sourceSawmill, LogEvent message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 119 at Robust.Shared.Log.LogManager.Sawmill.LogInternal(String sourceSawmill, LogEvent message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 130 at Robust.Shared.Log.LogManager.Sawmill.Log(LogLevel level, Exception exception, String message, Object[] args) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 89 at Robust.Shared.Log.LogManager.Sawmill.Log(LogLevel level, String message, Object[] args) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 101 at Robust.Shared.Log.LogManager.Sawmill.Log(LogLevel level, String message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 106 at Robust.Shared.Log.LogManager.Sawmill.Error(String message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 179 at Robust.Shared.Prototypes.PrototypeManager.LoadDirectory(ResPath path, Boolean overwrite, Dictionary2 changed) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Prototypes/PrototypeManager.YamlLoad.cs:line 107
at Robust.Client.Prototypes.ClientPrototypeManager.LoadDefaultPrototypes(Dictionary2 changed) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Client/Prototypes/ClientPrototypeManager.cs:line 35 at Robust.Client.GameController.StartupContinue(DisplayMode displayMode) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Client/GameController/GameController.cs:line 197 at Robust.UnitTesting.RobustIntegrationTest.ClientIntegrationInstance.Init() in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 1049 at Robust.UnitTesting.RobustIntegrationTest.ClientIntegrationInstance.ThreadMain() in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 943 --- End of stack trace from previous location --- at Robust.UnitTesting.RobustIntegrationTest.IntegrationInstance.WaitIdleImplAsync(Boolean throwOnUnhandled, CancellationToken cancellationToken) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 477 at Content.IntegrationTests.PoolManager.GenerateClient(PoolSettings poolSettings, TextWriter testOut) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 179 at Content.IntegrationTests.Pair.TestPair.Initialize(PoolSettings settings, TextWriter testOut, List1 testPrototypes) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/Pair/TestPair.cs:line 68
at Content.IntegrationTests.PoolManager.CreateServerClientPair(PoolSettings poolSettings, TextWriter testOut) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 368
at Content.IntegrationTests.PoolManager.GetServerClientPair(PoolSettings poolSettings) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 261
at Content.IntegrationTests.PoolManager.GetServerClientPair(PoolSettings poolSettings) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 274
at Content.IntegrationTests.PoolManager.GetServerClient(PoolSettings poolSettings) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 191
at Content.YAMLLinter.Program.GetClientServerAssemblies() in /home/runner/work/HardLight/HardLight/Content.YAMLLinter/Program.cs:line 202
at Content.YAMLLinter.Program.RunValidation() in /home/runner/work/HardLight/HardLight/Content.YAMLLinter/Program.cs:line 137
at Content.YAMLLinter.Program.Main(String[] _) in /home/runner/work/HardLight/HardLight/Content.YAMLLinter/Program.cs:line 48
at Content.YAMLLinter.Program.

(String[] _)

something wrong with loadout groups

@LoboFrontale
Copy link
Contributor Author

On it. Found I accidentally made a duplicate of the role loadout instead of the loadout group.

@fenndragon
Copy link
Collaborator

Unhandled exception. NUnit.Framework.AssertionException: CLIENT: 10.223s [ERRO] eng: Exception whilst loading prototypes from /Prototypes/Loadouts/role_loadouts.yml:
Robust.Shared.Prototypes.PrototypeLoadException: Duplicate ID: 'JobForensicMantis' for kind 'Content.Shared.Preferences.Loadouts.RoleLoadoutPrototype
at Robust.Shared.Prototypes.PrototypeManager.LoadDirectory(ResPath path, Boolean overwrite, Dictionary2 changed) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Prototypes/PrototypeManager.YamlLoad.cs:line 103 Exception: at NUnit.Framework.Assert.ReportFailure(String message) at NUnit.Framework.Assert.Fail(String message) at Content.IntegrationTests.PoolTestLogHandler.Log(String sawmillName, LogEvent message) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolTestLogHandler.cs:line 66 at Robust.Shared.Log.LogManager.Sawmill.LogInternal(String sourceSawmill, LogEvent message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 119 at Robust.Shared.Log.LogManager.Sawmill.LogInternal(String sourceSawmill, LogEvent message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 130 at Robust.Shared.Log.LogManager.Sawmill.Log(LogLevel level, Exception exception, String message, Object[] args) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 89 at Robust.Shared.Log.LogManager.Sawmill.Log(LogLevel level, String message, Object[] args) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 101 at Robust.Shared.Log.LogManager.Sawmill.Log(LogLevel level, String message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 106 at Robust.Shared.Log.LogManager.Sawmill.Error(String message) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Log/LogManager.Sawmill.cs:line 179 at Robust.Shared.Prototypes.PrototypeManager.LoadDirectory(ResPath path, Boolean overwrite, Dictionary2 changed) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Shared/Prototypes/PrototypeManager.YamlLoad.cs:line 107
at Robust.Client.Prototypes.ClientPrototypeManager.LoadDefaultPrototypes(Dictionary2 changed) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Client/Prototypes/ClientPrototypeManager.cs:line 35 at Robust.Client.GameController.StartupContinue(DisplayMode displayMode) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.Client/GameController/GameController.cs:line 197 at Robust.UnitTesting.RobustIntegrationTest.ClientIntegrationInstance.Init() in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 1049 at Robust.UnitTesting.RobustIntegrationTest.ClientIntegrationInstance.ThreadMain() in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 943 --- End of stack trace from previous location --- at Robust.UnitTesting.RobustIntegrationTest.IntegrationInstance.WaitIdleImplAsync(Boolean throwOnUnhandled, CancellationToken cancellationToken) in /home/runner/work/HardLight/HardLight/RobustToolbox/Robust.UnitTesting/RobustIntegrationTest.cs:line 477 at Content.IntegrationTests.PoolManager.GenerateClient(PoolSettings poolSettings, TextWriter testOut) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 179 at Content.IntegrationTests.Pair.TestPair.Initialize(PoolSettings settings, TextWriter testOut, List1 testPrototypes) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/Pair/TestPair.cs:line 68
at Content.IntegrationTests.PoolManager.CreateServerClientPair(PoolSettings poolSettings, TextWriter testOut) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 368
at Content.IntegrationTests.PoolManager.GetServerClientPair(PoolSettings poolSettings) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 261
at Content.IntegrationTests.PoolManager.GetServerClientPair(PoolSettings poolSettings) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 274
at Content.IntegrationTests.PoolManager.GetServerClient(PoolSettings poolSettings) in /home/runner/work/HardLight/HardLight/Content.IntegrationTests/PoolManager.cs:line 191
at Content.YAMLLinter.Program.GetClientServerAssemblies() in /home/runner/work/HardLight/HardLight/Content.YAMLLinter/Program.cs:line 202
at Content.YAMLLinter.Program.RunValidation() in /home/runner/work/HardLight/HardLight/Content.YAMLLinter/Program.cs:line 137
at Content.YAMLLinter.Program.Main(String[] _) in /home/runner/work/HardLight/HardLight/Content.YAMLLinter/Program.cs:line 48
at Content.YAMLLinter.Program.

(String[] _)

@github-actions github-actions bot added the FTL label Mar 20, 2026
@LoboFrontale
Copy link
Contributor Author

There we go, hopefully there shouldn't be any more errors. As an aside, I added the missing file for the English loadout menu text.

@fenndragon fenndragon merged commit 395e52b into HardLightSector:master Mar 20, 2026
9 of 10 checks passed
xemeraldwingx-dot added a commit that referenced this pull request Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants