## About The Pull Request

## Why It's Good For The Game
Its nice to not go bald when wearing a wintercoat since you can still
see some of your supposed-to-be-hairy-head
## Changelog
🆑
image: Wintercoat hoods now show a bit of your hair!
/🆑
## About The Pull Request
fixes#88383
## Why It's Good For The Game
fixes#88383
## Changelog
🆑
fix: The Men in Grey may no longer access birdshots engineering via a
certain maintenance airlock
/🆑
## About The Pull Request
Fixes#71092
## Why It's Good For The Game
Flaky tests bad, fixman good...
## Changelog
🆑
fix: Pubby's whiteship no longer breaks when it tries to dock
/🆑
## About The Pull Request
multitile airlock assemblies from a broken multitile airlock are the
same direction
## Why It's Good For The Game
fixes#81406
## Changelog
🆑
fix: multitile airlock assemblies from a broken multitile airlock are
the same direction
/🆑
## About The Pull Request
~~This adds a new test for the CI/CD so that we can load all space ruins
instead of it being RNG.~~
Adds more robust logging for ruins so we can see when they fail/succeed
and how many are placed on a map.
This also removes a deprecated CI config setting. It prevented ALL ruins
from spawning during CI tests which is bad.
The config setting was made redundant in:
- #87910
## Why It's Good For The Game
More robust CI/CD.
## Changelog
🆑
code: Add better logging for ruins
/🆑
## About The Pull Request
Makes the dimensional shifter relic not delete global data.
## Why It's Good For The Game
We need those. Please don't delete those.
## Changelog
🆑
fix: Dimensional shifter relics work more reliably.
/🆑
## About The Pull Request
Since #87866 PostTransfer now has it's parent set to nil, and instead
has a `datum/new_parent` argument supplied to it.
Why does the ***post*** transfer proc not have it's parent set yet? Not
sure, but some procs (and the documentation) haven't been adjusted yet
and this PR fixes that
also:
fixes#88156fixes#88325
## Why It's Good For The Game
Fix man good...
## Changelog
🆑
fix: /datum/component/PostTransfer() procs that didn't have their
new_parent arguments have now been fixed
fix: This means that turning into a Domain gondola shouldn't RR people
anymore
/🆑
## About The Pull Request
We don't check if the loop is actually queued as we attempt to remove,
fire and queue it, which makes our loop potentially run in parallel with
a higher priority loop, which (for some reason specifically on during
engiborg tests and specifically on wawa) was causing a flaky CI failure.
Closes#88400
## Changelog
🆑
/🆑
Adds a mail sorting unit!
The unit accepts mail, stores it and sorts it per department. It can
also search for individual envelopes, change it's output tile and be
VERY loud.
At the meantime, this PR also adds two flatpack subtypes - flatpacker
subtype and mail sorter subtype. The first one is intended to be used by
mappers to have a flatpacker be accessible roundstart, and the second
one is now sold at cargo wardrobes to make the mail sorter also
available roundstart.
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
https://github.com/user-attachments/assets/8700ba46-b505-4f8b-8977-c20472c72cebhttps://github.com/user-attachments/assets/954b5f3b-7fe4-4ade-9e67-e3ac9bad6550
A collaborative work between sadboysuss/grungussuss and Sothanforax
adds a hiss emote to humans and gives sounds to:
- [X] Lizard
- [X] Ethereal
- [X] Human
- [X] Monkey
- [X] Felinid
~~[ ] Moff get real~~
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑 grungussuss and Sothanforax
add: hiss emote
sound: hissssssing sounds
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
---------
Co-authored-by: Sothanforax <sothanforax@gmail.com>
## About The Pull Request
**1. Code Improvement**
- Moved global pipe crafting recipe list into
`code/__DEFINES/globalvars/list` folder because its a global list & it
should belong there. Reduces size of RPD file
- Moved `datum/pipe_info` into `code/__DEFINES/globalvars` folder
because it's used by both RPD & crafting recipe so its a global var.
Reduces size of RPD file
- Replaced a bunch of `usr` with the proper user variable when available
- Autodoc for procs & vars
**2. Refactor**
- Attack chain for RPD has been refactored to `interact_with_atom()` &
`interact_with_atom_secondary()`
## Changelog
🆑
refactor: improved attack chain code for rapid pipe dispenser
code: organized lists & global vars for rapid pipe dispenser into their
own respective files & improved a bunch of code
/🆑
## About The Pull Request
changeling last resort works if youre a monkey or animal
any reasonably organic animal that is (golems included) so no
constructs, no spirits (shades, etc), no deathmatch/bitrunning body and
also not a headslug
## Why It's Good For The Game
for a "last resort" ability you cant use it if you got monkified which
is something that can happen fucking you over which is not great
or perhaps due to some foul magicks you became a rat or whatever youre
basically fucked because you cant do anything and all you can do is
bumrush people
this fixes both
## Changelog
🆑
balance: changeling last resort works as a monkey or animal
/🆑
## About The Pull Request
This PR improves our jetpacks in 2 major ways: partially decoupling them
and intentional space movement from SSnewphys, and implementing
consistent pushoff speeds.
Currently jetpacks work by applying constant newtonian force whenever an
input key is held down by a client and stabilizing the movement every
time they get processed by SSnewphys which is an SS_TICKER subsystem,
which means that it attempts to fire prior to everything else and has a
wait of a single tick. This would be fine if we could guarantee that
there isn't another SS_TICKER subsystem with a higher priority that
constantly overtimes... oh right, that'd be the most important subsystem
of SSinput.
Newtonian impulses, both when starting a drift and when applying
continious force rely on SSnewphys to fire the loop, which can end up
not happening due to overtime in input (and is a frequent issue on
highpop). To circumvent this, newtonian impulses now forcefully fire
their drift loop regardless of SSnewphys, thus ensuring that the
movement always happens in the tick it was called (If you ask something
to move with an ``instant`` flag you'd expect it to move the same tick).
Second issue stems from the fact that jetpacks try to move you at your
movement speed, except when pushing you off objects they hijack normal
movement code that would've ran, resulting in a single tile of slow,
janky movement (Or, when moving along walls, making the controls feel
"sticky" and worse than what you'd have without a jetpack in the first
place). By forcefully applying enough force to make players move at
expected speeds, we can solve that issue.
Third issue stems from a minor mistake in SSnewphys processing order -
process() on jetpacks ran **after** moveloops have fired, so all
stabilization only applied next tick. I swapped fire orders around which
solves this problem too, although it won't be triggering much as
stabilization would now forcefully fire the related loop by itself.
https://github.com/user-attachments/assets/1068f68b-2cd1-49b0-bff0-1f79ed0aed5a
Also I've refactored wings to be jetpacks since they behave exactly the
same, which is a bit cursed if you think about it.
## Why It's Good For The Game
Jetpack movement is highly inconsistent in speed/smoothness, janky and
gets ruined by even a slightest amount of overtime in subsystems above
it - this should solve all of those issues.
## Changelog
🆑
qol: Jetpacks are significantly smoother and nicer to use now - and not
affected by lag anymore!
code: Cleaned up spacemove/jetpack code a bit and moved some common code
to helpers.
refactor: Wings are now... jetpacks. They behave exactly the same and
this should reduce the amount of copypaste code in spacemove
significantly.
/🆑
## About The Pull Request
- Removed the following unused/unchanging vars from machines
- `wire_compatible`
- `machine_power_rectifier`
- `market_verb`
- Removed setting `fair_market_price` in places which did not check for
NAP violations like cryo & coffee pot
- Autodoc for other vars & procs. Adds modifiers for procs where it
makes sense
- Merged `base_item_interaction()` with its already existing
implementation. RPED now adds finger print to the machine & respects
`COMSIG_TRY_USE_MACHINE`
- Removed proc `locate_machinery()` which was only used by turbine
machinery,
## Changelog
🆑
code: improved code for machinery
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
This adds a crate to medical holodeck sim with a full set of human
organs inside a freezer containing:
- heart
- lungs
- eyes
- ears
- tongue
- liver
- stomach
- appendix
##### (And yes, a holodeck organ can fade away while it's still inside
someone causing them to suffer organ loss)
## Why It's Good For The Game
Immersion.
## Changelog
🆑
add: Add medical human organ crate emergency medical holodeck simulation
/🆑
## About The Pull Request
**1. Code Improvements**
- Removed `can_interact_with()` checks. They aren't required if we don't
have a TGUI window & `can_perform_action()` can suffice here
- Shortened code for tool acts & `attack_hand_secondary()`
**2. Fixes**
- Fixes#88180. It now has checks after the user has selected a radial
menu option
- You can eject contents & examine (AI only) the grinder without
requiring it to be anchored or powered via the radial menu
- Examine block is properly formatted
## Changelog
🆑
code: condensed code for reagent grinder
fix: reagent grinder won't break when 2 or more people are
simultaneously interacting with it
fix: ejecting contents & examining the reagent grinder as an AI via the
radial menu does not require it to be powered or anchored
fix: examine block for reagent grinder as an AI is properly formatted
/🆑
## About The Pull Request
burglars finesse range increased and it may loot any storage object on
the back
caretakers refuge cooldown is only applied when exiting refuge
labyrinth handbook accepts any crayon instead of a white crayon
less balance related:
click on an id card with eldritch id card to make it consume it
eldritch id portals are slightly smoother
## Why It's Good For The Game
burglars finesse will immediately get you valided at max range anyway so
lets make it longer
caretakers refuge is not that good to need a 2 minute total cooldown
the labyrinth handbook recipe is too bad to even consider making it
ever, making it use a crayon makes it more accessible and its still not
that good of an item anyway
## Changelog
🆑
balance: burglars finesse spell range increased from 4 to 6 and it may
loot any back storage object, caretakers refuge cooldown is only applied
when exiting refuge, labyrinth handbook accepts any crayon instead of a
white crayon
qol: you may click an id with the knock heretic id card to make it
consume it
/🆑
## About The Pull Request
Removed HEAL_REFRESH_ORGANS flag from:
* Legion cores
* Helbital janken achievement
* Adminodrazine (just annoying to deal with in practice)
* Regenerative slime extracts
* Wands of healing/death (for undead)
Closes#87520Closes#87007
## Why It's Good For The Game
HEAL_REFRESH_ORGANS forces the species datum to delete and re-create all
of mob's organs, deleting all non-natural organs. This leads to loss of
augmentations or non-standard organs, and is usually excluded from most
revives (but was intentionally, or unintentionally, missing from these).
This should stop miners and scientists from losing their
implants/infusions/augmentations, and make it easier for testers to heal
themselves without losing organs (since this allows you to heal self by
spawning adminodrazine, as normal aheal still refreshes your organs)
## Changelog
🆑
balance: Removed organ "refreshing" from legion cores, magic wands and
regenerative crossbreeds so they no longer get rid of your implants
/🆑
## About The Pull Request
Technically an improved port of
https://github.com/DaedalusDock/daedalusdock/pull/651, instead of only
storing height over 32 pixels for HUDs we store both pure height and
width for the sake of cutting down on icon operation spam (which is
pretty costly). Should save us a significant amount of time, cuts down
update_health_hud times by 45% and total update_health by 30% which is
pretty good for a somewhat hot proc.
## Why It's Good For The Game
Our health HUDs constantly fetch icons ***twice*** every update_health,
jesus.
## Changelog
🆑 SmArtKar, Kapu
code: Implemented caching for icon sizes which should significantly
improve mob health performance due to HUDs constantly fetching icons
/🆑
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Surgery trays now have a small chance to become medical toolboxes.
Autopsy trays can become coroner toolboxes.

