* lower max firestacks to 10, refactor flammable
* fix
* uncap fire stack damage, lower fire stack damage
(cherry picked from commit eee056eaf063caa690516bf8b4eb7e65a0199e9c)
* make fire spreading scale with mass
* realer
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
(cherry picked from commit fcf5057b61321920826b630384e0dc6ff5de55e8)
* Optimized the drawing of lines and tracked entities
* Optimized nav map updating and added thin wall support
* Added support for thin doors
* Removed floor tile seams, more line drawing optimizations
* Fixed split grids not updating correctly
* Cleaned up NavMapControl code
* Fix nav map header
* Converted nav map updates from system network messages to delta-states
* Addressed review comments
* Fixed timing issue where NavMapSystem would update before AirtightSystem did
(cherry picked from commit 009d06d97833b7700bcfaa534b20575fdbbd7db5)
The gas analyzer now shows the volume of pipes, tanks, canisters and the environment.
Adjust gas analyzers so that the volume and number of moles shown corresponds to only the scanned element, e.g. a canister or single pipe in a pipenet.
(cherry picked from commit 5a5efa11cf1d68708a70d48a286cb97fde96afdf)
* Fix GasMixers/Filters not working
* OKAY GAS FILTERS TOO
---------
Co-authored-by: Plykiya <plykiya@protonmail.com>
(cherry picked from commit 7638252df3b0c7e958e988fc7e491d81c1e8a656)
* remove deprecated entity coordinate extension functions. Reduces warning count by approximately 50
* final toCoords Removed
* Remove all unused variables and dead code paths
* remove always true variable, should be a cvar or something instead
* remove superfluous variables from tests
(cherry picked from commit 59e46aab93ca38f8d57fcad4e3a2c893737d9ad4)
* Replaced uses of Dirty(Component) with Dirty(Uid, Component)
Modified some systems (notably pulling-related) to use uids.
* Missed a few
* Revert changes to pulling
* No
(cherry picked from commit 4a83c365858830e3b2ff2b94fff501256422c20e)
Oops
In #26217 I re-organized the logic for the calculation. Part of that was moving the logic for GetFeltLowPressure and GetFeltHighPressure to be done before we actually check the hazard thresholds. What I didn't realize is that, with how our pressure protection is set up, these functions can return values so extreme they rebound into the other category.
For example, according to the math, when you're wearing a hardsuit in a low-pressure environment you have "felt" pressure of 1000 kPa. Yeah that's not right.
Now these functions clamp their result to OneAtmosphere, in the appropriate direction (101.3 kPa).
Fixes#26234
(cherry picked from commit db81438d30f83a542abe6c81c2ce4a5040aa3ddb)
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)
* Kill the static InRangeUnOccluded
* Adjusted 4 more EntitySystems that were missed.
(cherry picked from commit 7d275a4b5e4188db424cc417c609dced3f9aca89)
* Small obsolete Logger cleanup
* Fixed three EntitySystem logs that weren't doing it right.
(cherry picked from commit aafe81512258b5a80776ada1f471b58e7507ca2d)
Also includes some (non critical) changes to the solution file to re-organize the Roslyn components.
(cherry picked from commit e00f74505c62310bd15aeaba8d6530f648397074)
* Porting & implementation
* Fix two stupid errors
* Human not humans
* fix audio path
* Fix test fails & update cooldown
* Work on reviews & test fail
* Rework nymph organ system.
* Make the nymph organs nospawn.
* IsDeadIC
(cherry picked from commit 407d4aed586a5143dc1dd0d31e7898f6df07a411)
* LockVisualizer
* Fix state
* Clean some code
* Make it component, fix tests fail
* Fix for StateUnlocked
Now it is possible to manually set the unlocked state and it will work!
* Optimize LockVisualizer, add check for unlocked state
* No todo I guess
(cherry picked from commit c7870882f6f956eea07cbb4738ae45c8805c8ce6)
Add purely atmospheric heat exchange to the gas thermomachine component (in preparation for space heaters).
(cherry picked from commit ce4bd8568cba4d64fb19e80d3182e21f010a86c1)
* Use new Subs.CVar helper
Removes manual config OnValueChanged calls, removes need to remember to manually unsubscribe.
This both reduces boilerplate and fixes many issues where subscriptions weren't removed on entity system shutdown.
* Fix a bunch of warnings
* More warning fixes
* Use new DateTime serializer to get rid of ISerializationHooks in changelog code.
* Get rid of some more ISerializationHooks for enums
* And a little more
* Apply suggestions from code review
Co-authored-by: 0x6273 <0x40@keemail.me>
---------
Co-authored-by: 0x6273 <0x40@keemail.me>
(cherry picked from commit 68ce53ae17985876d6d112b764b2144964a9f42e)
* Predict two-way levers
Annoys me the rare occasions I touch cargo. Doesn't predict the signal but at least the lever responds immediately.
* space
* a
(cherry picked from commit 05a2ddff1cc415c3bdf1e15ef3a2c953bcb5384b)
* Remove obsolete transform call
Shrimple PR also fixed bad flatpack call that would break on non-standard tilesizes.
* Update calls
* weh
(cherry picked from commit 52808694e0a479c162930a0aae20e91b68bc67a4)
* Firestarter fixes
- Actually networks the action.
- Namespace fixes.
* No networky for you
(cherry picked from commit a6ea8b210db079d30823e7b4d8faa32aefa17582)
- poison chemicals (HealthChange effect)
- being on fire
- guardians transferring damage to owner
(cherry picked from commit 3e3cb10a96993b711ea8aeb696f157f40c728e49)
* Grave digging and decomposition
* fix
* update based on review comments
* code review
* remove unused field
(cherry picked from commit fd7ff690b1ad7b1cf6cd62deba3076684e3e9282)
* Fix ActivatableUIRequiresPowerCellComponent stopping power draw when one of two people closes the UI.
Also fixes it to check UiKey properly.
* Remove unnecessary CrewManifestViewer on PDAs
This is for a pop-up crew manifest UI, which the PDA doesn't use.
* Fix BoundUIClosedEvents that didn't check UI key/not correctly at least.
Uses the new helper method in engine.
* Fix drone (cargo shuttle) pilot console UI breaking if two people open it and one person closes it.
* Fixes for disposal router/tagger UI.
Code was badly copy pasted without changing identifiers, never worked.
Also cleaned up some of the logic (text trimming, sounds).
Also removed the "refuse to work if you have something in your active hand" check like why.
* Avoid running most ActivatableUIComponent logic when closing a UI via toggle
Activating the UI while it's already open closes it via toggle. Except it still ran 99% of the "attempting to open" logic which makes no sense.
This probably fixes a bug or some other dumb behavior somewhere.
* Bitch
(cherry picked from commit 123a4147dea2945f6c60fe9e4e0a3aa2da75e1dc)
* Give .props files 2-space indents.
* Move to Central Package Management.
Allows us to store NuGet package versions all in one place. Yay!
* Update NuGet packages and fix code for changes.
Notable:
Changes to ILVerify.
Npgsql doesn't need hacks for inet anymore, now we need hacks to make the old code work with this new reality.
NUnit's analyzers are already complaining and I didn't even update it to 4.x yet.
TerraFX changed to GetLastSystemError so error handling had to be changed.
Buncha APIs have more NRT annotations.
* Remove dotnet-eng NuGet package source.
I genuinely don't know what this was for, and Central Package Management starts throwing warnings about it, so YEET.
* Remove Robust.Physics project.
Never used.
* Remove erroneous NVorbis reference.
Should be VorbisPizza and otherwise wasn't used.
* Sandbox fixes
* Remove unused unit test package references.
Castle.Core and NUnit.ConsoleRunner.
* Update NUnit to 4.0.1
This requires replacing all the old assertion methods because they removed them 🥲
* Oh so that's what dotnet-eng was used for. Yeah ok that makes sense.
* Add Robust.Analyzers.Test
* Update submodule
* commit to re-run CI
(cherry picked from commit a6c9c36b688a1ba78ff4c12502e81661cf607b6c)
* Show how close bodies are to rotting
When examining a dead body, you will be able to see of close
it is to rotting.
- "It still looks fresh.", in the first third of the pre-rot period
- "It looks ripe.", in the second third
- "It's starting to look bad.", in the last third
This could help players prioritize medical care.
* Alter the wording of the pre-rot indicator
* Use numeric rotting stages in FTL
---------
Co-authored-by: Kevin Zheng <kevinz5000@gmail.com>
(cherry picked from commit af7327e59f9831d866022dc9018ae79311602f04)
* Initial prediction
* new group handling
* groups for all examines that use multiple rn
* compile
* why was it doing this??
* handle newlines with sorting properly
(cherry picked from commit 0ae3858b69b695697ea9300609460f8ddb70ebbf)
* 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>
Add atmos.speedup which is effectively a atmos-only time compression
CVar. This adjusts heat capacities and transfer rates to effectively
globally speed up the time constants of atmos.
This allows faster response to heating/cooling changes and faster
cleanups (by buffing scrubbers, pumps, and everything else) that is
tunable through one global time compression CVar.
It also achieves this without any thermodynamic unsoundness.
* target oxygen logic
* filter out nitrogen when low on oxygen
* vvrw and datafield for everything
* :trollface:
* bruh does work
* tagless chicken
* move into atmos, make it not depend on mech
* update mech prototype
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Basic TEG start.
Connects via node group.
* Basic TEG test map
* Sensor monitoring basics, TEG circulator flow
* Basic power generation (it doesn't work)
* More sensor monitoring work
* Battery (SMES) monitoring system.
* Sensor monitoring fixes
Make it work properly when mapped.
* Test map improvements
* Revise TEG power output mechanism.
Now uses a fixed supplier with a custom ramping system.
* TEG test map fixes
* Make air alarms and pumps open UI on activate.
* Clean up thermo machines power switch.
Removed separate Enabled bool from the component that always matched the power receiver's state.
This enables adding a PowerSwitch component to give us alt click/verb menu.
* TEG but now fancy
* Make sensor monitoring console obviously WiP to mappers.
* Vending machine sound, because of course.
* Terrible, terrible graph background color
* Examine improvements for the TEG.
* Account for electrical power when equalizing gas mixtures.
* Get rid of the TegCirculatorArrow logic.
Use TimedDespawn instead. The "no show in right-click menuu" goes into a new general-purpose component.
Thanks Julian.
* Put big notice of "not ready, here's why" on the sensor monitoring console.
* TryGetComponent -> TryComp
* Lol there's a HideContextMenu tag
* Test fixes
* Guidebook for TEG
Fixed rotation on GuideEntityEmbed not working correctly.
Added Margin property to GuideEntityEmbed
* Make TEG power bar default to invisible.
So it doesn't appear in the guidebook and spawn menu.
The previous dT did not accurately represent the actual tick time. This is being investigated separately.
Check environment mixture for zero moles, because space mixtures do not necessarily return null.
While here, make an unrelated style change involving TryComp.
* Add radiators
* Limit heat transfer to fluid heat capacity
* Adjust datafield names
* Fix material arbitrage
* This code has been debugged, and so there are no more bugs. Debugging code is therefore unnecessary
* Adjust radiator layer subfloor visibility
* Cache CVars
* No default
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Like and unsubscribe
* Fix CVar caching
---------
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Implement device network device shutdown subscribtion
Implement removing devices from device lists when they get deleted
* Improve name and doc comment for DeviceShutDownEvent
* Change ShutdownSubscriber data field tag
* Change UpdateRemovalSubscription name to UpdateShutdownSubscription
* 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