## About The Pull Request
Exactly what it says on the tin (snow legions only dropping ashen
skeletons, like tendril legions).
Also changes the name of the "fromtendril" variable to "from_spawner",
and comments it. Not sure if that warrants a changelong comment, but
I'll go ahead and assume no.
## Why It's Good For The Game
being able to farm snow legion portals for an endless tide of bodies
and/or equipment is a bit weird. also puts it a bit more in line with
the legions of Lavaland
## Changelog
🆑
balance: The source of the demonic portals that endlessly deposits snow
legions onto the Icemoon no longer preserves the bodies nor gear of the
damned (read: demon portal snow legions now only drop skeletons).
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
See the title. Doing so by adding a new arg for damage type to
`check_shields()` and `hit_reaction()`. The other way would had involved
a couple istype checks for item or projectile damage type, but this is a
longer term solution and can tackle more than just that.
## Why It's Good For The Game
Fixes#74876.
## Changelog
🆑
fix: Stops shields getting broken by pillows and disablers.
/🆑
## About The Pull Request
when fultoning yourself, adjusts the fulton autobag check from "is there
a backpack on this guy" to "can we try shoving stuff into their
back-slot item's atom storage"
not sure if this is qol, fix, or god forbid balance but let's go with
the maybe least offensive option first
...if it was an oversight can i legally flag this as a fix?
closes#75327
## Why It's Good For The Game
makes the autobagging feature work for other back-mounted storage
options. like MODs.

## Changelog
🆑
qol: Fulton extraction packs (when used on yourself) now automatically
shove themselves into any back-mounted storage, like MODsuit storage
modules.
/🆑
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
Fixes grammar error on syndie sm shard desc
## Why It's Good For The Game
gramar
## Changelog
🆑
spellcheck: Fixes grammar error on syndie sm shard desc
/🆑
<!-- 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
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
Adds `KEEP_TOGETHER` flag to the gun's `appearance_flags`, so overlays
are now one with gun's icon.
Before:


After:


