* Predicted gas pumps
I wanted to try out atmos and first thing I found.
* a
* Atmos device prediction
- Canisters
- Tanks
- Internals
AirMixes aren't predicted so nothing on that front but all the UIs should be a lot closer.
* Remove details range
* Gas tank prediction
* Even more sweeping changes
* Alerts
* rehg
* Popup fix
* Fix merge conflicts
* Fix
* Review
* Fire extinguishers now put out candles
This did not actually require any changes to flammable or extinguishers directly, the only necessary changes were to make the collision actually work.
Vapor entities (also used for fire extinguishers) now have a collision layer, so they can hit items.
Added a new FlammableSetCollisionWake component to actually enable collision on candles while they are lit, because otherwise CollisionWake on entities gets in the way too.
* Extinguishing items is now relayed to held/worn items
This means held candles get extinguished too.
Involved moving the core logic of ExtinguishReaction into an event so that it can be relayed via the existing hand/inventory relay logic.
* Add helper functions for subscribing to relayed events.
Use these in FlammableSystem
* Make extinguishers work on cigarettes too
A bunch of renaming to make the rest of my code work with SmokableComponent
---------
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
* Make ReactionResults an array
We're making the dictionaries fixed-size anyway.
Alternatively could use a frozendictionary but not sure on the perf difference. Worst case whoever adds another reactionresult makes a minor adjustment
* apply conventions
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
The comparison for doing gas exchange used current and not archived
moles. This could lead to update order-dependent gas spreading effects.
To fix this, convert TileAtmosphere's MolesArchived and
TemperatureArchived to a AirArchived, and use that in the comparison
method.
---------
Co-authored-by: PraxisMapper <praxismapper@gmail.com>
Co-authored-by: Kevin Zheng <kevinz5000@gmail.com>
* greatly improve how the gas analyzer behaves
* don't close the analyzer when the object goes out of range
* cleanup
* always switch to the device tab when a new device is analyzed
* modern api part one
* modern api part 2
* modern api part three
* file scope namespace
* add verbose examine text to gas miners so their behaviour can be understood
* no need for these to be properties
* use an enum instead of two booleans for the miner state
* require the gas miner to be anchored in order to not be disabled
* xmldoc
* pr feedback
* file-scope namespace
* it's to late to hide my transgressions in a rebase
* turns out the normal examine distance is totally fine for this
* GET WORLD POSITON, ROTATION
* Missing parentheses
* ui system depndency
* the issue
* Unused
* Let the function do the transform
---------
Co-authored-by: plykiya <plykiya@protonmail.com>
* Replace EntityCoordiates.InRange() with TransformSystem.InRange()
* nullspace
* I figured it out
* man I have no clue how client side sutff works
* please have mercy
* remove RadiationPulseOverlay changes
* nullspace
---------
Co-authored-by: plykiya <plykiya@protonmail.com>
* blah, setup
* Updates GasTankSystem and InternalsSystem to not use Component.Owner
* squish the diff
* Fixa the rest
---------
Co-authored-by: plykiya <plykiya@protonmail.com>
* add FireProtection system and event
* minor optimisation + make flammable use fire protection event
* add fire protection values to some things, nerf firesuit heat resistance
* bruh
* unrevert laser nerfs, make elite hardsuit fully fireproof
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Optimise navmaps significantly
- Reduce the delta state size significantly.
- Remove AirtightChangedEvent because this will spam them out constantly.
* weh
* review
---------
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
* Moved GasMixture to shared
* Temp Fix for sandbox violation, idk why Array.Resize isn't working properly. It's already sandboxed.
* The most powerful webedit in history