In the context of this report:
- Target temperature: the intended 85°C target temperature of the tepidizer
- Stop temperature: the actual 125°C soft-limit of the 4000KDTU/s heating. My guess is that it's the same value as the native overheat temperature, but not influenced by the building material.
(1) The tepidizer checks a surprisingly large area for its target temperature, which allows bypassing this intended target temperature by using pools of cold liquid in specific cells that meet the tepidizer criterias (GetNonSolidCells function).
(2) Tepidizer pulsing allows bypassing target temperature checks. This sometimes works even after a reload.
(3) The tepidizer stop temperature is not properly initialized upon building construction. This allows exploiting (1) or (2) before reload for ludicrous amounts of heat.
(4) Even after reload, the stop temperature is high enough to allow clearly unintended usages using (1) or (2), by combining several techniques (Split-turbine design, temperature clamping).
See this post for an exploit that works even with a 125°C stop temperature: https://forums.kleientertainment.com/forums/topic/110297-self-sustaining-steam-turbine-complex/
A minimal design that uses (2) and (4) looks like that:
It’s power-positive (albeit not by a lot), provides a bit of free cooling and can be used to boil salt water coming from a Salt Water Geyser for free.
Luckily, fixes aren’t that hard. Peter Han and I went ahead and developed fixes for (1) and (2) in the mod Stock Bug Fix (update will be released soon), licensed under MIT license:
(1) This bug can be fixed by providing the actual dimension of heaters rather than using a large square. In SpaceHeater.cs => MonitorHeating, replace GameUtil.GetNonSolidCells by a function that only cells from the building PlacementCells
This is future-proof and will correctly check target temperature for all future SpaceHeater derived buildings.
(2) This bug can be fixed by checking the target temperature before turning it on (when built, plugged in, enabled by automation): call the Update handler for the Active state, which is currently firing every 4000ms, as well when it Enters.
(3) I’ve not investigated how to fix that, as it’s not required if (1) and (2) are fixed.
(4) This bug could be fixed by lowering that stop temperature to somewhere between 85°C and 100°C, which would close off any possibility for exploitation, but it’s not required if (1) and (2) are fixed.
- Load the save file (vanilla, but also works in Spaced Out!)
- Verify that the contraption is power-positive (not connected to an external grid) and provides free cooling (as shown by a separate tepidizer to balance the system).
- 2
- 1
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now