* Updated to latest master version
* Added gas pipe analyzer
* Completed prototype
* Playing with UI display
* Refinement of the main UI
* Renamed gas pipe analyzer to gas pipe sensor
* Added focus network highlighting and map icons for gas pipe sensors
* Added construction graph for gas pipe sensor
* Improved efficiency of atmos pipe and focus pipe network data storage
* Added gas pipe sensor variants
* Fixed gas pipe sensor nav map icon not highlighting on focus
* Rendered pipe lines now get merged together
* Set up appearance handling for the gas pipe sensor, but setting the layers is bugged
* Gas pipe sensor lights turn off when the device is unpowered
* Renamed console
* The gas pipe sensor is now a pipe. Redistributed components between it and its assembly
* AtmosMonitors can now optionally monitor their internal pipe network instead of the surrounding atmosphere
* Massive code clean up
* Added delta states to handle pipe net updates, fixed entity deletion handling
* Nav map blip data has been replaced with prototypes
* Nav map blip fixes
* Nav map colors are now set by the console component
* Made the nav map more responsive to changes in focus
* Updated nav map icons
* Reverted unnecessary namespace changes
* Code tidy up
* Updated sprites and construction graph for gas pipe sensor
* Updated localization files
* Misc bug fixes
* Added missing comment
* Fixed issue with the circuit board for the monitor
* Embellished the background of the console network entries
* Updated console to account for PR #32273
* Removed gas pipe sensor
* Fixing merge conflict
* Update
* Addressing reviews part 1
* Addressing review part 2
* Addressing reviews part 3
* Removed unnecessary references
* Side panel values will be grayed out if there is no gas present in the pipe network
* Declaring colors at the start of some files
* Added a colored stripe to the side of the atmos network entries
* Fixed an issue with pipe sensor blip coloration
* Fixed delay that occurs when toggling gas sensors on/off
The math for our pressure damage (barotrauma) system is directly taken from TG. The constants are the same and the math is almost the same. However there are two errors.
1. Pressure damage started being applied within the WARNING bounds, rather than the HAZARD bounds. This means you started taking low pressure damage at 50 kPa instead of the intended 20 kPa, and also the HUD icon didn't show "danger" like it should even if you were already taking damage.
2. The calculations for high pressure damage were wrong. These are supposed to be linearly scaled, but the function was wrong so the scaling didn't actually work properly (especially when considering the fixed bounds above). This appears to be the case because the function was taken from an incorrect comment in the original source, rather than the real math.
Both of these issues are now fixed to match the TG behavior. Note that this somewhat nerfs pressure damage in non-extreme circumstances. e.g. a room at 40 kPa now gives NO pressure damage, whereas previously it would do full space damage.
The description of the pressure alerts is wrong for "low" severity, but I can't be arsed to fix that right now. Alerts don't have a way to change the description depending on severity...
(cherry picked from commit b5138b245e1782cc062b9bdf165600b7974e9ed7)
* Check for divide by near zero (#22876)
* Clamp after AdjustMoles() (#22907)
Clamping is needed because x - x can be negative with floating point
numbers. If we don't clamp here, the caller always has to call
GetMoles(), clamp, then SetMoles(), which makes this function not very
useful.
* Add maximum atmos temperature limit (#22882)
* Add Tmax
* Increase Tmax
* Revert "Add YAML gas reactions (#22803)" (#22939)
This reverts commit 054321d2c2c17eb55a1640150131c61c29a3eb2b.
Co-authored-by: Kevin Zheng <kevinz5000@gmail.com>
---------
Co-authored-by: Kevin Zheng <kevinz5000@gmail.com>
Co-authored-by: Kara <lunarautomaton6@gmail.com>
MinimumTemperatureDeltaToConsider sets the minimum temperature
difference for a heat capacity calculation to be run. The problem is
that when heating up large quantities of gas (e.g. with a heater), a
small dT becomes an even smaller dT when running DivideInto(). This
means that small changes in temperature are completely ignored.
Emergency tank: 4 minutes (down from 12)
Extended Etank: 9 minutes (down from 37)
Double Etank : 15 minutes (down from 62)
Full tank : 31 minutes (down from 94)
This will make it so EVA crews actually need to watch their pressure if they spend significant time outside the station, and/or have a canister in their general vicinity.
Emergency tanks can no longer be used on timescales that far exceed escaping an emergency situation, but will probably be insufficient in extended emergencies, where access to canisters will now be much more important. How well this works in practice will have to be carefully watched.
* Space sections fractionally slower (1 sec, exponential)
- ExplosivelyDepressurize reduces air pressure by about 20% each pass, sets to vacuum below 20 kPa
- Causes some issues with AdjacentBits on airlock close
* Introduced constants for Spacing in atmospherics
* Limit space wind allowed during spacing to 1000 kPa per tile/sec
- Less tile ripping per tick
- Tiles rip based on wind
- Robustness checks
* Slowed down the spacing a bit
* Slowed down the spacing a bit more
* Better dynamics about high pressure air escaping,
- Reduce air temperature (due to decompression) during spacing
- Make some water vapor for flavor
* Limit temperature loss to >8 Deg.C. No Water vapor
* stuff i'll have to fix anyway when n2o gets merged
* everything except the finished reactions
* freon coolant reaction but with bad curve
* miasmic subsumation
* freon production
* nitrogen and diff temp scaling
* uhh meant to change that
* #
* hitting that frezon boof
* Revert "Remove atmos archiving."
This reverts commit 7fa10bd17b.
* Explosive Depressurization now brings tiles down to TCMB.
* Tiles now specify heat capacity.
* Do not serialize archived gas mixture values.
* Remove bad idea
* dumb typo
* Space gas mixtures now have a harcoded heat capacity.
This is a bit of a hack, but rooms exposed to space now cool down properly when monstermos is disabled.
Huge thanks to @LemonInTheDark for helping me with this!
* Clean up heat capacity methods
* Better logging based on the original monstermos' logging
* Comment explosive depressurization hack better
* Moves all atmos logic from TileAtmosphere to AtmosphereSystem.
* Atmos uses grid anchoring to check for firelocks instead of grid tile lookups.
* CVar for space wind sound
* CVar for explosive depressurization
* Initial
* Cleanup a bunch of things
* some changes dunno
* RequireAnchored
* a
* stuff
* more work
* Lots of progress
* delete pipe visualizer
* a
* b
* pipenet and pipenode cleanup
* Fixes
* Adds GasValve
* Adds GasMiner
* Fix stuff, maybe?
* More fixes
* Ignored components on the client
* Adds thermomachine behavior, change a bunch of stuff
* Remove Anchored
* some work, but it's shitcode
* significantly more ECS
* ECS AtmosDevices
* Cleanup
* fix appearance
* when the pipe direction is sus
* Gas tanks and canisters
* pipe anchoring and stuff
* coding is my passion
* Unsafe pipes take longer to unanchor
* turns out we're no longer using eris canisters
* Gas canister inserted tank appearance, improvements
* Work on a bunch of appearances
* Scrubber appearance
* Reorganize AtmosphereSystem.Piping into a bunch of different systems
* Appearance for vent/scrubber/pump turns off when leaving atmosphere
* ThermoMachine appearance
* Cleanup gas tanks
* Remove passive gate unused imports
* remove old canister UI functionality
* PipeNode environment air, make everything use AssumeAir instead of merging manually
* a
* Reorganize atmos to follow new structure
* ?????
* Canister UI, restructure client
* Restructure shared
* Fix build tho
* listen, at least the canister UI works entirely...
* fix build : )
* Atmos device prototypes have names and descriptions
* gas canister ui slider doesn't jitter
* trinary prototypes
* sprite for miners
* ignore components
* fix YAML
* Fix port system doing useless thing
* Fix build
* fix thinking moment
* fix build again because
* canister direction
* pipenode is a word
* GasTank Air will throw on invalid states
* fix build....
* Unhardcode volume pump thresholds
* Volume pump and filter take time into account
* Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event
* Gas tank node volume is set by initial mixtuer
* I love node container
* Add nullable to some Content.Shared files.
* Use [NotNullWhen(true)]
* Undo adding now redundant !'s
* Forgot one
* Add a ton more nullable
* You can guess
* Fix some issues
* It actually compiles now
* Auto stash before merge of "null2" and "origin/master"
* I lied
* enable annotations -> enable
* Revert ActionBlockerSystem.cs to original
* Fix ActionBlockerSystem.cs
* More nullable
* Undo some added exclamation marks
* Fix issues
* Update Content.Shared/Maps/ContentTileDefinition.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Resolve some issues
* Remove unused method
* Fix more issues
* Fix more issues
* Fix more issues
* Fix more issues
* Fix issue, rollback SharedGhostComponent.cs
* Update submodule
* Fix issue, invert some if-statements to reduce nesting
* Revert RobustToolbox
* FIx things broken by merge
* Some fixes
- Replaced with string.Empty
- Remove some exclamation marks
- Revert file
* Some fixes
* Trivial #nullable enable
* Fix null ables
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Fix breathing
* WIP changes because I don't trust git stash after 2 weeks
* My imports
* Add gasping, adjust breathing values and fix test
* Make the gasp message appear to others
* Add PopupMessageEveryone extension
* Change used percentage to use a single number instead
* Remove unnecessary logging
* Fix air consistency test
* Add test map to SkippedMaps array
* Adds IFireAct, ITemperatureExpose
* Use AtmosDirection instead of Direction for Atmos
* Refactor atmos to heavily rely on arrays and bitflags.
Adds F A S T M O S and reduces atmos tech debt heavily.
* Optimize and fix more stuff
* Kinda improve superconduction
* Pipenet is a word
* T U R B O M O S
* Address reviews
* Small optimization
* Superconduct is also a word
* Remove check
* Cleanup tile atmosphere
* Correct a comment