DynamicThing¶
Assets.Scripts.Objects.DynamicThing is the Thing subclass for objects that can
be carried and can live in a slot. Only one property of it is recorded here so far,
and it is a breaking change rather than a description of the class.
SetSlotTypes(Slot.Class) was REMOVED in 0.2.6420.27780¶
Verified 2026-08-12 in 0.2.6420.27780, re-confirmed 2026-08-13 in 0.2.6428.27798
(the same metadata string scan, with DynamicThing still passing as the control).
The removal has held across two game builds, so treat it as permanent rather than as
an accident of one release. The method
void Assets.Scripts.Objects.DynamicThing.SetSlotTypes(Assets.Scripts.Objects.Slot.Class)
existed in 0.2.6403.27689 and does not exist in 0.2.6420.27780.
Evidence, two independent kinds:
1. Metadata. The string SetSlotTypes does not occur anywhere in the new
Assembly-CSharp.dll, while DynamicThing does (control). .NET stores method names
in the #Strings heap, so a method whose name is absent from the assembly's bytes
does not exist in it. The same scan finds SetSlotTypes present in
ScriptedScreens.dll, which was compiled against the older build.
2. Runtime. A client with mods that call it throws
MissingMethodException: Method not found: void Assets.Scripts.Objects.DynamicThing.SetSlotTypes(Assets.Scripts.Objects.Slot/Class)
from two different call sites, in this order:
# a mod's own entrypoint
StationeersLaunchPad.Entrypoints.StationeersModsEntrypoint.Initialize (LoadedMod mod)
StationeersLaunchPad.Loading.LoadedMod.LoadEntrypoints ()
StationeersLaunchPad.Loading.LoadStrategyLinearSerial.LoadEntryPoints ()
# and the GAME'S OWN prefab load, once the first caller is disabled
Assets.Scripts.Objects.Prefab.LoadAll ()
WorldManager.LoadGameDataAsync ()
WorldManager.Initialize ()
Assets.Scripts.GameManager.Start ()
Why this matters beyond the mod that calls it¶
The second stack is the important one. When the throwing call happens inside
Prefab.LoadAll(), it propagates through WorldManager.Initialize() and out of
GameManager.Start(), which never completes. The client then sits at
phase == "menu" with gameInitialized == false for ever, rendering normally at
full frame rate, with every mod apparently loaded. One third-party mod calling a
removed method is enough to stop the client reaching a usable main menu, and the
symptom does not name the mod: the BepInEx LogOutput.log stops early and records
nothing about it. Only the Unity player log carries the exception.
That failure is easy to misread as StationeersLaunchPad's documented Workshop park, which is a different condition with a different signature:
| plugin count | gameInitialized | cause | |
|---|---|---|---|
| Workshop park | <= 2 |
false | a failed Steam Workshop query |
| this | full count (36-37 observed) | false | a removed method thrown out of Prefab.LoadAll |
Known callers: two, for one day¶
Scanning every Workshop assembly under steamapps\workshop\content\544550 for the
string on 2026-08-12 found exactly two, both by the same author, and both failed on
that build:
ScriptedScreens.dll(Workshop 3666779631), version 0.9.5.0StationeersLua.dll(Workshop 3659911735), version 0.9.5.0
Disabling only the first was not enough: the second then threw the same exception
from Prefab.LoadAll instead of from its own entrypoint, so both had to be disabled
for the client to boot.
Both shipped 1.0.0.0 on 2026-08-13 and neither calls the method any more. The
same metadata string scan against the updated assemblies returns SetSlotTypes
absent from both, with DynamicThing still present in each as the control. The
window in which this stopped a client from booting was about one day wide, and the
"disable these two" instruction that briefly lived in this repository's rig notes is
retired. As of 2026-08-13 the scan finds no caller in any installed Workshop
assembly.
| 0.9.5.0 (2026-08-12) | 1.0.0.0 (2026-08-13) | |
|---|---|---|
ScriptedScreens.dll calls SetSlotTypes |
yes | no |
StationeersLua.dll calls SetSlotTypes |
yes | no |
| Client reaches a usable menu with both enabled | no | yes |
No replacement method was identified, and none was needed by either caller.
SetSlotType (singular) is also absent from 0.2.6420.27780 and from
0.2.6428.27798, so this was never a rename to the obvious neighbouring name.
Verification History¶
- 0.2.6420.27780, 2026-08-12:
SetSlotTypesconfirmed absent by metadata string scan (withDynamicThingas a passing control) and by two distinct runtimeMissingMethodExceptionstacks. Callers enumerated across all installed Workshop assemblies. ThegameInitialized-never-true consequence observed directly on two separate boots of a rig instance. - 0.2.6428.27798, 2026-08-13: re-verified. The method is still absent from
Assembly-CSharp.dllon the newer build, so the removal held across the update. Additive finding, contradicting nothing above: both known callers shipped 1.0.0.0 on 2026-08-13 (file timestamps 15:50,<Version>1.0.0.0</Version>in eachAbout.xml) and the string scan now returns zero hits in either assembly. The caller list for this build is therefore empty, and the "both must be disabled" consequence no longer applies to any installed mod. The removal itself, its two runtime stacks and thePrefab.LoadAllblast radius are unchanged and still correct for any assembly compiled against the older API.