## 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. -->
Better visuals. Also required, when guns are forced to be placed in 90
degree
## 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 it's 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. -->
🆑
fix: Gun overlays (energy ammo counter, flashlights, bayonette, etc) are
now one with gun's icon, which makes said overlays to transform
correctly with gun's transform (ie, throwing)
/🆑
<!-- 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. -->
This pull request updates the TGS DMAPI to the latest version. Please
note any changes that may be breaking or unimplemented in your codebase
by checking what changes are in the definitions file:
code/__DEFINES/tgs.dm before merging.
Co-authored-by: tgstation-server <tgstation-server@users.noreply.github.com>
## About The Pull Request
Fugitive Hunter spawning now works a lot more like it does for Pirates.
Rather than just using the spawners, it collects candidates from a ghost
poll, and leaves the remaining spawners to be used if any are left.
## Why It's Good For The Game
The only way this event gathered candidates was through the
notify_ghosts that hunter spawners threw on Initialize(). This easily
flies under the radar (and I think also stopped working after
lazyloading was implemented??), contributing to how infrequently hunter
rolls are taken.
The hunters are an important part of fugitives as a whole, so making
sure they're properly filled out is good.
Closes#74625.
## Changelog
🆑
qol: Fugitive hunters now get a deadchat poll and notify deadchat
properly.
/🆑
For the longest time, the only way admins could moderate the library was
by using statbus's external tool.
But a few months back statbus went down, and ever since then they've
been sitting lost. Shit sucks.
The whole external thing has been bugging me for a while, so let's fix
all that yeah?
This pr adds a new verb to the admin tab that allows admins to
ban/restore books from the library.
It includes expanded (ckey) search, faster response times, in tool book
viewing with and without markdown rendering, and viewing of deleted
books.
This is accomplished with a special subtype of library consoles, stored
on the admin datum.
It shouldn't let you do anything without +BAN, rip my live debugging or
whatever.
I've also hooked into (and fixed) Ned's existing library actions log,
and added viewing support to the ban/restore pages.
This logs banning admin, ban time, ban reason, etc.
As a part of this, I've fixed/expanded on the existing UIs.
I've added ID search to all existing consoles, and fixed an existing bug
with the visitor console not supporting category search (shows how many
people actually use the thing)
Changes to the library_action table were pretty minor. The ckey column
was too small, so longer keys just caused it to fail on ban. Bad.
That and the ip address column was signed, which wasted space and was
non standard with other tables.
## About The Pull Request
Abductors can now use any baton instead of just their special baton.
## Why It's Good For The Game
Abductors are a bit fucked if they lose their baton and are unable to
buy one from their shop. Sure they can just use flashes or maint-fu but
those methods are hard and or unreliable. (if they manage to lose their
baton, they probably aren't that robust anyways). This PR gives more
leeway if you fuck up as an abductor.
## Changelog
🆑
balance: The mothership which abductors came from has worked very hard
to train their field agents how to use batons from their specimen's
habitat
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
This adds a few more regular glasses options to the nearsighted pref
menu:
- Random
- Jamjar
- Binoclard
It also displays the icons for the TGUI dropdown menu.
## Why It's Good For The Game
More variety and better visualization. (nearsighted... get it?)
## Changelog
🆑
qol: Add more glasses to the nearsighted pref menu with icons
/🆑
---------
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
## About The Pull Request
More or less a triviality, currently footstep/wheelchai sounds are
played even when the mob is moved by a conveyor belt, or riding the
tram. This PR puts an end to that.
To clarify, this doesn't stop these sounds from being played if you're
walking/running/rolling along or against a belt, or inside the tram.
But more than that, I made this PR because, afaik, we don't have a good
way to tell if a given movement proc chain was caused by a move loop or
not, and I need one for something I'm working on. This is more of an
implementation and reason for this PR to be made.
Tested, no issue. Waiting for a review, specially from @LemonInTheDark,
since they're the mind behind the movement loop code. Hopefully I'm
right saying what I said.
## Why It's Good For The Game
This fixes a consistency issue (if it can be called such) and the lack
of a simple way to tell if a movable is being moved by a move loop
outside of its own code.
## Changelog
🆑
fix: Being moved around by conveyor belt or tram no longer play
footsteps and wheelchair sounds.
/🆑
## About The Pull Request
Re-read the title. I had to add a dcs signal to do this.
## Why It's Good For The Game
Empowering trash bins for the sake of consistency.
## Changelog
🆑
balance: You can now sweep garbage into open trash bins (the crate
subtype).
/🆑
## About The Pull Request
Fixes#75711.
Someone forgot to add a name and description for the base bow, so it
uses the default projectile/gun one.
## Why It's Good For The Game
I'm not certain you're intended to get this version of the bow, but
there's literally no reason to not have it look normal if someone gets
it.
## Changelog
🆑
fix: Added a name and description for the basic version of the bow.
/🆑
## About The Pull Request
The peanut butter banana sandwich is presented ingame as grilled when it
doesn't require a griddle to make.
Also, I'm taking the opportunity to repath the sandwich types, since
they all share the same weight class, food flags and icons file.
## Why It's Good For The Game
This will fix#74585.
## Changelog
🆑
fix: The peanut butter banana sandwich is no longer presented as grilled
when it doesn't require a griddle to make.
/🆑
## About The Pull Request
This PR is a re-pr of ##70522 , with some tweaks:
Notably:
- Wavespeak is not a say override, but instead uses a mindlink. Meaning
carp and space dragons can still talk verbally, but they can also use
telepathy to talk to all carp and the dragon.
- I would refactor Mind Linker a bit further to be a full datum rather
than a component but that's for another time.
- Removed the gravity aura component in favor of using the existing
forced gravity proximity monitor.
- Also fixed a bug involving that. Lol.
- Minor refactoring around the place.
- Reduced the volume on a lot of space dragon sounds.
- Edited the roundend report for Space Dragons to collate all entries
into one per player.

## Why It's Good For The Game
Space dragon still plays pretty "play lame win game" right now, the
optimal strategy for them is to find the cheesiest spot for a portal and
spam their stun / fire breath to make it unreachable.
I was a fan of the original PR so I updated it and brought it back.
## Changelog
🆑 IndieanaJones, Melbert
balance: Space Dragon can no longer choose its rift locations freely,
and instead is given 5 pre-determined locations to pick from instead
balance: Space Dragon itself has been buffed in order to support a more
confrontational playstyle, however its wing gust now requires a line of
sight to targets in order to affect them.
balance: Player Space Carp from rifts now have buffed health, but
reduced object damage values. They also gain a temporary speed boost
when hit by Space Dragon's fire breath instead of taking damage.
balance: Carp rift spawn times have been reduced, the healing AOE is now
a 3x3 instead of a 1x1, and apply normal gravity in a large radius
around them
balance: Space Dragon and rift carps now communicate on a private mind
link channel via action button similar to Raw Prophets and Slimepeople.
fix: Fixed Gravity Generator forced gravity not applying.
fix: Intern Announcer will no longer replace Space Dragon announcements.
qol: The roundend report for space dragons now collates all players who
played a carp into one entry, rather than one per carp spawned.
qol: Space Dragon sounds are much less ear piercingly loud.
/🆑
---------
Co-authored-by: IndieanaJones <mariosuperstar384@gmail.com>
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
## About The Pull Request
Added an argument to compose_message() (visible_name) that sets the name
of the speaker to their visible identity, for messages that can be seen
but not heard, and updated Hear() for sign language accordingly.
## Why It's Good For The Game
Before, your name was attached to your sign message as if you were using
your real voice. Now, your name on sign messages is based off your
visual identity.
It didn't make sense that signing revealed who you were even if you were
wearing a disguise. This appeared to be an oversight rather than an
intentional design decision.
## Changelog
🆑 Epoc
fix: Speaking in sign language no longer reveals your identity
/🆑
---------
Co-authored-by: alec-b-williams <alec.b.williams@wsu.edu>
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Basically someone forgot to make it unrestricted or add agent's card to
the kit so it would be usable when mods were added.
## Why It's Good For The Game
1 more thing that works as intended?
## Changelog
🆑
fix: Syndicate mod-suit in Tactical NukeOps Metagame Syndi-kit (the one
with bulldog shotgun) now doesn't require any access, so you don't need
to buy agent card to simply use it.
/🆑
## About The Pull Request
Lowers Golem's 55% innate species armor to 10%.
## Why It's Good For The Game
The Golem rework has fixed a lot of problems I had with Golems, but this
was by far the most important thing for me. I thought the Golem rework
itself would fix it, but instead I feel it was made worse due to their
speed increase.
Innately, Golems have 55% armor from their species, that is not even
comparable to any other species. There's only 2 other species that have
this innate armor; Zombies at 20%, and Silverscales at 10%, but both of
these are Antagonist roles while Golems aren't always going to be.
Golems also now revolve around eating Matierials for their buffs, so
paired with their speed increase to match Humans, I don't think this
free 55% armor is justified, or fair for people they get in a fight
with.
They also already have alternatives to this, the Titanium food Golem
buff, which gives them brute resistance and harder punches.
## Changelog
🆑
balance: Golems' 55% species innate armor has been lowered to 10%
/🆑
## About The Pull Request
Title. Specifically, this PR makes the plasma breathing part of
plasmamen modular and apply to all species that don't breathe
exclusively oxygen, makes TRAIT_NOBREATH and TRAIT_NOGENES have traits,
and adds traits to species with livers that have different liver
shrugging or alcohol tolerances.
And then, of course, it describes the photosynthetic nature of
podpeople, the fact normal health analyzers cant' scan them, and their
weedkiller weakness.
Made this while I was tired, so could be lower quality.
## Why It's Good For The Game
Futureproofing is good, showing players aspects of the species around
them is good (notably, the genelessness of plasmamen). Who knows - maybe
one day podpeople get enabeld. Or we give a species nobreath.
Regardless, these will help us make changes to species in the future.
## Changelog
🆑
code: Modularized plasmamen plasma breathing species trait code to
automatically apply to all species
code: Liver shrugging differences/Alcohol tolerance differences now
displayed in the species trait panel
code: Nobreath and Nogenes now accounted for in species trait code
add: Podpeople now have species traits
add: Plasmamen genelessness is now displayed in their species panel
/🆑

## About The Pull Request
Resprited many condiment containers.
And a tray (don't know why, it just was in the dmi)
Replaced the old condiment bottle from Condi Master with the one that
was used in Chem Master before the test tubes.
## Why It's Good For The Game
More in line with other 3/4 stuff
## Changelog
🆑
image: Resprited many condiment containers
image: Added a sprite for cooking oil / corn oil container
image: Replaced old condiment bottles with the newer bottles in Condi
Master
/🆑
## About The Pull Request
fixes the flaky test reports for cockroaches being stuck in the spatial
grid (which mothblocks seems to have closed all of)
cockroaches get deleted when they die, so theres a spurious unit test
failure where if a cockroach is on a tile in grid cell A and moves to a
lava tile in grid cell B, they will get killed when lava.Entered() is
called, then deleted, and when /atom/movable/Destroy() is called we try
to take them out of grid cell B (because their loc is the lava tile) but
they were never added to that cell yet because their movement never
finished, so that doesnt do anything. THEN moveToNullspace() is called,
that movement finishes before the first movement, and then in
Moved(old_loc = lava turf) we try to remove it from grid cell B which
again doesnt work, and then the first movements Moved(old_loc = original
turf) is called where we can actually remove them from the correct grid
cell, except we cant because in exit_cell() we subtract
`old_target.important_recursive_contents[channel]` from the cells
content lists, and since the target is deleted by this point it doesnt
have important_recursive_contents. so the fix here is changing this so
it subtracts `old_target.important_recursive_contents?[type] ||
old_target` instead, which works if the target is deleted.
also fixes some Entered() overrides that dont call parent and improves
documentation on spatial grid defines
## Why It's Good For The Game
fixes it without needing the change_loc() setter
## About The Pull Request
The code for factory blobs and blob structures is kinda messy and ridden
with some unreacheable code and unused variables. My plan here is stop
factory blobs from hard-deleting because of uncleared references, but I
took a little liberty to cut some old code that looks more of a
hindrance than anything.
## Why It's Good For The Game
This should fix#74845.
## Changelog
No tangible change for the player.
## About The Pull Request
While trying to turn the base system into a separete proc I thought I
had commited this fix in, but did not...
Also removed a redundant check_danger() I left in while fixing merge
conflicts because I'm good at gitfu.
And thanks for Zxaber for letting me know about this issue as soon as
possible.
## Why It's Good For The Game
Air alarms talking forever do be bad...
## Changelog
🆑 Guillaume Prata
fix: Air Alarms will properly shut up when atmos is fixed.
/🆑
**1. Material Container Refactors**
a. `/datum/component/material_container/proc/insert_item()`
- Will now do stack spliting i.e. it will consume as many sheets from a
stack as possible and leave out the rest, It was moved from a player
interaction feature in `user_insert()` to this low level allowing many
things to take advantage of it
- Will now delete the item for you if it could salvage any materials
from it, you don't have to do it explicitly anymore if insertion was
successfull (i.e. this proc returns an non zero value) If you inserted a
stack and not all of it's sheets were inserted from the above point then
you still have to check it explicitly
- Will now invoke `after_insert` if any materials were salvaged
b. `datum/component/material_container/proc/user_insert() `
- Will now split the stack by the requested amount making precise
insertion work again & Fixes#72288
- will now consume all contents inside of the object reccursively, this
means items like ammo boxes will no longer have to adjust their custom
materials based on how much ammo they contain because `user_insert()`
will loop through all its contents and salvage the metal of every bullet
inside the box contents so this means
9686971c76/code/modules/projectiles/boxes_magazines/_box_magazine.dm (L206)
has been removed.
**The Problem with this proc**
take `/obj/item/ammo_box/foambox/riot` for example. it has 40 darts each
having 1125 worth of iron, this proc will add the total iron of all the
bullets to the box custom material so the box custom materials would
become
`5000(base iron of box. see the definition of
/obj/item/ammo_box/foambox/riot) + 45000(40 bullets each having 1125
worth of iron) = 50000 iron`
What happens when you throw this ammo box in an recycler? The recycler
will recycle this box(Now 50000 worth of iron) AND the iron of each of
it's 40 bullets thus yielding
`50000(iron from box because of update_custom_materials()) + 45000(40
bullets each having 1125 worth of iron) = 95000 iron` `
because of this single proc we got `95000 - 50000 = 45000 extra iron`
from thin air
**The Solution?**
Remove this proc and set a constant custom material value for the ammo
box(it's now 5000 computed see code) AND allow the material container to
loop through every bullet in the box and salvage iron from them. This
would yield
`5000(base iron of box. see the definition of
/obj/item/ammo_box/foambox/riot) + 45000(40 bullets each having 1125
worth of iron) = 50000 iron`
From both box & bullets combined and not just from the box alone
Fixes#43570Fixes#57548
This also allows you to do cool stuff like fill your bag with iron,
glass, whatever and dump them in the autolathe/ore silo by attacking the
machine with your bag rather than pulling out & inserting each item
individually so hey convinience
**2. Recycler patches**
- Recycler will stop consuming items when it runs out of power mid
recycling(which can happen if it recycles a large amount of items). It
used to previously run through the list of items without breaking so
even when power was lost, it still did it's job
- Recycler will now Properly recycle all the contents inside an atom.
**The Problem**
Say we have 2 Items
- Backpack
- Glass sheet inside Backpack
If we process the items in the following order while deleting each item
that is processed first "Backpack" then "Glass Sheet" then when
"Backpack" is fully recycled and "Deleted" since the "Glass Sheet" is
inside the "Backpack" it get's deleted as well, so when we actually try
to recycle the "Glass Sheet" next, nothing happens because it was
deleted when we deleted the "Backpack".
**The Solution**
Recycle the items in the reverse order first recycle the "Glass Sheet"
delete it & then the "Back Pack" so we don't deal with deleted items. So
you should see more materials come out when you put stuff inside storage
mediums & throw them in the recycler
- Recycler will consume only half the power when it's deleting items
that can't be recycled(no material was salvaged). just for convinience
## About The Pull Request
This is part of a pass I'm working on doing where I go through and
remove instances of antag gear outside of their normal context. This is
mostly going to involve replacing space/Lavaland ruin gear with
something close to the same power level but not distinctly something
only antags should be able to get. I want to keep ruins rewarding but I
don't want explicit antag gear to be something you can obtain without
needing an uplink.
The first part of this is me removing the MODSuit from the syndicate
operative corpse. The new one drops a turtleneck, a syndicate gas mask,
and gripper gloves.
## Why It's Good For The Game
It's my opinion that antag gear should probably stay in antag hands
unless you manage to kill one or steal an uplink. The main impetus for
this was a discussion I had a while back about how blood red hardsuits
used to _just_ be an antag thing. I kind of miss that general feeling of
paranoia that came from seeing someone wearing it, as opposed to seeing
it these days and just thinking "Yeah, it's probably someone who got it
from space".
In this specific instance, Syndicate MODSuits are pretty strong anyway
and, regardless of the low odds of getting one, I really don't think it
should be available as loot off a fairly easy-to-kill mob.
## Changelog
🆑
balance: Syndicate corpses dropped from killing a Legion no longer come
with a MODSuit.
/🆑
## About The Pull Request
This PR will add new (antag) device, that will allow players to
counterfeit mails, putting (almost) anything they want and arming it, if
they liked to.
Upon activation this device will give you multiple choices like:
- Is it gonna be an envelope or a normal mail?
- Is it gonna be armed?
- Who is gonna be a recipient?
- If it is a non private mail, then what title it is gonna have?
Those devices can put any single normal sized item inside a mail, that
is gonna be activated upon opening if mail armed. Mail creator and other
ditalis will be shown to admins upon activation for admin purposes.
By activation i mean `attack_self` proc of an item.
Armed mail can be disarmed by using, BUT! Only owner can disarm it with
100% success rate. Other people will have 50% chance of fail, that will
activate a trap.
Those devices also have few more admin-only variations:
```
/obj/item/storage/mail_counterfeit_device/advanced
/obj/item/storage/mail_counterfeit_device/bluespace
```
They can put more items inside a mail.
### How to get those naughty devices?
- Those devices can be purchased in uplink. One device goes for one TC.
- QM and Cargo Technicians have special kits that costs 2 TC and have 6
devices.
And yeah, i also fixed issue with envelopes, they actually have 2 items
inside, but player were given only first one.
Proof of testing:

(minibomb was set to instant detonation before recording)
## Why It's Good For The Game
This PR will give a lot of new possibilities for traitors. Those mails
can be used not only as bombing tools, but also for contraband and other
purposes. Also those mails can be used for (b)admin stuff.
## Changelog
🆑
add: added a mail counterfeit device that can make custom (and also
armed) mails. Traitors have those devices in their uplinks.
add: added new kit for QM and Cargo Technicians that have multiple mail
counterfeit devices for neat price.
fix: fixed envelopes that were giving only their first item, even tho
they had two items insede.
image: added new icon for mail counterfeit device.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>

## About The Pull Request
Added a chart that shows generated power and potential power.
## Why It's Good For The Game
You can now see how well the panels perform throughout the solar cycle.
## Changelog
🆑
qol: Solar control console now shows power generation history
/🆑
## About The Pull Request
`/obj/item/stack/sheet/add()` proc not only increments the `amount` var
but also
1. updates the stack's appearance
2. updates it's weight
3. inform's global material sniffer's about it's presense
4. also updates it's custom material's
So let the slime extract use this proc instead of doing a partial
incomplete job ourselves
## Changelog
🆑
fix: stabilized metal slime extract properly increments stacks so that
it's appearance & weight are updated correctly & is picked up by
material sniffers.
/🆑
## About The Pull Request
Fixes epipens, pillbottles, and test tubes having a missing texture when
put into suit storage.
Makes pills and patches invisible on the player when put into suit
storage.
Turns the paper hat into a craftable item, and by extention fixing an
issue where a paper hat would appear on your head when you put paper
into suit storage.
fixes: #69504
## Why It's Good For The Game
Fixes some missing texture sprites, makes it so the paper hat does not
appear on your head when you put it in suit storage.
Pills and patches also appeared on your body when put into suit storage,
which I thought looked weird, since they would be in your pocket or
something.
## Changelog
🆑 Seven
fix: Fixes epipens, pillbottles, and test tubes missing texture when put
into suit storage
fix: A paper hat no longer appears on your head when putting paper into
suit storage
add: The paper hat is now a craftable item
image: Pills and patches are no longer visible on a person when put into
suit storage
/🆑
## About The Pull Request
- Gun flipping is now done via attack self secondary (right click it
when it's in your active hand) rather than attack self ("use" hotkey or
left clicking it when in active hand)
- Moves gun flipping to `/gun` level
## Why It's Good For The Game
- Gun flipping has historically had very bad UX, as most ballistic guns
used attack self for some function - loading the gun, ejecting spent
rounds, racking the gun, etc. By putting it on attack self secondary, it
makes it a bit more of a deliberate thing and keeps it out of the way of
expected behavior
- TLDR: Makes it much less likely you end up spinning your shotgun like
a dingus in the middle of a firefight instead of racking the thing.
- Also makes it less likely you dump your entire mag trying to show off.
- Putting it on the base level lets me spin lasguns and disablers around
which I've always wanted to. It also means you can spin stuff like wands
and bows but I'm not too plussed about that. It's just funny
## Changelog
🆑 Melbert
qol: Gun Flipping is now done by right clicking the gun when it's in
your active hand ("use secondary"), meaning you should be less likely to
accidentally spin your gun instead of ejecting rounds / racking / etc.
qol: You can gun flip all guns, instead of just ballistics. This
includes stuff like wands.
/🆑
## About The Pull Request
This PR makes air alarms state atmos issues they are dealing with.
Simple Low/high pressure/temperature messages will be said every 10
seconds if there is something going on with the air alarms.
Similar to how vending machines do slogans for their products.
I didn't add any check for particular gases because it looked
unnecessary, but it is trivial to add more into the system.
It now has a speaker wire, so a way to disable audible spam while
letting the air alarm detect issues if you need this for an atmos
project.
## Why It's Good For The Game

Base message as example, it changes into "Danger! Low pressure
detected." and similar.
This lets players know what the issue is on a room easier, specially
helpful for new players that might not understand atmos enough.
The only other option to getting this information is atmos equipment
like the ranged gas analyzer, being a Silicon to check the air alarms
from range or walking to the air alarm, which new or ill equipped won't
do.
Something, something, atmospherics is an eldritch beast with a big
barrier of entry on not only playing the job, but just understanding the
basic system, hopefully this cuts one tail of this mysterious creature.
And I just think talking machinery is cute!
## Changelog
🆑 Guillaume Prata
add: Air alarms will now talk about their atmospheric problems (low/high
pressure/temperature) so players can understand what is the room's issue
easier.
/🆑
---------
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
## About The Pull Request
Adds range per setting on disposals outlets, meaning packages (or
weapons) can be launched further and, at it's highest settings,
embed/hurt or break bones. Also, makes the emag effect automatically
switch to the highest speed/range and doesn't allow it to go below it.
## Why It's Good For The Game
Cargo techs have very few antaggy things under their jurisdiction and
leaves few options. With disposals becoming more commonly used as a
fantastic option for delivery, adding more meaningful ways to sabotage
it would offer more options. Also, this opens up lots of opportunities
for traps.
## Changelog
🆑
add: Made disposals outlets launch with more range depending on the
setting used
add: Made disposals outlets emag effect irreversible without
reconstruction
/🆑
---------
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
## About The Pull Request
Adds defines for gasses and replaces uses I've found to instead use the
defines.
Can you believe I made this PR while trying to work with Xenos? This
sucks!
## Why It's Good For The Game
There's a lot of different uses of things like "o2" and "plasma", and
they are pretty inconsistent. In some places, it's "hydrogen", in others
it's "h2". In some it's "plasma", others "plasm". This unifies it all
under defines so it has a less chance of breaking in the future.
## Changelog
Nothing player-facing.
## About The Pull Request
Adds 3 new electric-themed drinks for ethereals. They count as food for
etherials, (not much, one glass is about equivelant to a plasma burger),
but humans can drink them as well, among other effects.
## Why It's Good For The Game
As an ethereal player, I do feel while our food is convenient, that we
miss out on the RP other species get from going to the bar. This allows
for etherials to order drinks from the bartender. All effects work on
all races, with the hunger satiation as the exception.
## Changelog
🆑
add: Voltaic Yellow Wine - New "base" drink, found in booze-o-mat. No
special effects besides acting as a weak ethereal food. Not very potent
in terms of alcohol.
add: Telepole - New mixed drink themed after thunderstorms, gives the
same shock-resist grey bull does. Made from 1 part Voltaic Wine, 1 Part
Sake, and 2 parts Dark & Stormy. Moderately potent.
add: Pod Tesla - New mixed drink, themed after the old removed tesla
engine (the singulo gets a cocktail, it should too!) Grants a brave -
bull phobia resist, and a stronger grey bull shock resist allowing you
to (temporarily) resist tesla arcs from reactive armor and the SM's
tesla coils. Gives a pleasant thought to whoever drank it, because this
thing is a pain to make. Made from 5 parts admiralty, 5 parts telepole,
and 3 parts brave bull. Highly potent.
qol: Unsure if this counts as QOL or balance, but the fact sol dry is in
3 different cocktails but the bartender has to buy 30u cans of it made
me feel it deserved being added to the soda dispenser.
image: Added graphics for the above drinks, shown below, from left to
right: Pod tesla, Voltaic Yellow wine, Telepole, Voltaic Wine (bottle)
<img width="171" alt="image"
src="https://github.com/tgstation/tgstation/assets/69398298/901b2f64-1723-44b6-8f78-ef21bd477d96">
/🆑
---------
Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>

## About The Pull Request
Added a variable to `/obj/` that can be set to adjust the object sprite
when it mapspawns or being wrenched on top of a table.
Set this variable for some popular tabletop machines, removing the
default `pixel_y` offsets for some of them.
Also moved the wrenching logic to /obj/. It was under machinery for some
reason.
## Why It's Good For The Game
Did you ever unwrench something from the table by accident and then was
annoyed that you can't revet it back?
## Changelog
🆑
qol: Objects have a variable to adjust them visually when they're
wrenched or spawned on a table
refactor: Removed redundant code that had similar purpose, moved `obj`
wrenching logic into the `objs.dm`
qol: food/slime processor can be moved on table and adjusts to it when
wrenched
/🆑
## About The Pull Request
Implements (possibly re-implements if it was used some time ago)
magazine ejection sounds for firearms.
## Why It's Good For The Game
Better weapon feedback as you can distinguish whether you've inserted a
mag or not.
## Changelog
🆑 Stalkeros
fix: Adds or possibly re-adds firearm magazine ejection sounds.
/🆑
## About The Pull Request
Fixes#75401.
There might be a more elegant way to do this, but Melbert and I decided
it'd be better to just make it a hot reaction instead of cold to dodge
the water freezing before the reaction could finish. There was also a
suggestion to do something with the pH to keep it from freezing but that
feels weird and doesn't make sense.
There's an argument to be made that this makes ghetto virology harder,
but it's not _that_ hard to get a heater board.
## Why It's Good For The Game
Couldn't make thing, now we can.
## Changelog
🆑
fix: Fixed virus food being unsynthesizable by making it a hot reaction
instead. Now requires 600K to synthesize.
/🆑
Refactors elevator music to originate from an abstract object rather
than the elevator control panel.
Elevator music is applied while you are within a certain radius of this
object and cuts off immediately upon exiting (largely because as far as
I know you can't obtain playing sounds to fade them out in byond).
As a side-effect of this refactor it also isn't audible to ghosts at
all.
Admins can proccall the web_sound proc, completely bypassing the
shell_url_scrub done in other procs. Additionally, admins could just
directly modify the request URL stored in the request manager so that
it, again, bypasses the shell_url_scrub.
This PR just moves the shell scrubbing directly inside the proc, right
before the world.shelleo call, so that admins can't get around it with a
proccall.
Fixes some problems that seem to have originated from #73325, allowing
you to once again reattach severed monkey limbs and heads to monkey
torsos.
At time of writing, humanoid limbs are the ONLY candidates for
prosthetic replacement surgeries on monkeys. This includes arms and
heads which as far as I can tell is an unintended level of body horror.
This continues to let monkeys be given humanoid legs since the
previously mentioned pr explicitly added support and tests for such.