940 Commits

Author SHA1 Message Date
Fruitsalad
4f997f2069 Cryo pod UI (#41850)
* Add CryoPodWindow (placeholder)

* Change HealthAnalyzerWindow: split off reusable HealthAnalyzerControl for cryo pod UI

* Improve CryoPodWindow: add health analyzer

* Improve CryoPodWindow: add eject button

This wasn't requested in the issue but I implemented it as practice with the UI system.

* Rewrote GasAnalyzerWindow, split off reusable gas mix viewer for cryo pod

* Change GasAnalyzerWindow: change back to three columns

With two rows you get a layouting bug when there's a lot of different gases, which looks somewhat bad. I didn't feel like fixing the layouting bug (it's an engine issue) so we're going back to three columns. That way you don't ever get two rows in practice.

* Change GasAnalyzerWindow: simplify by disabling Resizable

I added a lot of complexity to make resizable work nicely with a derived max & min size, but it's not necessary.

* Change GasAnalyzerWindow: file-wide namespace

* Change GasAnalyzerSystem: add GenerateGasMixEntry

* Split HealthAnalyzerUiState from HealthAnalyzerScannedUserMessage

* Rewrote CryoPodWindow, add atmos info

* Improve CryoPodWindow: add loading placeholder

* Improve CryoPodWindow: add internationalization support

* Fix GasAnalyzerControl: add missing translation

* Improve CryoPodWindow: add beaker info, high temperature warning

* Improve CryoPodWindow/System: inject button in window + necessary system changes

* Fix CryoPodWindow: Entering cryopod now closes window

This way you can't heal yourself with a cryopod.

* Change CryoPodWindow: add & update comments

* Change HealthAnalyzerComponent: remove `uiKey` property (no longer necessary)

* Tiny fixes

* Improve CryoPodUiMessage: replace string with enum

* Change GasAnalyzerWindow: simplify Measure code

* Change CryoPodComponent: rename Injecting to InjectionBuffer

* Change CryoPodBUI: tiny code simplification

* Fix HealthAnalyzerComponent: Removed stray import

* Improve CryoPodWindow: Prettier, concise atmos

* Improve CryoPodWindow: Chemicals bar chart

* Improve CryoPodWindow: Add Ruler to reagents

* Change CryoPodWindow: More horizontal layout

* Improve CryoPodWindow: Reduce height jiggling

The health analyzer's height changes a lot, which can be annoying with the buttons (for example when the oxygen damage label is popping in and out)

* Improve CryoPodWindow: Add setup checklist

This is mostly here to fill vertical space in the new horizontal layout.

* Improve CryoPodWindow: Eject beaker button

* Improve CryoPodWindow: Localization

* Improve CryoPodWindow: Add BeakerBarChart

An animated version of the chemicals chart

* Fix CryoPodSystem: Ejecting beaker no longer clears injection buffer

* Improve BeakerBarChart: Not animated on first frame

* Fix CryoPodWindow: Fix broken translation

* Improve CryoPodWindow: Reorder sections

* Fix BeakerBarChart: Tooltips now show up

* Change BeakerBarChart: Reorder functions

* Change CryoPodWindow: Reorder sections, change margins

* Change CryoPodWindow: Edit flavor text

* Revert changes to GasAnalyzerWindow

Since GasAnalyzerControl is no longer used in CryoPodWindow, these changes are no longer relevant to this PR.

* Tidy CryoPodWindow: Remove old workarounds

These are old layouting bug workarounds from the older version of CryoPodWindow that had a ScrollContainer in it. They're no longer necessary. Less ScrollContainers less problems.

* Tidy up: Remove unused imports

* Remove LabelledSplitBar

It was replaced by BeakerBarChart, which is a lot fancier.

* Tidy up: Tiny code style fix

* Change CryoPodSystem: Move code from server to shared

This is still without adding UI prediction

* move a ton of stuff to shared.

* one last thing

* Improve BeakerBarChart: Keep visual entry width when swapping beakers

* Improve BeakerBarChart: Respect beaker order of reagents

* Improve CryoPodWindow: Ensure space for injection buffer

 We need to keep space on the chart for the injection buffer after swapping to a full beaker.

* Improve CryoPodWindow: Prettier ejection error

* Improve CryoPodWindow: Add "Cooling patient" status

* BeakerBarChart: Fix UI scale bug

* BeakerBarChart: Fix bluespace beaker ugliness

* BeakerBarChart: Add more pod status strings

* HealthAnalyzerControl: Filewide namespace, sort imports

* Style fix: Replace `bool x = y` with `var x = y`

* CryoPodUiMessage: Split off separate class for inject

* SharedCryoPodSystem: Move message-related code into Subs.BuiEvents

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-15 17:52:03 +00:00
TriviaSolari
d6377862c1 Reduce unnecessary ComponentInit work for airtight entities (#42390)
Refactor AirtightSystem to skip rotation checks for omnidirectional blocks on init

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2026-01-15 02:31:05 +00:00
ArtisticRoomba
f702dc8f2d Atmos GasSpecificHeats in shared (#42136) 2026-01-14 15:21:04 -08:00
pathetic meowmeow
fb133494cc Decouple gibbing from the body system (#42405)
* Decouple gibbing from the body system

* allow gibs that don't drop giblets

* pass through user

* prediction gon

* comment

* destructible

* playpvs

* very very very very very very very minor cleanup

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-14 05:57:08 +00:00
ArtisticRoomba
6cae5d9c4a Fix TritiumFireReaction low fuel limiting behavior (#42407)
fix fuel burn limiting logic incorrectly taking max instead of min
2026-01-14 05:08:25 +00:00
ArtisticRoomba
60e172e128 AirtightSystem Tests (#42190) 2026-01-13 15:06:59 -08:00
Sarah C
c7e4f20f02 Fix tritium fires breaking conservation of mass (#41870)
* i can't believe this went unnoticed for so long

* i may be stupid
2026-01-13 22:16:09 +00:00
ScarKy0
a8469ca509 Predict Rotting Examine (#42254)
* init

* review

* test

* Apply suggestions from code review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-07 15:58:28 +00:00
ArtisticRoomba
cdc0c35f3f AddMolsToMixture atmos helper (#42033) 2025-12-24 00:15:10 -08:00
ArtisticRoomba
9f84b24733 Use cached Atmospherics AirtightData when applicable (#41390) 2025-12-23 01:44:31 -08:00
ArtisticRoomba
0ed5619e8b Fix atmos devices not correctly reffing the changed atmos (#41585) 2025-12-23 00:12:52 -08:00
Connor Huffine
2455dbbdb0 Remove flammability mass (#41803)
* Remove flammability mass

* Adjust mass fudge number

* Remove fudge
2025-12-17 08:24:54 +00:00
Princess Cheeseballs
3d32dab661 Make Firespread logical (#41636)
* FIRE

* code comment fix

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-11-30 13:58:39 +00:00
slarticodefast
ed7c004de2 Fix looking at verbs causing sounds or popups (#41609)
* fix verb popups

* spelling
2025-11-28 21:41:44 +00:00
slarticodefast
afd994a696 Fix gas filters (#41567)
fix gas filters
2025-11-24 16:01:38 +00:00
ArtisticRoomba
94d39f7fca Document Atmospherics Utils (#41385)
* Utils docs

* Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.Utils.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-11-10 19:05:31 +00:00
ArtisticRoomba
26d95b7944 Document Atmospherics API (#41382)
* api docs

* rem using dir. linq in atmospherics not allowed.

* address review
2025-11-10 18:42:13 +00:00
chromiumboy
53083ef771 Gas analyzer fix for gas pipe manifolds (#41325)
Initial commit
2025-11-06 06:20:37 +00:00
UpAndLeaves
c72c1c4f34 Move TileFireEvent to Shared (#41285)
* Move to shared

* cleanup

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-11-04 22:08:22 +00:00
ArtisticRoomba
9241a13413 Document Atmospherics Hotspot (#41283)
* hotspot partial docs

* Finalize docs
2025-11-04 11:27:10 +00:00
ArtisticRoomba
e6bbd40e72 Document Atmospherics ExcitedGroups (#41269)
Document ExcitedGroups
2025-11-03 11:49:36 +00:00
ArtisticRoomba
94d04c74d9 Cleanup and document TileAtmosphere (#41254)
* Cleanup and document TileAtmosphere

* superconduction
2025-11-03 09:18:20 +00:00
ArtisticRoomba
101a5bbc9f Cleanup and document AirtightData/MonstermosInfo (#41258)
cleanup and document airtightdata/monstermosinfo
2025-11-02 15:06:25 +00:00
ArtisticRoomba
1f38a34217 Atmospherics Substepping (#40465)
* initial shitcode commit

* command boilerplate

* command flushed out and docs fixes

* missed one important thing in method extraction

* do loc properly

* rest later

* address review

* this worked on my laptop but not on my desktop but okay

* review comments

* address review
2025-10-31 20:45:50 +00:00
Hannah Giovanna Dawson
cdbe92d37d Update DamageableSystem to modern standards (#39417)
* Update DamageableSystem to modern standards

* DamageContainerId -> DamageContainerID with lint flag

* Replace strings with protoids

* Make CVar subscription declarations all consistently whitespaced

* ChangeDamage -> TryChangeDamage, cope with C# jank

* Revert event signature changes

* Restore a comment

* Re-add two queries

* Init the queries

* Use appearanceQuery in DamageChanged

* Use damageableQuery in TryChangeDamage

* Use damageableQuery in SetDamageModifierSetId

* Final cleanup, fix sandboxing

* Rectify ExplosionSystem:::ProcessEntity's call to TryChangeDamage

* Re-organize DamageableSystem

* first big fuck you breaking change.

* THATS A LOT OF DAMAGE!!!

* Fix test fails

* test fixes 2

* push it

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-10-27 19:53:04 +00:00
ArtisticRoomba
91292522b5 DeltaPressure Predicted Examine (#41135)
* predicted examine

* atrociously satanic

* do it right this time

* deltafields aren't necessary

* Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.DeltaPressure.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-10-27 11:00:37 +00:00
ArtisticRoomba
3bd0963086 Fix DeltaPressure serialization spam (#41131)
* Fix DeltaPressure serialization spam

* Add TODO
2025-10-26 23:02:24 +00:00
ArtisticRoomba
df6ce7f473 Fix Atmospherics dP not trolling partially airtight entities (#40435)
* Fix dP not trolling partially airtight entities

* Assumptions in atmospherics are the root of all evil
2025-10-14 22:35:25 +00:00
Princess Cheeseballs
4059c29ebc Entity effects ECS refactor (#40580)
* LOCKED THE FUCK IN

* Forgot this little fella

* Crying

* All entity effects ported, needs cleanup still

* Commit

* HEHEHEHAW

* Shelve for now

* fixe

* Big

* First big chunk of changes

* Big if true

* Commit

* IT BUILDS!!!

* Fix LINTER fails

* Cleanup

* Scale working, cut down on some evil code

* Delete old Entity Effects

* Accidentally breaking shit by fixing bugs

* Fix a bunch of effects not working

* Fix reagent thresholds

* Update damage

* Wait don't change the gas metabolisms A

* Cleanup

* more fixes

* Eh

* Misc fixes and jank

* Remove two things, add bullshit, change condition to inverted

* Remove unused "Shared" system structure

* Namespace fix

* merge conflicts/cleanup

* More fixes

* Guidebook text begins

* Shelve

* Push

* More shit to push

* Fix

* Fix merg conflicts

* BLOOD FOR THE BLOOD GOD!!!

* Mild cleanup and lists

* Fix localization and comments

* Shuffle localization around a bit.

* All done?

* Nearly everything

* Is this the end?

* Whoops forgot to remove that TODO

* Get rid of some warnings for good measure...

* It's done

* Should make those virtual in case we want to override them tbqh...

* Update Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantDestroySeeds.cs

Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>

* Fix test fails real

* Add to codeowners

* Documentation to everything

* Forgot to push whoops

* Standardize Condition names

* Fix up metabolism a little as a treat

* review

* add IsServer checks

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
2025-10-12 21:23:42 +00:00
thetuerk
bb3fa43f1f Predict LungSystem (#40729)
* Initial edits of files
Untested yet. I would like to make sure all is accounted for before moving the files.

* trying my best

* Revert "trying my best"

This reverts commit 9aeece466df0169adec97e3947b061b54fd9b388.

* Revert "Initial edits of files"

This reverts commit 45c6e2343844b5fcafadbf2e5115fb2f241086a1.

* an actual meal

* Added networking to LungComponent.cs

* removed duplicate using

* moving GasRagents to SharedAtmosphereSystem.cs
2025-10-09 10:26:21 +00:00
Lordbrandon12
80c66c02be changes the min and max variables in the TargetTemperature clamp to t… (#40453)
changes the min and max variables in the TargetTemperature clamp to the space heater min and max temperatures
2025-10-07 12:42:43 +00:00
Leon Friedrich
f2d4317258 Clean up some parts of ExplosionSystem (#40485)
* Clean up some parts of ExplosionSystem

* Update Content.Shared/Damage/DamageSpecifier.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-09-28 16:23:40 +00:00
slarticodefast
a38c6c1aca Revert "Add heat distortion shader for hot gases" (#40352) 2025-09-14 20:48:24 +02:00
ArtisticRoomba
a93f6b8cdf Atmos dP Guidebook Entry (#40194)
* Add Atmos dP guidebook

* Update Resources/ServerInfo/Guidebook/Engineering/DeltaPressure.xml

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-09-07 17:10:39 +02:00
ArtisticRoomba
1db8496dd7 Fix DeltaPressure damage not capping beyond a certain pressure (#40125) 2025-09-05 00:09:54 -07:00
Nemanja
7dbe1b219c Improve Gas Yaml Serialization (#40070)
* Make yaml gas serialization cleaner

* fix exception

* fix validation code

* rudimentary test & permissive loading

* change it a bit

* Test fixes and adjustments
2025-09-04 20:48:46 +02:00
Quantum-cross
70ffc1eb5d Add heat distortion shader for hot gases (#39107) 2025-09-03 20:17:39 -07:00
ArtisticRoomba
20f2cb920b Atmos Delta-Pressure Window Shattering (#39238)
This PR adds delta-pressure damage. In short, airtight structures can now take damage proportional to the difference in pressures between the sides of the structure.
2025-09-03 16:58:48 -07:00
M4rchy-S
6c154fb79e Moving FlammableComponent to Shared (#39870) 2025-08-24 13:46:23 -07:00
ArtisticRoomba
e996fb62f1 Revert "Fix bug with pipe color" (#39135) 2025-08-04 13:10:54 -07:00
Pieter-Jan Briers
444180c20d Optimizations from server profile (#38290)
* Properly cache regexes in chat sanitization/accents

Wow I wonder if `new Regex()` has a cost to it *looks at server profile*.

* Avoid lag caused by Tippy command completions

CompletionHelper.PrototypeIDs explicitly says *not* to use it with EntityPrototype. Unsurprisingly, reporting a completion result for every entity prototype in the game is a *bad idea*.

* Add active count metrics to some high-load systems

Mover & NPCs

I suspect the thing that caused the Leviathan round to shit itself on performance is NPC spam in space or something. So let's verify that.

* Enable parallel processing on pow3r again

Originally disabled due to a theory of it causing bugs, it was re-enabled on Vulture, and I'm not aware of it having caused any issues there.

* Replace hashset with bitflags for AtmosMonitor alert types.

Allocating these hashsets was like 20% of the CPU of atmos, somehow.

* Cache HashSet used for space movement collider checks

Turns out this was a ton of server allocations. Huh.
2025-07-26 11:44:34 +02:00
Perry Fraser
002afe8056 Properly dispose of stale pipedata chunks for the atmos monitor (#38974) 2025-07-23 17:18:19 +02:00
Princess Cheeseballs
e85bc1bb8c Stunnable New Status and Cleanup (#38618)
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
2025-07-21 19:22:11 +02:00
IgorAnt028
41a175636b Fix bug with pipe color (#30645)
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-07-19 15:10:38 -07:00
ArtisticRoomba
76a7b31c1e Fix firelocks failing to drop fast enough (#38918) 2025-07-15 20:18:55 -07:00
Łukasz Lindert
377c9bfcea PressureEvent removed (dead code) (#39004)
yep
2025-07-16 00:06:48 +02:00
ArtisticRoomba
f874459092 Pressure Relief Valve (#36708)
* initial system (this math is probably WRONG)

* General code cleanup and OnExamined support
(holy moly this code sucks)

* UICode and related events foundation
TODO:
- Actually write the XAML UI and the underlying system
- Un-shitcode the entire thing
- Actually test everything...

* Working UI code
TODO: Make predicted, as this certainly isn't predicted. Even though I said it was. It isn't.

* Remove one TODO for unshitcoding the examine code

* Add reminder
yea

* Make predicted (defenitely isn't)
(also defenitely isn't a copypaste from pressure pump code)

* It's predicted!
TODO:
- Give it snazzy predicted visuals!
- Have a different field for pressure entry, lest it gets bulldozed every UI update.

* Improve gas pressure relief valve UI
TODO: Reminder to reduce amount of dirties using deltafields

* Implement DirtyField prediction

* Entity<T> cleanup
A lot of Entity<T> conversions and lukewarm cleanup.

Also got caught copy pasting code in 4K UHD but it's not like you couldn't tell.

* More cleanup and comments

* Remove TODO comment on bulldozing window title

* """refactoring"""
- Move appearance out of shared and finally fix it. Pointless to predict appearance in this instance.
- More Entity<T> conversions because I like them.
- Move UI creation handling over entirely to the ActivatableUI system.
- Fix a hardcoded locale string (why????).

* Add visuals

* Revert debugging variable replacememt
yea

* Revert skissue

* Remove unused using directives and remove TODO

* Localize, cleanup, document

* Fix adminlogging discrepancy

* Add ability to construct, add guidebook entry

* Clear up comment

* Add guidebook tooltip to valve

* Convert GasPressureReliefValveBoundUserInterface declaration into primary constructor

* Adds more input handling and adds autofill on open

* Un-deepfry input validator shitcode
Genuinely what was I smoking

* improve visuals logic

* Refactor again
- Update math to the correct implementation
- Moved code that could be re-used in the future into a helper method under AtmosphereSystem.Gases.cs

* I'm sorry but I hate warnings

* Remove unused using directive in AtmosphereSystem.Gases.cs

* Review and cleanup

* Lukewarm UI glossup

* Maintainer for the upstream project btw

* Remove redundant state sets and messy logic

* Unduplicate valve updater code

* Redo UI (im sorry Slarti)

* run tests

* Test refactored UI messaging

* Second round of UI improvements
- God please find a way to improve this system. Feels bad.

* Update loop implementation

* Further predict UI

* Clear up SetToCurrentThreshold

* cleanup

* Update to master + pipe layers and bug fixes
want to run tests

* fixes

* Deploy rename pipebomb

* Documentation and requested changes

* Rename the method that wiggled away

* Undo rounding changes

* Fix comment

* Rename and cleanup

* Apply suggestions from code review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-07-03 18:00:34 +02:00
slarticodefast
38232d2255 Predict healing and bloodstream (#38690)
* initial commit

* reapply 38126

* fix rootable

* someone missed an important minus sign here

* try this

* fix

* fix

* reenable crit hits

* cleanup

* fix status time dirtying

* fix

* camelCase
2025-07-02 19:20:31 -04:00
Tayrtahn
75db49f9c0 Clean up all missing EntitySystem proxy method uses (#38353) 2025-06-26 16:50:49 -07:00
Tayrtahn
d61704df33 Convert AtmosphereSystem sound path strings to SoundSpecifiers (#38403)
* Convert AtmosphereSystem sound path strings to SoundSpecifiers

* Convert to SoundCollections
2025-06-17 22:52:11 +02:00