They work basically the same, just that they can't be rolled around and
don't slow you down when walking around.
Medical toolboxes are fairly weak, but coroner toolboxes are pretty
strong.
Added a 1 in 1.000.000 chance for a toolbox to have four latches.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
> Surgery trays now have a small chance to become medical toolboxes.
Autopsy trays can become coroner toolboxes.
> They work basically the same, just that they can't be rolled around
and don't slow you down when walking around.
The idea of going to the surgery room and finding a _medical toolbox_
instead of a surgery tray is inexplicably amusing to me.
> Medical toolboxes are fairly weak, but coroner toolboxes are pretty
strong.
Healers and hurters!
> Added a 1 in 1.000.000 chance for a toolbox to have four latches.
peak absurdity is reached
~~next pr will include brown toolboxes, which clip to your belt~~
credit 2 @SmArtKar for sprites
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
carlarc, smartkar
add: Surgery trays now have a small chance to become medical toolboxes.
Autopsy trays can become coroner toolboxes.
add: Added a 1 in 1.000.000 chance for a toolbox to have four latches.
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request
Using a toolbox on an object will now bring up a radial menu containing
all "tools" inside of it, and picking one will put it in your offhand
and use it on the object you clicked. After use, the item will be stowed
back in the toolbox. Welding tools will be turned on (and off when
stowed), and spess knives will give you an option to pick which tool you
want to use. Only certain items qualify as tools (most items that would
fit into a toolbelt do), so you cannot use this to sneakily attack
someone with an esword.
https://github.com/user-attachments/assets/0cd5c859-490f-4643-b451-92ce15a34fba
Using a toolbox in such a fashion passes click modifiers through,
allowing you to use left/right, ctrl and alt click modes of items just
fine.
God bless our attack chain.
## Why It's Good For The Game
Toolboxes are inferior to toolbelts and boxes in almost every single
way, being only capable of storing 7 items and not fitting anywhere.
This gives them an actual use and maybe they'll see use in actual
construction projects.
## Changelog
🆑
add: Toolboxes can be used on any object to pull out and use a tool from
it as long as your offhand is free.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
This felt like an infinite delete trap so I've tested it and didn't find
anything but there's a couple of qdel loop traces in server logs, I
think this happens if something destroys the meteor?
## Changelog
🆑
fix: Fixed an edge case with meteor moveloop code
/🆑