Versions/AP-404823

Update Information
Hey friends!

Time for another update! We've knocked out a bunch of recently introduced bugs, cleaned up and expanded some of the new features from the Automation Pack, and added a lot of refinement to the way crashes and mods are handled.

Additionally, there's a new color blindness mode which can be selected from the options menu. Read all about it and leave comments on jambell's post!

I'd also like to mention that like many other teams, the ONI team has been affected by the transition to working from home. We're not sure yet how this is going to affect our future releases, but we're glad to provide this weird pee simulator to amuse you during these times and we're going to keep making it better!

These changes are available for testing on the testing branch (see instructions at the bottom of this post), so please check them out and let us know if you find any bugs or issues!

What does this testing branch contain so far?
Here are the changes we've made so far in this update, loosely categorized:

Features and Changes

 * Add Protanopia and Deuteranopia color blindness modes.
 * Added Feedback button below patch notes as shortcut to feedback options.
 * Mod and Crash Screen Improvements:
 * Mods Screen button says "Browse" instead of "Subscription" for local mods. Hitting the button always opened a folder to the local directory, now the text matches that
 * Hook up new art for crash report screen
 * Enable/Disable all mods button on ModsScreen
 * Errors encountered while mods are installed will now bring up an error dialog.
 * Fix localization on the error screen
 * Error screen now has a "MORE INFO" button that reveals the callstack, and a copy to clipboard button
 * Mods referenced in the stack trace will be disabled by default (unless they are dev mods).
 * Disable mods that are non-dev mods when they fail to load, even if other mods are dev mods. This was causing infinite loops for mod creators when a mod was crashing that had nothing to do with what they were developing
 * Mods can be disabled or enabled directly on the error screen.
 * Under the hood, Timer Sensor now counts Logic Ticks rather than Time.time, which will make them more accurate and better at staying in sync with each other.
 * Counter Sensor improvements:
 * Add "Advanced Mode" toggle to Counter sidescreen. Advanced Mode performs a % on the count, rather than a direct comparison, allowing for actual binary counting.
 * Advanced Mode: sends a Green Signal only for one logic tick, rather than continuously.
 * Standard Mode: After its initial 0, Counter Sensor sidescreen displays its count as "10" rather than 0.
 * Counter sidescreen visual polish.
 * Improved counter's reset behavior to be more reliable.
 * Added some new hammer strike sounds
 * New logic gate sounds, changes and remixing
 * Sweepbot Station contents are always marked for clearing - similar to user marked sweeps on floor ore. This allows their storage priority to be set right on the Sweepbot Station
 * Notifier sidescreen now has tooltips for the three notification types.
 * New !! icon for VERY BAD notifications
 * OR and XOR gate backpieces shaped to look more like their symbols.
 * Add Copy Settings button to Signal Switch, Power Switch, Ribbon Reader, Ribbon Writer.

Fixes

 * Further fixes for constructions getting dragged around during autosave and when the Notifier triggers
 * Fixed building toggle errands not being saved.
 * Fix rocket module meters not matching the offset of their parent module
 * Fix crash when deconstructing a tile
 * Counter Sensor defaults to the "off" anim state when first built.
 * Counter Sensor no longer sends Green Signal for its initial "zero" state, making daisy-chaining possible without requiring to reset.
 * Copy Settings works correctly for Liquid Reservoirs and Gas Reservoirs
 * Signal Switch and Circuit Switch sidescreens now scale correctly with UI scaling.
 * Signal Switch now initializes in the right animation based on whether it's on or off, instead of always defaulting to off.
 * Signal Switch no longer says it requires Duplicant operation.
 * Control Inputs on the Signal Selector/Signal Distributor now only read from the first bit of an Automation Ribbon.
 * Canister emptier no longer shares auto-bottle strings with bottle emptier
 * When paused, multiple Signal Switches/Circuit Switches can be toggled at a time, and general improvements to the functionality of the player controlled toggle sidescreen.
 * Automation Ribbon Bridges now correctly de-tint if they are offscreen when the Automation Overlay is closed
 * Light audio mix and performance fixes around creatures
 * Fixed issue allowing for 2 Sweepys to be produced for the same base station
 * MOTD strings can now be translated by Language Mods
 * Sweepy fixes:
 * Refined metal for sweepy production will no longer be cleared from the Sweepy base station as if it were swept clutter. This should fix some infinite delivery loops with the sweepy station.
 * Improved Sweepy status item when trapped
 * Fixed empty status item for Sweepy. Added status items for common states. Added placeholder string to base station description to describe emptying behavior.
 * Fixed the dying animation sometimes being interrupted by the idle animation.
 * Fixed bug allowing Sweepy to magically change the temperature of things swept.
 * Fix some instances of dupes still carrying on conversations after death.
 * Fix crash when a dupe greets another dupe right as they're dying.
 * A couple fixes for trying to retrieve the schedule of a dead dupe.
 * Fix crash when a critter dies right before they get wrangled.
 * Fix crash when a building or plant is destroyed while its room is being updated.
 * Fix achievement crash for very old saves.
 * Fix retry-loop when a translation mod becomes enabled somehow.
 * Prevent softlock when a modal dialog is rendering behind the crash report screen.
 * Separate limits for sliders and text input fields in sandbox tools. Should allow very negative heat gun values and prohibit <1 brush size values.
 * Sandbox brush size limited to 50
 * Sandbox settings revert to default settings if the saved data is not applicable (update IDs loaded in base game). Mass, temperature, and brush radius values are better clamped.
 * Further fix for refunding secondary materials from construction when a building is replacing itself
 * Tweaks to the Reader/Writer and Ribbon art to overlap better and display the proper animations

Optimizations

 * Removed validations in our arrays which were were taking up over 5% of the frame
 * Minor optimize to ConduitFlow
 * Bridge optimizations save about 3% of the frame when a steady stream of elements are passing through conduit bridges

Modding

 * Added hooks to LogException in KMonoBehehaviour's try-catches for mod support
 * Removed IEffectDescriptor; in every case except one it just deferred to the game object anyways, so no reason to inject the BuildingDef. This makes all effect descriptors use the same interface, simplifying things.
 * Support archived versions for mods
 * This will allow modders in the future to publish versions of their mod simultaneously for the testing and release builds. It won't be usable for this testing period because the change hasn't made it to release yet, but next patch this can be used to update mods on the Testing branch without breaking them for Release players!
 * The "current" most up-to-date version of the mod continues to live in the root folder of the mod as always.
 * Archived/previous versions of the mod can be moved into an 'archived_versions' folder, and their last good version specified in a top-level file called 'archived_versions.yaml'. Its structure looks like this:


 * archivedVersions:
 * - relativePath: archived_versions/0
 * lastWorkingBuild: 10000
 * - relativePath: archived_versions/1
 * lastWorkingBuild: 10001