List of Fixes

Updated a month ago

Tweaks:

Artifice AudioSource lag

  • Artifice will no longer try to play a disabled audio source near the ship every frame, causing possible frame drops
    • Does this by checking a box that should stop this from happening, and it's worked so far, it's just a bit band-aid-y so there's probably better solutions.

Landmine console log

  • Landmines no longer print their "audio spatializer failed to" blablabla
    • Does this by instantiating a new GameObject on every mine that has an AudioSource with identical parameters. The mine and its PlayAudioAnimationEvent are told to use this new AudioSource, which luckily does not print that.

Spike Roof Trap console log

  • Spike Traps no longer print "PlayOneShot called with null AudioClip"
    • Does this by injecting a silent AudioClip in the PlayAudioAnimationEvent calling PlayOneShot.

Debug time toggle

  • Pressing the button to store furniture while the menu is open will toggle TimeOfDay.Instance.globalTimeSpeedMultiplier from its normal value to 0 and vice versa.
    • Only does this when playing in editor, such as with LethalDevMode.

Reset TimeOfDay music

  • The TimeOfDay.Instance.playDelayedMusicCoroutine is set to null to make it possible for ambient music to play again on later days
    • Even if non-ambient music such as at the Company and going back into the facility prevent it from going back to null, and thus preventing it from restarting and playing music on later days.
    • It does this after a random chance. It is guaranteed to reset in singleplayer and quickly drops off the more players there are, because other people's voices then fill the silence.

AnimatedObjectTrigger null error

  • A HarmonyTranspiler adds a null-check to AnimatedObjectTrigger's PlayAudio() in case it wants to play audio but has a null ParticleSystem
    • This predominantly fixes the Experimentation garage door not playing sound nor syncing properly. But it theoretically also fixes every other instance of this breaking.
    • It is theoretically also the most prone to breaking if another mod already fixes this with their own Transpiler.

ModelReplacementAPI first-person arms lag

  • ModelReplacementAPI's first-person models no longer act jittery while the ship is moving
    • Did this by introducing a new Update() that checks if you're locally wearing a replaced model, and then if the model's Transform.parent is different from your player object's Transform.parent, and then reparents the replaced model to whatever your player is parented to.
    • Also fixes this on the mineshaft elevator and I guess every other object that parents the player to non-PlayersContainers.
    • Only does this every 0.5 seconds instead of every frame to hopefully save performance.
    • Turned off by default in v0.0.2 since ModelReplacementAPI apparently addressed this by then.

Mineshaft navigation to elevator

  • The ship monitor will now draw a line to the elevator button when watching a player that's underground in the mineshaft
    • Apparently by default it tries to draw a line to the above-ground doors, which it can't find and shoots the line off to wherever it thinks is closest.
    • This also uses a HarmonyTranspiler, and replaces the entire chunk of code between finding the main entrance position to draw a line to and checking if the path can be calculated. Transpilers are very much prone to errors, and this only affects one dungeon type anyway, so feel free to turn this off.

Spectate camera flashlight

  • The spectate camera's flashlight no longer has a so-called "cookie" (a texture, basically) that would be so large it would throw errors in the console log every frame and prevent other flashlights from properly turning on
    • This flashlight is theoretically already in the base game, but primarily available through SpectateEnemies.
    • Means other mods that enable this flashlight are also affected, but the light itself looks and functions the same.

GrabbableObject parameters synchronization

  • Items such as scrap sometimes get their values written to only on the host, but checked by on all clients, leading to for example items displaying their "Scrap collected!" pop-up on clients days after having been collected
  • This setting simply sets some of those values to what they would be on the host at around the time the host would set them, on all players
    • This is simply a handful of HarmonyPostfixes upon joining a lobby and finishing a day, nothing special

Gift Box console log

  • The Gift Box would, if opened on a client outside of the ship, try to drop its gift item onto a null parent, but then later checks for the parameters of its parent. So, because it doesn't have a parent, it throws an error in the console log and doesn't perform the rest of the method
  • This is basically inconsequential, but just in case, this fix makes it so that the Gift Box always drops its gift item onto the propsContainer, should it try to set it to a null parent
    • This fix overwrites the __result of the GetGiftObjectParent() method using a HarmonyPostfix, potentially leading to inconsistencies, should other mods touch this too?

Water drops on screen

  • During rainy and stormy weather, looking up while outside will make water drops fall onto your helmet. Weirdly enough, this didn't happen with flooded weather, even though it rains during floods too. This fix changes that so all three weathers show these water drops when looking up.
    • This is another use of a HarmonyTranspiler, this time a small one on the HUDManager's HelmetCondensationDrops(), copying 3 lines of the relevant if-statement with the addition of checking for flood-weather

First-person helmet shadow

  • The helmet you see in first-person is actually a different helmet that all other players see. It doesn't move around when looking around, so if you look down, you can see the shadow it casts floating above the rest of your player model. This fix turns off its shadow, so you only see your player model
    • I check for the local player's helmet once, and then turn off its shadowCasting. For some reason, it turns itself back on every frame, so I forcefully turn it off every frame on a HarmonyPostfix of the player's LateUpdate

Lingering radar icons

  • Radar icons for scrap items and keys can sometimes stick around forever or after the key has been used to unlock a door. This fix adds more moments and conditions for radar icons to be removed from the ship monitor, making each round a cleaner and more accurate representation of the current round's items and information

Fix ship monitor terrain

  • The new map radar showing the planet's terrain on the ship monitor is supposed to check for the current planet's terrain every round but, due to some very specific timing, doesn't. This fix tells the ship monitor to check for the current planet's terrain when loading the current planet, so you can see its terrain on subsequent days
    • This is just a simple boolean change on a HarmonyPostfix that gets called once the ship monitor switches to the current level display, nothing special

SpectateEnemies enemy names

  • "Crawler"? "Mouth-dog"? You're probably more familiar with the names "Thumper" and "Eyeless dog". The prior are the internal file names for these enemies, the latter the bestiary names. This fix tells SpectateEnemies to use the bestiary names instead of the internal file names, as well as fixing the Ghost girl's displayed target
    • This is actually a HarmonyTranspiler to rewrite the code of SpectateEnemies, which I found to be wildly awkward and sort of rude to do (instead of just, you know, filing a bug report). But I simply wanted to get it done for me and my friends, so if it breaks I have brought that only upon myself