# Description
I got baited by Ectoplasm, so I then spent 3 hours shaving off a
sizeable chunk of this game's performance cost, including by taking 3 of
the "Top 10 frametime consumers", and reducing their performance costs
by 99% each. Along with various examples of slimming down some of the
worst EQE's.
Oh, and I fixed EmitSoundOnMove being desynced with actual movement. As
part of making EmitSoundOnMove use 99% less CPU time, it was also
synchronized with the MoverController.
# Changelog
🆑
- fix: Fixed items such as tactical webbing, bell collars, and hardsuits
being desynced with character movement.
- tweak: Made various large performance improvements.
(cherry picked from commit 684e8175443167beb0e20e3323a05b5f493b3374)
# Description
This PR fixes all remaining bugs with Space Wind, while providing
extremely significant performance improvements by way of aggressive
early exits, and also completely reworking how pressure moved entities
are tracked(The server now caches entities under active air movements).
I haven't profiled it yet, but the performance improvements are
extremely noticeable on the machine I'm running in comparison to before,
which is particularly noteworthy since previous versions of space wind
caused significant frame drops in testing on my monster rig. While this
new update to space wind straight up doesn't even budge the tickrate on
my machine anymore.
I had to also rip out some of Monstermos' Guts, and deprecate the
tileripping system. In the future, Tile-ripping will be handled by MAS.
Also, MAS outright no longer requires Monstermos to work, and can
operate entirely off of the much cheaper LINDA system. However, while
LINDA is cheaper, Monstermos is needed for handling "Extra violent air".
Eventually I can do away with Monstermos entirely, and have it replaced
with an airflow system that outright does not require pathfinding
algorithms.
# Changelog
🆑
- fix: Fixed a bug where items thrown by space wind could remain in air
for as long as 500 seconds. Items thrown by space wind can now remain in
the air for a maximum of 2 seconds past the last time they were thrown.
- fix: DRAMATICALLY IMPROVED SPACE WIND PERFORMANCE.
- tweak: ShowAtmos command now shows vectors representing the exact
direction space wind at a given tile is trying to throw objects! The
length of the lines shown directly correspond to how powerful the flow
of air is at that tile. Shorter lines = shorter throws. Longer lines =
more powerful throws. These are also no longer restricted to compass
directions, and can point in arbitrarily any direction on a circle.
- tweak: Space Wind now no longer has Monstermos as a hard requirement.
It'll be as weak as a toddler without it, but if you're running your
server on a toaster, you can turn off Monstermos and still have working
space wind.
- tweak: Wreckages in space are now never airtight. I'm sorry, but this
was basically the cost I had to pay in exchange for making Atmos no
longer even on the top 20 systems for server tickrate cost.
(cherry picked from commit 2fcc806423a259fd75977b78350c2232a823739b)
* Trait Cost Balancing (#1906)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Makes a lot of disabilities give more points (based off community and
personal opinions), and makes some very strong traits cost more points.
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- tweak: Narcolepsy gives 6 points instead of 2
- tweak: Pacifist gives 8 points instead of 6
- tweak: Muted gives 6 points instead of 4
- tweak: Sluggish gives 5 points instead of 3
- tweak: Snail Paced gives 8 points instead of 5
- tweak: Blood Deficiency gives 6 points instead of 5
- tweak: Hemophilia gives 4 points instead of 2
- tweak: Clumsy gives 4 points instead of 1
- tweak: Bad knees gives 5 points instead of 3
- tweak: Will to live costs 3 points instead of 1
- tweak: Tenacity costs 4 points instead of 3
- tweak: Steadfast costs 6 points instead of 4
- tweak: Bionic Arm costs 10 points instead of 8
- tweak: Bionic leg costs 8 points instead of 6
---------
Signed-off-by: EctoplasmIsGood <109397347+EctoplasmIsGood@users.noreply.github.com>
(cherry picked from commit d38eb0b536a34475feefa8253b9a3ed128e57f4d)
* Automatic Changelog Update (#1906)
(cherry picked from commit 8a2626ef6b62508a6479525555522b516e090feb)
* Lightbehaviour Bug Fix (#1908)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Description.
Fix bug affecting torches, flares and glowsticks that made them not emit
light when turned on as described by [this
issue.](https://github.com/Simple-Station/Einstein-Engines/issues/1685)
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/799631e0-bcf1-4008-9683-3d0ba7c02a24
</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- fix: Torches, flares, glowsticks now able to emit light again
(cherry picked from commit b25e3447148948ee658d1b81dac0d1e076641fcc)
* Automatic Changelog Update (#1908)
(cherry picked from commit 83fbb13c3aab8fedb1e56f73b949ac1a458eee41)
* Mining Shuttle & Dignitary Stuff for Arena (#1893)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
<p>
Adds the mining dock & mining shuttle console for travel to lavaland.
Adds NTR office with the NTR locker mapped. Also adds the BSO locker to
bridge without an office cause BSO is not worthy.
Map render under images. NTR office is south east of brig. Just has a
desk and a bed. No fax as the NTR already has their own fax, I feel like
having a second fax would increase where the NTR would need to look for
faxes.
Referring to the shuttle that takes one to lavaland as mining shuttle,
not the pathfinder.
</p>
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
no cl no fun
(cherry picked from commit e481e2f182f162b78e22524dfe6988b2135bd32f)
* Automatic Changelog Update (#1893)
(cherry picked from commit f59bd7df32f6942f3b2646c1e3a08ee88343301d)
* Fireplace Construction (#1897)
# Description
Porting - Allow Construction of Fireplaces and Bonfires
Ported from - https://github.com/Goob-Station/Goob-Station/pull/1646
Yeah it's a port of a port. Yes there was sofas, benches and banners,
I've very lazily stolen just the fires. Sofa might be nice but that's
lot more code pinching.
---
# TODO
- [ ] Pray it works
---
# Changelog
🆑
- add: Recipes to build Fireplaces and Bonfires
---------
Signed-off-by: Raikyr0 <Kurohana@hotmail.com.au>
(cherry picked from commit 90485d5a0c49f76950d61e42c3cc596f988dc982)
* Automatic Changelog Update (#1897)
(cherry picked from commit c7327f55f8576267f30a384d4a84fd85f357d52f)
* Terminus (#1881)
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Added a new weapon, the DT-8 "Terminus"
It's a large melee weapon capable of firing a spread of disabler rounds
on alternate fire.
It's an arsenal tech research, and uniquely can only be wielded by onis.
(I'm being bribed to make this)
Also, I had to move the OniComponent.cs file to shared. I'm not sure if
that borked anything but tell me if it does.
(PS. Thank you VMSolidus for helping me make this ten times less
shitcoded.)
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Textures complete
- [x] Add lathe recipe
- [x] Add to research
---
<details><summary><h1>Media</h1></summary>
<p>
!
</p>
</details>
---
# Changelog
🆑 SolsticeOfTheWinter, OtherPersonPlaceHolder
- add: Added a new weapon for oni security players, the terminus.
---------
Signed-off-by: Solstice <solsticeofthewinter@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit 3fdf1102dc20af7bd724e449808d2d38571e62c2)
* Automatic Changelog Update (#1881)
(cherry picked from commit 9de8ab79e61227620833b88f5c616c63f38c9a86)
* Add RPD and Pipe Stacking (#1857)
# Summary
To add the RPD into the game for both atmos and CE's to use. Introduce
pipe stacking as well since the RPD will introduce better atmos
configuration. Most of the code was ported over from goob LRP. With some
of it being touched up on and adding a bit of quality of life to the
RPD.
This was a PR originally made for goob-mrp but requested to be moved to
EE. Check out the detailed commits here:
https://github.com/Goob-Station/Goob-Station-MRP/pull/96
---
# Description
## RPD
From the original PR made on goob-station the RPD has been ported over.
It is similar to the RCD where you will be able to make
pipes/vents/pumps/mixers quickly. Each dial on the main radial will
bring up specific pipes like ie pipes-> corner, t-shape -cross shape.
The RPD starts out in the CE and Atmos lockers with 50 charges. Each
construction and deconstruction cost 1 charge. There is also one extra
compressed matter in the starting lockers for both CE and Atmos for the
RPD.
You can research the recipe of the RPD with the reverse engineering
machine. The recipe cost of the RPD is a bit more compared to the RCD.

## Pipe Stacking
With the introduction of the RPD, it was fair to check for pipes that
overlapped when making new pipes. But with introducing the code from LRP
goob station it was decided to bring over the pipe stacking feature too.
You can make certain components pipe stackable or allow if you can put
multiple of the same pipe on the same tile. If you want you change a
pipe to be non-stackable by using the component type:
PipeRestrictOverlap
Here's an example of pipe stacking. You can make a simple scrub loob
tighter or keep it normal. The freedom is given.

Here is an extreme example. This compact design creates a ton of frezon.
Obviously, replace the trit miner with an actual burn chamber.

## Belt overlay
I decided to add a simple belt overlay sprite to the game for the RPD.
Here's what it looks like outside the belt and inside the belt

## RPD Borg Module
I decided to add experimental RPD that will self-charge. The only way to
get this RPD is through admeme spawn or being a borg. The starting
charge of the Borg module is 25 and will self-charge at the same rate at
10 seconds per charge. I also added an admeme version that charges at 1
second per charge.
Here is what the borg module looks like

The borg module can be researched in the t2 industrial branch as the
same research for the RCD module.

---
# credit
Original RPD PR: https://github.com/Goob-Station/Goob-Station/pull/1203
Original Pipe Stacking PRs:
https://github.com/Goob-Station/Goob-Station/pull/391https://github.com/Goob-Station/Goob-Station/pull/389
Prevent stacking pipes (#28308) - Original Link is dead.
---
# TODO
- [X] Add RPD
- [X] Add RPD to reverse engineering
- [x] Add toolbelt equipped sprites
- [x] Add Pipe Stacking
- [x] Add an experimental RPD module for engie borgs.
---
# Changelog
🆑
- add: Added RPD, glory to atmosia!
- tweak: RPD now spawns in Atmos and CE lockers
- tweak: Extra compressed matter has been added into both Atmos/CE
lockers for more RPD/RCD uses
- add: You can research RPD with the reverse engineering machine.
- add: A belt overlay sprite to the CE and utility toolbelt.
- add: Pipe Stacking ported over from LRP Goob station. Compress those
frezon factories!
- add: Toolbelt overlay sprite for the RPD.
- add: RPD Borg module researched in t-2 industrial advanced tools.
---------
Co-authored-by: Nathaniel Adams <60526456+Nathaniel-Adams@users.noreply.github.com>
(cherry picked from commit b32710c94628f90e4b2c43796ac3ab81892926f3)
* Automatic Changelog Update (#1857)
(cherry picked from commit 3270ee0327054fd0187cb03756d23a1a84d7916c)
* SS13 Combat Parity Part 0.5: Stun Meta [PREREQUISITE] (#1914)
# Description
Ports Stun Meta from
[/Goob-Station#788](https://github.com/Goob-Station/Goob-Station/pull/788)
Splits stuncrit into knockdown and paralysis, like on 13. knockdown lets
you crawl on the floor, and paralysis is the same as current stamcrit.
The stun baton has been buffed, doing 15 stamina damage per swing, and
40 stamina damage overtime.
This lets you stamcrit someone in two baton swings, but it takes a few
seconds before they actually fall down to the ground. About the same
amount of time as 4 baton swings back to back.
This PR also reverts #809, since I plan on reworking shoving entirely
soon.
(also for my sanity. wouldn't have been able to port stunmeta
otherwise.)
## Condemn Trillions
Required for the rest of the SS13 Combat Parity changes listed
[here](https://discord.com/channels/1218698320155906090/1348171706061033502)
# TODO
* [x] Await merge
* [x] Gaming
# Media

# Changelog
🆑 Eagle
* tweak: Stamina Crit has been split into Knockdown and Paralysis
* tweak: Stun batons now do 15 stamina damage on hit, and 40 over time
(cherry picked from commit b8045750e91b8e43fcf91deaeb49b295a0984cdc)
* Automatic Changelog Update (#1914)
(cherry picked from commit cbadf45b9e1bbb8cbb122a579e9c37a3234d506b)
* Miscellaneous Fixes From White Dream (#1911)
# Description
Ports the following PRs:
https://github.com/WWhiteDreamProject/wwdpublic/pull/271https://github.com/WWhiteDreamProject/wwdpublic/pull/282https://github.com/WWhiteDreamProject/wwdpublic/pull/255https://github.com/WWhiteDreamProject/wwdpublic/pull/254https://github.com/WWhiteDreamProject/wwdpublic/pull/246https://github.com/WWhiteDreamProject/wwdpublic/pull/223https://github.com/WWhiteDreamProject/wwdpublic/pull/220https://github.com/WWhiteDreamProject/wwdpublic/pull/219https://github.com/WWhiteDreamProject/wwdpublic/pull/213
This is a rather huge variety of fixes to be honest.
# Changelog
🆑 White Dream
- fix: Fixed airlock opening and closing visuals
- fix: Fixed Weather spamming infinite sounds.
- fix: Cockroaches no longer spam organs when stepped on.
- fix: Fixed the timer on the Return To Round button
- fix: Fixed Return to Round not remembering how long it's been since
you died if you re-enter your body.
- fix: Fixed harpy flight visuals not showing for other people.
- fix: Fixed disabler bolts not going through windows like other kinds
of lasers.
- fix: Fixed Vim Harness being free
- fix: Fixed handcuffs not respecting your arm length.
- fix: Made tending wounds not as message spammy.
- fix: Fixed shuttle windows not preventing you from being electrocuted
by grills under them.
---------
Co-authored-by: vanx <61917534+Vaaankas@users.noreply.github.com>
Co-authored-by: vanx <discord@vanxxxx>
Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>
Co-authored-by: Repo <47093363+Titian3@users.noreply.github.com>
(cherry picked from commit ced8a565a32cfa340140674c073d90a2a6002799)
* Automatic Changelog Update (#1911)
(cherry picked from commit 89f27f4b2f3882ba97132d69f9d6477cea3195d1)
* Faction Clothing Bug Fix (#1917)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Fixed bug that made ClothingAddFactionComponent not add the faction of
the clothing to the mob when the clothing is equipped.
The bug is described in greater detail in [this
issue](https://github.com/Simple-Station/Einstein-Engines/issues/1228).
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/41fe9411-0eac-478d-956c-b094f211f565
</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- fix: Fixed bug that made ClothingAddFactionComponent not work.
(cherry picked from commit 639f46a68b84ad6d0655ec318ccc62fa3061c5cd)
* Automatic Changelog Update (#1917)
(cherry picked from commit b4c488af30ad9e21e41b409282aeac1f8ae37c9e)
* Crafting Curtains and Tables No Longer Consumes Entire Stack (#1916)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Stolen from https://github.com/Fansana/floofstation1/pull/152, courtesy
of cynical24. When you craft a curtain or make a table into a _fancy_
table, it doesn't take the entire stack of carpet. This should hopefully
stop me from having to return to the HoP to ask for another 10 carpet.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] general thievery of text (with permission)
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- tweak: you don't use the entire stack of carpet now when crafting
colored curtains or fancy tables.
(cherry picked from commit 508dbc35d3576be768122604d39194ee715ab02a)
* Automatic Changelog Update (#1916)
(cherry picked from commit f4641de5073d3cf1ccc54a5599281bb6025149fc)
* Markings From Impstation 2 (#1925)
what the funny title says
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Adds some markings from Impstation (Again, who would have thought it'd
be Impstation again?), ports the merciful IPC wings from Goob LRP, adds
some markings to arachnids, a bunch of markings for Reptilians, and a
new hairstyle.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [ ] Task
- [x] Completed Task
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑 Diggy
- add: New markings for arachnids, reptilians.
- tweak: Allows IPCs to pick up overlay markings such as the gauze
stuff, Onis can now have the curved horn marking humans can have.
(cherry picked from commit b955652cf18f1a11e7d48206f32c8d3e24e819bd)
* Automatic Changelog Update (#1925)
(cherry picked from commit 78149f74ac386a81b4ecb46679db29c9e5f1946e)
* Fix Vulpkanin Markings (#1894)
# Description
Vulpkanin no longer wear their undergarments "Superman Style"
# Changelog
🆑
- fix: After lengthy retraining, NanoTrasen has taught Vulpkanin that
underwear is meant to be worn inside pants, not outside them.
(cherry picked from commit 190dddf7c59537ffc2781f3d8f7bcb16e5a449fb)
* Automatic Changelog Update (#1894)
(cherry picked from commit a7138473115dfe767b822eb2b24179a04f6133e5)
* Fairer Turrets (#1923)
# Description
It had basically always bothered me, and evidently a lot of other people
that turrets were previously "Unfair enemies". They had perfect aimbot
accuracy, tracked targets instantly at any angle, and were
nigh-indestructible. It was telling that players were pretty much only
ever killed by turrets once or twice, and then they figure out that the
turrets are outright impossible to beat in a fair fight, so they end up
resorting to underhanded tactics like using an RCD to wall the turret
off. Or use a pickaxe to go around them.
I previously added a new turret for the SAN dropship, and with it had
tried out a very different approach for "Fairer Turret" balancing. A
more reasonable healthbar, no instant tracking, and no perfect accuracy,
The players enjoyed these a lot more than the original turrets. Plus
they were more visually interesting firing an inaccurate spray at their
targets.
<details><summary><h1>Media</h1></summary>
<p>
I'm on my lunch break at college right now, so no media.
</p>
</details>
# Changelog
🆑
- tweak: Adjusted turrets to be a more "Fair" fight. They no longer have
perfect aimbot accuracy, they don't track targets instantly, and they
also have a "More fair" healthbar that can reasonably be shot through by
someone with good enough weapons and armor,
(cherry picked from commit 6bdd73efe210d6e556e6accbc89cb9134f716e2e)
* Automatic Changelog Update (#1923)
(cherry picked from commit bedcd65d4d8324a651101a978ba90d46d4199cfa)
* Fix A Minor Test Fail (#1902)
Just a random event that had a tiny chance to spawn an Abstract entity.
(cherry picked from commit f49712f82569d7e5f0a486d00130216dc73520bd)
* Throw Errant Into The Spider Pit (#1896)
# Description
@Errant-4 by request in your comment.
I had annihilated this before during the NyanoCombat reworks, but during
a recent wizmerge most of said reworks were accidentally reverted. This
is the one that was brought back, comment and all. So this PR fixes for
a second time a problem left by the old combat system.
# Changelog
🆑
- fix: Power attack and light attack damages are no longer swapped.
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit 4b988b2b01e379d5a2c6c8eae72f70c00876d024)
* Automatic Changelog Update (#1896)
(cherry picked from commit 505765017a164ca20582571f92f5ec95ff3e5579)
* Nerf .45 (#1895)
# Description
Somehow I didn't realize that .45 magnum, despite being a common ammo
type available to a lot of people, deals literally double the damage of
all other comparable smallarms. No wonder people were complaining about
the Universals being comically overpowered. This PR normalizes their
damage so that it's still "More than other equivalent small arms
calibers", but not ".45 is more than double the damage of 9mm".
# Changelog
🆑
- tweak: Nerfed universals and other .45 auto guns. I get the meme that
.45 is better than 9mm, but not "More than double" the damage of 9mm.
(cherry picked from commit f7f49f67d69e6a19a3b83eec1d4cb4b0b7ca93a1)
* Automatic Changelog Update (#1895)
(cherry picked from commit cfd95ca7c4237030cebba16cf1d81798a5d801a6)
* More Lavaland Fixes (#1892)
# Description
Apparently the lavaland ore crates are supposed to have an ore magnet,
but this didn't work because they're missing something from the ore
bags. So this fixes that. Also I made sure the lavaland's ores actually
have the same naming conventions as our regular ores.
# Changelog
🆑
- tweak: Ores mined from lavaland now have names matching their
real-world counterparts.
- fix: Fixed the lavaland ore crates not having working ore magnets.
(cherry picked from commit 2f02dd1a0621437587d143641b4a66ef59d87bab)
* R25 Rifle Tweaks (#1869)
# Description
This PR tweaks the stats of the R25 rifle so that it isn't completely
useless. Its accuracy when wielded has been improved so that it can more
consistently hit targets at between half and a full screen length away.
As a tradeoff, its cooldown between bursts has been increased so that
its DPS isn't comically overtuned.
<details><summary><h1>Media</h1></summary>
<p>
https://github.com/user-attachments/assets/7b862f2a-09c3-450b-9482-a6ce69b4c971
</p>
</details>
# Changelog
🆑
- tweak: Increased the accuracy-when-wielded of the BRDI-R25 rifle. As a
tradeoff, it has a longer cooldown between hyperbursts.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Gameplay Adjustments**
- Updated the weapon's handling by refining its firing angles.
- Adjusted the burst cooldown period to alter the firing rhythm.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
(cherry picked from commit be595f4fbe52e612dbaf58363287e9d483442a12)
* Automatic Changelog Update (#1892)
(cherry picked from commit 2cc6e37b996d5074affebd7d8813778b3f9824d2)
* Automatic Changelog Update (#1869)
(cherry picked from commit fd9c5bb1bfddb94e8aa8d4ecfcb4587629110949)
* Footstep Netcode Fixes (#1909)
# Description
Port of https://github.com/WWhiteDreamProject/wwdpublic/pull/298
---------
Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>
(cherry picked from commit 36627e2e655471e118867c1ae05870b1cb9c0be4)
* Automatic Changelog Update (#1915)
(cherry picked from commit a8994b38b0ade548152a5868a0ab87fd727da81d)
* Embeddable Projectile Fixes (Courtesy Of White Dream) (#1907)
* embed children
* locale
* fix
* Update Resources/Locale/ru-RU/weapons/throwing/throwing.ftl
* // WWDP MY BELOVED
# Description
This is a port (and general cleanup of)
https://github.com/WWhiteDreamProject/wwdpublic/pull/278
Plus clearing a bunch of compiler warning causing things, and also a fix
for one of our Heisentests. This PR mainly fixes issues with embeddable
projectiles being potentially unintentionally destroyed when the thing
they are embedded in gets destroyed. Which can be disastrous for example
if my energy sword embeds into a wall, and also destroys that wall,
which destroys my precious energy sword...
# Changelog
🆑 Spatison
- fix: Embeddeable projectiles are no longer always destroyed when the
thing they are embedded in gets destroyed. Energy Sword throwing
enthusiasts may rejoice now that their precious sword is safe.
Co-authored-by: vanx <61917534+Vaaankas@users.noreply.github.com>
Co-authored-by: vanx <discord@vanxxxx>
Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>
(cherry picked from commit 2c30abbb072238ed7478c9716a66db58f69ddc67)
* Automatic Changelog Update (#1907)
(cherry picked from commit a97ae4aa2fdaf1bf70149fa994682debd2162779)
* Health Analyzer UI Fix (#1928)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Fix the bug described by [this
issue.](https://github.com/Simple-Station/Einstein-Engines/issues/1820)
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- fix: Health analyzer's doll is now in the normal size.
(cherry picked from commit ce489662c54195cd3f5865f5003d40fe3ba7c0d3)
* Automatic Changelog Update (#1928)
(cherry picked from commit 0b4b338af37f2222065063364b76db3c63fa8025)
* Magma Hand (#1927)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Sprited by Greenwall, YML'd by myself. The Magma Hand is a slime-like
creature that you can encounter in Lavaland. It's very hostile, but you
_can_ pet it!
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [x] Add to Lavaland spawning list
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>
Its blood is sulfur!

Its attacks burn you!
https://github.com/user-attachments/assets/0bf21207-1dc2-4cf5-9b9b-89a558488963
Ice makes it die very quickly!
https://github.com/user-attachments/assets/4c742c6e-ac5e-462f-9f1e-e05ce0fcaa0b


</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑 Greenwall
- add: Magma Hand! Sprite by Greenwall, YML by Timfa. Bring a water gun
filled with ice, and you'll be fine!
(cherry picked from commit 545a20fd19a25f833cc32e21c6f0f53f7f872e22)
* Automatic Changelog Update (#1927)
(cherry picked from commit f8c127f1432d24f98e5eeeb4099fa2899db74c15)
* Cyber Eye Changes (#1876)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Removes the flare shielding trait, instead adding welding arc protection
to the diagnostics hud, and giving the medical hud a built in chem
scanner.
No trait will give you access to immunity to flashes however, and you
will instead be required to have proper eye protection on again to
counteract it. This makes securities lives a lot better, and makes the
flash a viable tool again.
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- remove: Removes flare shielding
- tweak: Adds eye protection to diagnostics hud
- tweak: Adds chemical analyser to med hud
- tweak: Increases med hud and diagnostics hud costs to 2
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Gameplay Balance**
- Reduced the negative impact for the `FlareShielding` trait, offering a
milder penalty.
- Removed the flash immunity effect from the `FlareShielding` trait to
streamline its behavior while retaining it in the
`FlareShieldingModule`.
- Updated requirements for the `Blindness`, `Nearsighted`, and
`Photophobia` traits by removing the dependency on the
`FlareShieldingModule`.
- Adjusted point values for several traits, reflecting a more
significant negative impact for others.
- Introduced new components, enhancing the functionality of various
traits.
- **Feature Enhancements**
- Expanded the description of the `CyberEyesMedical` trait to include a
Chemical Analysis Hud.
- Updated the `CyberEyesDiagnostic` trait description to incorporate
flare shielding for improved eye protection.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: EctoplasmIsGood <109397347+EctoplasmIsGood@users.noreply.github.com>
(cherry picked from commit 516c53e8ea97680b8029b79dae9fab0a229d0709)
* Automatic Changelog Update (#1876)
(cherry picked from commit 085163904a3bc64c2217553afe5e43a8938cfc8c)
* Space Wind Version 5 (FINAL) (#1765)
# Description
MY ASCENSION IS COMPLETE, I HAVE DEFEATED THE ATMOS SYSTEM. MY POWERS
HAVE GROWN TO NEW AND UNFATHOMABLE HEIGHTS. THE EQUATIONS FOR SPACE WIND
ARE NOW PERFECTED. I HAVE BECOME THE PHYSICS CHAD THAT CAN NOW ACCOUNT
FOR FRICTION AND AIR RESISTANCE.
SPACE WIND HAS BEEN PERFECTED. THERE IS NO MORE WORK FOR ME TO DO ON IT.
# TODO
<details><summary><h1>Media</h1></summary>
<p>
PROOF THAT MY EQUATIONS HAVE BEEN PERFECTED.
https://github.com/user-attachments/assets/b3eb43b2-e8db-4f75-a142-2c86308e8113
</p>
</details>
# Changelog
🆑
- add: Added Space Wind V5. This version of space wind now accounts for
the coefficients of friction and gravity as a calculated way to resist
space wind. There is no more guesswork on if space wind should be able
to throw an object. Additionally, thanks to a standalone module from
Matrix Airflow System, space wind is capable of calculating airflow at
arbitrarily any point in a room, regardless of whatever garbage
Monstermos is saying.
(cherry picked from commit a5151c7622c424af6fd7e4c0b916e8ddda75c3df)
* Automatic Changelog Update (#1765)
(cherry picked from commit ba32a82331ffba42919ff57b48c1d80ba02c1343)
* Fix Oni (#1935)
# Description
I didn't notice during the last PR that someone added an override for
the Tags component of Oni, otherwise I'd have said something about it.
You can't add a tag component to a species because it overrides a
massive shitton of tags that are needed for player characters to be able
to do certain things, such as DoorBumpOpener...
# Changelog
🆑
- fix: Fixed Oni not being able to do a ton of things that required
hardcoded tags. I fucking hate the tag system.
(cherry picked from commit 3950fb0a6c9cbb9febb30b00f183a8d049f0ca0c)
* Automatic Changelog Update (#1935)
(cherry picked from commit 12876a1ce113a68a79d2cae79e99a6748446c13e)
* Rev Manifesto Inhand Use Cooldown (#1936)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Add a two second cooldown on the Revolutionary Manifesto's secondary use
(the purely cosmetic one) to not make it cause chat spam.
I made this change from web and have NOT tested it yet (unless I checked
the checkbox below in the TODO section!
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [ ] TEST IF IT WORKS
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- tweak: Tweaked rev manifesto to not spam chat anymore
(cherry picked from commit 3a6634125445a3a71ab33dae090942ce3216d340)
* Automatic Changelog Update (#1936)
(cherry picked from commit 0ba6aae78f5ee3804f8eaf30afc2e35bafc8e17c)
* More Tolerable Default CVars (#1945)
# Description
I can't believe we never cleaned these up. Yea so our codebase made an
astoundingly fucking poor first impression on BPL during their huge
playtest, and most of these CVars were to blame. In particular is the
godawful Ramping Event Scheduler having "Murder the station with
ventcritters every 10 seconds at the 30 minute mark" as its settings.
# Changelog
🆑
- tweak: Disabled Monstermos Tile Ripping by default.
- tweak: Default settings for Ramping Event Scheduler no longer throws
"Ventcritters every 10 seconds, 30 minutes into the round".
(cherry picked from commit ef5dc3441aa3b7c62d771039c3e1a93ba04a0d32)
* Automatic Changelog Update (#1945)
(cherry picked from commit 0fce50daf5ba999e3bc9b8c97e8e7b8791fb7f7e)
* BRDI Repaints (#1957)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]? -->
A downstream port of https://github.com/TheDenSS14/TheDen/pull/306
providing Blue and Red paintjobs for the Blueshield and Head of Security
BRDIs respectively.
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name This includes
all available types for the changelog -->
🆑
- tweak: Gave the BSO and HoS BRDIs a fancy paintjob.
(cherry picked from commit 4f23e0d40549fc3780d1dd94f7fea2ff83e37c24)
* Automatic Changelog Update (#1957)
(cherry picked from commit 2d7e39eca59cee8c8c883501c8f185bcb8bff4cb)
* ADT Markings Port (#1951)
Truly the PR of all time...
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
The markings by themselves have localization or whatev. When you color
them they will however appear as marking_etc_etc.
Yes, i'm aware it's lazy, but i'm not doing it for over 80 markings,
just not feeling it, this is really just a test to see if it gets
allowed without some locale files setup.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [ ] Task
- [x] Completed Task
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑 Diggy
- add: Most markings from ADT, along with two new hairstyles, new
markings for Shadowkin (Despite all my hate for them).
- fix: Shadowkin ears are now colorable again, fuck around and find out
if you want your Shadowkin's ears to be pink with red or something.
(cherry picked from commit a36b5dc2404578c64a93a9881714f00180c1da02)
* Automatic Changelog Update (#1951)
(cherry picked from commit cd81f90db975061f9d968b45beab9a461834f4c1)
* Cyberiad 1.0: Service Rework (#1938)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Changes Box to Cyberiad, with the service area receiving a rework, in
the future there will be more updates in the depts, with the next one
probably being the Sec.
Make some fixes on Gax and Bagel.
I changed the maintainer of some maps from "Estação Pirata" to "Ichai".
I am not part of the Estação Pirata
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑 Ichai
- add: Cyberiad added to the rotation.
- fix: Gax: Fixed missing window in CE office, Fixed walls in SM to
prevent radiation leaks.
- tweak: Port changes to Bagel from GoobStation
- remove: Box is no more.
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
(cherry picked from commit 3da2771a5509b189b4599a2323e9df5d7b9fb562)
* Automatic Changelog Update (#1938)
(cherry picked from commit 755fc9912d4152dca446477ea2693ed91aac59c1)
* R-25 BRDI Back Slot Sprites (#1962)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Added back slot and suit storage sprites for the R-25 BRDI.
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑
- add: Added back worn sprites for the R-25 BRDI.
(cherry picked from commit 2cf4957ccd3ed2e0a673c7a7c774f4d779428cb5)
* Automatic Changelog Update (#1962)
(cherry picked from commit d6ba9f7c0da450e0b8ae6623b33e6933360ae43c)
* Remove Random Stencil Clear On Left Leg (#1955)
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
I don't know why this was being done, but it didn't seem to do anything
and I know for a fact it was causing issues with shaders that were
applied on all humanoid layers, so... "Imaginary Technique: Shitcode
Removal" go.
If anything breaks, it's this.
---
# TODO
<!--
A list of everything you have to do before this PR is "complete"
You probably won't have to complete everything before merging but it's
good to leave future references
-->
- [X] Check that the game didn't incinerate itself.
---
<!--
This is default collapsed, readers click to expand it and see all your
media
The PR media section can get very large at times, so this is a good way
to keep it clean
The title is written using HTML tags
The title must be within the <summary> tags or you won't see it
-->
<details><summary><h1>Media</h1></summary>
<p>

</p>
</details>
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
no cl
Signed-off-by: Eris <eris@erisws.com>
(cherry picked from commit e674f782e24da7a7825520ca650473f155e9e4c1)
* fix upstream
---------
Co-authored-by: EctoplasmIsGood <109397347+ectoplasmisgood@users.noreply.github.com>
Co-authored-by: SimpleStation Changelogs <SimpleStation14@users.noreply.github.com>
Co-authored-by: Paulo Artur Pinheiro Viana Villaça <112904295+algumcorrupto@users.noreply.github.com>
Co-authored-by: astriloqua <129308840+astriloqua@users.noreply.github.com>
Co-authored-by: Raikyr0 <Kurohana@hotmail.com.au>
Co-authored-by: Solstice <solsticeofthewinter@gmail.com>
Co-authored-by: Solaris <60526456+solarisbirb@users.noreply.github.com>
Co-authored-by: Eagle-0 <114363363+eagle-0@users.noreply.github.com>
Co-authored-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: Tirochora <leotabletdb@gmail.com>
Co-authored-by: BloodfiendishOperator <141253729+Diggy0@users.noreply.github.com>
Co-authored-by: Timfa <timfalken@hotmail.com>
Co-authored-by: Rosycup <178287475+Rosycup@users.noreply.github.com>
Co-authored-by: Ichaie <167008606+ichaie@users.noreply.github.com>
Co-authored-by: Eris <eris@erisws.com>
# Description
<!--
Explain this PR in as much detail as applicable
Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->
Ports https://github.com/space-wizards/space-station-14/pull/32294
Ports https://github.com/ss14-harmony/ss14-harmony/pull/310 (and
everything needed for it to function)
Early-merges
https://github.com/space-wizards/space-station-14/pull/34302
Adds the ability for multiple central command maps that get randomly
selected.
Tested and works.
---
# Changelog
<!--
You can add an author after the `🆑` to change the name that appears
in the changelog (ex: `🆑 Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->
🆑 Several contributors
- add: Added a new central command map that is randomly picked alongside
the old one (thank you to Spanky from Harmony)
- add: Added Advanced SMES for mappers.
- add: Added the atmospheric network monitor for seeing what the
temperature, moles, and pressure is on every pipe everywhere through a
computer.
- add: Nukie med bundle now contains a compact defibrillator.
- add: Ported a better mapping editor.
- add: Added the throngler plushie.
- remove: Removed the Throngler as a possible loot spawn for gamble
crates.
---------
Signed-off-by: sleepyyapril <123355664+sleepyyapril@users.noreply.github.com>
(cherry picked from commit 9272f65b64392f66a7cd4fd7c84bb152dc93b65a)
# Description
I've made it so that when a room is explosively depressurized(or when a
body of high pressure air flows into one of lower pressure air), that
entities inside are launched by the air pressure with effects according
to their mass. An entity's mass is now used as an innate resistance to
forced movement by airflow, and more massive entities are both less
likely to be launched, and will launch less far than others. While
lighter entities are launched far more easily, and will shoot off into
space quite quickly! Spacing departments has never been so exciting!
This can be made extraordinarily fun if more objects are given the
ability to injure people when colliding with them at high speeds.
As a note, Humans are very unlikely to be sucked into space at a typical
force generated from a 101kpa room venting into 0kpa, unless they
happened to be standing right next to the opening to space when it was
created. The same cannot be said for "Lighter-Than-Human" species such
as Felinids and Harpies. I guess that's just the price to pay for being
cute. :)
On a plus side, because the math behind this is simplified even further
than it was before, this actually runs more efficiently than the
previous system.
# TODO
Nothing, this is basically done. I've spent a good 6 hours straight
finely tuning the system until I was satisfied that it reflects
something close to reality.
# MEDIA
**Before the Space Wind Rework:**
https://github.com/Simple-Station/Einstein-Engines/assets/16548818/0bf56c50-58e6-4aef-97f8-027fbe62331e
**With this Rework:**
https://github.com/Simple-Station/Einstein-Engines/assets/16548818/6be507a9-e9de-4bb8-9d46-8b7c83ed5f1d
# Changelog
🆑 VMSolidus
- add: Atmospheric "Throws" are now calculated using object mass, and
behave accordingly. Tiny objects will shoot out of rooms quite fast!
---------
Signed-off-by: VMSolidus <evilexecutive@gmail.com>
Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
## Mirror of PR #22521: [Partial atmos
refactor](https://github.com/space-wizards/space-station-14/pull/22521)
from <img src="https://avatars.githubusercontent.com/u/10567778?v=4"
alt="space-wizards" width="22"/>
[space-wizards](https://github.com/space-wizards)/[space-station-14](https://github.com/space-wizards/space-station-14)
###### `18a35e7e83b2b71ee84b054d44d9ed5e595dd618`
PR opened by <img
src="https://avatars.githubusercontent.com/u/60421075?v=4"
width="16"/><a href="https://github.com/ElectroJr"> ElectroJr</a> at
2023-12-15 03:45:42 UTC
---
PR changed 43 files with 891 additions and 635 deletions.
The PR had the following labels:
- Status: Needs Review
---
<details open="true"><summary><h1>Original Body</h1></summary>
> This PR reworks how some parts of atmos code work. Originally it was
just meant to be a performance and bugfix PR, but it has ballooned in
scope. I'm not sure about some of my changes largely because I'm not
sure if some things were an oversight or an intentional decision for
some reason.
>
> List of changes:
> - The `MolesArchived float[]` field is now read-only
> - It simply gets zeroed whenever the `GasMixture` is set to null
instead of constantly reallocating
> - Airtight query information is now cached in `TileAtmosphere`
> - This means that it should only iterate over anchored entities once
per update.
> - Previously an invalidated atmos tile would cause
`ProcessRevalidate()` to query airtight entities on the same tile six
times by calling a combination of `GridIsTileAirBlocked()`,
`NeedsVacuumFixing()`, and `GridIsTileAirBlocked()`. So this should help
significantly reduce component lookups & entity enumeration.
> - This does change some behaviour. In particular blocked directions
are now only updated if the tile was invalidated prior to the current
atmos-update, and will only ever be updated once per atmos-update.
> - AFAIK this only has an effect if the invalid tile processing is
deferred over multiple ticks, and I don't think it should cause any
issues?
> - Fixes a potential bug, where tiles might not dispose of their
excited group if their direction flags changed.
> - `MapAtmosphereComponent.Mixture` is now always immutable and no
longer nullable
> - I'm not sure why the mixture was nullable before? AFAICT the
component is meaningless if its null?
> - Space "gas" was always immutable, but there was nothing that
required planet atmospheres to be immutable. Requiring that it be
immutable gets rid of the constant gas mixture cloning.
> - I don't know if there was a reason for why they weren't immutable to
begin with.
> - Fixes lungs removing too much air from a gas mixture, resulting in
negative moles.
> - `GasMixture.Moles` is now `[Access]` restricted to the atmosphere
system.
> - This is to prevent people from improperly modifying the gas mixtures
(e.g., lungs), or accidentally modifying immutable mixtures.
> - Fixes an issue where non-grid atmosphere tiles would fail to update
their adjacent tiles, resulting in null reference exception spam
> - Fixes#21732
> - Fixes#21210 (probably)
> - Disconnected atmosphere tiles, i.e., tiles that aren't on or
adjacent to a grid tile, will now get removed from the tile set.
Previously the tile set would just always increase, with tiles never
getting removed.
> - Removes various redundant component and tile-definition queries.
> - Removes some method events in favour of just using methods.
> - Map-exposded tiles now get updated when a map's atmosphere changes
(or the grid moves across maps).
> - Adds a `setmapatmos` command for adding map-wide atmospheres.
> - Fixed (non-planet) map atmospheres rendering over grids.
>
> ## Media
>
> This PR also includes changes to the atmos debug overlay, though I've
also split that off into a separate PR to make reviewing easier
(#22520).
>
> Below is a video showing that atmos still seems to work, and that
trimming of disconnected tiles works:
>
>
https://github.com/space-wizards/space-station-14/assets/60421075/4da46992-19e6-4354-8ecd-3cd67be4d0ed
>
> For comparison, here is a video showing how current master works
(disconnected tiles never get removed):
>
>
https://github.com/space-wizards/space-station-14/assets/60421075/54590777-e11c-41dc-b49d-fd7e53bfeed7
>
> 🆑
> - fix: Fixed a bug where partially airtight entities (e.g., thin
windows or doors) could let air leak out into space.
>
</details>
Co-authored-by: SimpleStation14 <Unknown>
* 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)
* Refactors the entirety of the AtmosphereSystem public-facing API to allow for multiple atmos backends.
* actually compiles
* Remove commented out code
* funny bracket
* Move archived moles, temperature from GasMixture to TileAtmosphere.
* WIP customizable map default mixture
still VERY buggy
* broken mess
aaaaaaaaaaaaa
* Fix lattice, etc not being considered space
* visualization for "IsSpace"
* help
* Update Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs
Co-authored-by: Moony <moonheart08@users.noreply.github.com>
* Holy SHIT it compiles AGAIN
* Fix AtmosDeviceSystem crash at shutdown
* Fix immutable tiles on map blueprints not being fixed by fixgridatmos/revalidate.
* Use space instead of gasmixture immutable for heat capacity calculations
* Remove all LINDA-specific code from GasMixture, move it to TileAtmosphere/AtmosphereSystem instead.
* Fix roundstart tiles not processing
* Update Content.Server/Atmos/Commands/SetTemperatureCommand.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs
Changed Files tab is so large I can't commit both suggestions at once mfw
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Moony <moonheart08@users.noreply.github.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* 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