## About The Pull Request
Basically, the organ equivalents of prosthetic limb and quadruple
amputee.
These replace your organs with absolutely terrible cybernetic
counterparts which also have absolutely no resistance against EMPs.

### ADDITIONAL FUN
Surplus organs are so awful that if surgically removed while not EMPed
nor failing, they *explode*!
## Why It's Good For The Game
More character customization, and more suffering for hardcore random
players.
## Changelog
🆑
add: Added two new quirks, prosthetic organ and tin man. Essentially,
they replace organs with bad bad not good cybernetic counterparts.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
## About The Pull Request
This was one of the tradeoffs for removing other, more consistent
sources of languages, and was requested by Melbert among many others.
This does go against my wanted goal of decreasing the risk of
eavesdropping by other players through just magically knowing a
language, but it is an expensive quirk and it is in their medical
records, which makes it better than language encryption keys or silicon
just innately knowing them.
This also limits Bilingual to only roundstart languages (+Uncommon),
rather than being randomly selected from a list (that had very useless
ones like monkey, podpeople, and beachbum). This is mostly just for
modularity, I didn't want to make it look terrible code-wise and thought
this may be the optimal way to handle it.
This is also me going back on
https://github.com/tgstation/tgstation/pull/71773 - which I had closed
myself.
## Why It's Good For The Game
If we're gonna keep the Bilingual quirk, it might as well be something
players can choose the language of, it's their character and they should
be allowed to decide how their character is, and it is my fault that
this stupid compromise of "getting a random language" was made in the
first place. It never should've happened.
It now actually limits it to roundstart-only languages, so there's no
way you can spy on people who prepare in advance through becoming
podpeople, or monkeys, etc.
## Changelog
🆑
balance: Bilingual quirk now lets you choose your language between ones
given to roundstart species.
balance: Foreigner and Bilingual are now mutually exclusive languages.
/🆑
## About The Pull Request
Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)
Serrated bone shovels can be used in place of circular saw in most
surgeries.
Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.
Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.
Increased the force, throwforce, and wound bonus of inert ritual knives
and scythes.
Coroner gloves can quickly apply medicine like nitrile gloves.
## Why It's Good For The Game
> Serrated bone shovels can be created with any kind of shovel now, not
just a spade (???)
Weird ass bug.
> Serrated bone shovels can be used in place of circular saw in most
surgeries.
It's serrated, it's cool, it's rare, it has a fast toolspeed.
> Added a duller (still deadly) variant of the serrated bone shovel as
coroner mail.
Very thematic for the coroner, should probably also be a heirloom item
but whatevs. Weaker so there's still a reason to seek out the OG.
> Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.
Scanning corpses is pretty important during surgery - it tells you how
much blood they have, organ damage, diseases... these things don't
appear in the surgical computer readout, which means the coroner has to
go out of his cave to pick up a boring light blue meatbag wound scanner.
This also incentivizes coroners to do their job by giving them something
cool that only works on dead bodies.
> Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.
These two options in the MortiDrobe are pretty frickin' badass,
especially with how SICK the Coroner looks with them, double especially
in combat.

However, there's the large issue that as actual weapons they're really,
really weak. Not enough damage, when I use them in combat I both feel
badass but also get a nagging feeling in the back of my mind that I'm
intentionally gimping myself, and with only 10 damage I can *really*
feel it. I find it unfair that these are objectively worse than a
welding tool or even a Butcher's Cleaver when they're a lot more
involved to find, and scarce besides. These arguments apply equally to
the Wizard's ritual knife, and the scythe.
Additionally on the scythe, the crew really needs more good ghetto
weaponry that isn't the boring same ol' of baseball bats, spears,
cleavers... and making scythes useful is a great way to help bridge that
gap. They deal a satisfying amount of damage now, with the clear
downside, of course, being that they're bulky and hard to lug around.
> Coroner gloves can quickly apply medicine like nitrile gloves.
'Fast medicine' doesn't just cover sutures, it also covers medical gel.
Specifically, sterilizer gel. I find it annoying that the Coroner is
encouraged to give up his drip for the boring life-saver nitrile gloves,
because the difference in applying time really does make a difference -
it makes gel applying go from annoying to smooth, which is important
considering the whole purpose of sterilizer gel is to make surgeries go
faster. The Coroner has surgery and thus medical locker access to begin
with, so this isn't a balance problem, (and nitrile gloves are found by
the dozen anyways) especially with how rare the coroner gloves are.
## Changelog
🆑
fix: Serrated bone shovels can be created with any kind of shovel now,
not just a spade (???)
add: Serrated bone shovels can be used in place of circular saw in most
surgeries.
add: Added a duller (still deadly) variant of the serrated bone shovel
as coroner mail.
add: Autopsy scanners now act as advanced health analyzers on dead and
seemingly-dead people.
add: Increased the force, throwforce, and wound bonus of inert ritual
knives and scythes.
add: Coroner gloves can quickly apply medicine like nitrile gloves.
/🆑
## About The Pull Request
Openspace tracks the turf below for starlight purposes The trouble is if
a turf is replaced by another, all its signal registers still persist
I forgot about this, so we'd get runtimes when a
/turf/open/space/openspace was replaced, and the turf below it changed
## Why It's Good For The Game
Less random runtimes
## About The Pull Request
Heavily reworks and resprites first aid analyzers. They now display if
they're happy, sad, angry, or warning you! Also a 'pricking' animation.
First aid analyzers are now found in all basic and specialized medkits.
Toxin medkits get a new* disease analyzer. Miners get a miner-colored
one in their box.
Scanning yourself with a first aid analyzer will 'create a holo-image
with treatment instructions next to your wounds', doubling the speed of
treatment of scanned wounds!
Health analyzers now have a scanning sound, courtesy of CM.
Refactored some wound code to make treatment duration changes and
changes in the description of wounds easier.
Fixed a dummy parent feature of the health analyzer (Verbose mode)
showing up, uselessly, on the disease and first aid subtypes.
Surgical processors and slime scanners have recieved a similar resprite.
## Why It's Good For The Game
> Heavily reworks and resprites first aid analyzers. They now display if
they're happy, sad, angry, or warning you! Also a 'pricking' animation.
These things have long, long needed some sprite love. Displaying emotion
will make them have a lot more 'weight' to them, same with the prick.
The old, shitty spectrometer sprites have gone directly into the
dumpster.
> First aid analyzers are now found in all basic and specialized
medkits. Toxin medkits get a new* disease analyzer. Miners get a
miner-colored one in their box.
They have also needed some gameplay love! Placing them in these kits is
not going to be a massive game-changer when they were already easily
found around the station in emergency medkits, but it will fill up that
awkward empty slot.
> Scanning yourself with a first aid analyzer will 'create a holo-image
with treatment instructions next to your wounds', doubling the speed of
treatment of scanned wounds!
The biggest gameplay-impacting change in this PR, I *sincerely* believe
this is the perfect solution to first aid analyzers being completely
redundant with eyesight. This lets you/someone else scan your wounds to
speed up treatment, with a neat in-character reason for it -
'holo-images' appearing on your body, like penlights.
This will speed up wound treatment, but I believe that is for the best,
as currently treating wounds is so slow that half the time it's not
worth it (or more accurately, it doesn't feel worth it in comparison to
the effort you're putting in) and you're better off shrugging off minor
wounds. It will do so in a way that requires a modicum of effort, so
it's not just a flat buff across the land.
> Health analyzers and gene scanners now have a scanning sound, courtesy
of CM.
It's a neat sound that will make medbay feel more alive. First aid
analyzers get a beeboop instead.
> Surgical processors and slime scanners have recieved a similar
resprite.
IT'S SPRITE MANIA IN HERE
## Changelog
🆑
Carlarc, Weird Orb
image: Heavily reworks and resprites first aid analyzers. They now
display if they're happy, sad, angry, or warning you! Also a 'pricking'
animation.
add: First aid analyzers are now found in all basic and specialized
medkits. Toxin medkits get a new* disease analyzer. Miners get a
miner-colored one in their box.
balance: Scanning yourself with a first aid analyzer will 'create a
holo-image with treatment instructions next to your wounds', doubling
the speed of treatment of scanned wounds!
sound: Health analyzers and gene scanners now have a scanning sound,
courtesy of CM.
refactor: Refactored some wound code to make treatment duration changes
and changes in the description of wounds easier.
fix: Fixed a dummy parent feature of the health analyzer (Verbose mode)
showing up, uselessly, on the disease and first aid subtypes.
image: Surgical processors and slime scanners have recieved a similar
resprite.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
If you are wearing a bible or lighter in your suit slot, or a cowboy hat
on your head, there is a small (2%) chance that bullets (only bullets,
not lasers) will hit them instead of you.
This destroys lighters, removes the storage capacity of the bible, or
sends the hat flying off your head.
The Bounty Hunter's cowboy hat has a significantly higher chance to
intercept bullets.
## Why It's Good For The Game
Adds some fun flavour to these items.
## Changelog
🆑
add: A bible or lighter in your suit slot, or cowboy hat on your head
will occasionally intercept a bullet.
/🆑
## About The Pull Request
Removes the TTS voice disable option, which was already unavailable on
TG as it was set to off by default. The reason this was added was so
that downstreams could toggle the config on or off.
## Why It's Good For The Game
I think this option fundamentally undermines the TTS system because it
allows individual players to disable their voice globally, meaning that
players who have TTS enabled will not be able to hear them.
This worsens the experience for players who have TTS enabled and it's
not something I want to include as an option. If players don't like
their voice, they can turn TTS off for themselves so that they don't
hear the voices. If players don't want to customize their voice, they
can quickly choose a random voice, and we can take directions in the
future to make voice randomization consistent with gender so that a male
does not get randomly assigned a female voice and vice versa.
This option is already unavailable on TG servers because it was
primarily added for downstreams, but I don't think giving downstreams
the option to undermine the TTS system is the right direction to take.
Downstreams are still completely free to code this option on their own
codebase.
---------
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
## About The Pull Request
https://github.com/tgstation/tgstation/pull/75948 changed the name of
the cursed shard and made the katana version a subtype...without
changing the name or desc of the shard
## Why It's Good For The Game
the dark shard from tendril loot will no longer have a stupid name and
tell you you're not supposed to have it
## Changelog
🆑
fix: The cursed katana shard you can get from tendril loot no longer
falsely tells you you're not supposed to have it
/🆑
## About The Pull Request
Removes Cult master's datum, it's not handled by the Cultist itself,
using a helper to promote/demote people to leader.
In practice, the only way someone would be demoted is through Admins, so
this adds support for Admins to intervene in this Cult stuff if
necessary.
Moves cult objectives and cult team to their own files
Removes the cult master's status effect that constantly processes to
send a deathrattle, and instead moves it to a signal hooked to stat
change.
Also moves some things from ``get_antag_minds`` to checking the team,
which doesn't change anything in-game but it does help add the currently
non-functional support for several cult teams. Iunno.
https://github.com/tgstation/tgstation/assets/53777086/573a4f13-35e1-4f34-9952-62fed10b49c9
## Why It's Good For The Game
Having the cult leader be its own datum has actually been handled like
shit. To promote someone to cult leader, we currently make their current
cult datum silent, then remove it, and finally add the cult leader
datum. This means they lose their spells unless manually given back
post-promotion, which sucks (and also, no one has done yet, meaning they
just lose all their spells).
It also means there's a lot more snowflake things, did you know there's
a var to bypass converting mindshielded people? That's so cult masters
can be promoted by Cultists who were mindshielded, and they have to be
"ownable", that var is to bypass the check for mindshield to "convert"
them to leader cultist.
## Changelog
🆑
fix: Cultists promoted to Leader no longer lose their spells (rip
whoever tried saving up blood rites)
admin: Admins can now force promote/demote people from Cult Leader if
necessary.
/🆑
## About The Pull Request
Fixes#76310
`sound_override = TRUE` makes it so that no sound is played for the
announcement since "TRUE" isn't a sound file, but that might be bad code
let me know
## Why It's Good For The Game
Sending the message over the radio makes the AI "speak" it, so TTS plays
from AI at the same time as the VOX sounds, which makes the announcement
sound bad for the AI and anyone around them. This turns it from being
sent over the radio to an announcement so that TTS doesn't apply. It
also just makes more sense having the VOX announcement sent as an
announcement rather than just a normal radio message.
## Changelog
🆑
qol: AI VOX messages are sent over announcement instead of radio
fix: AI VOX messages work properly on multi-Z stations
/🆑
## About The Pull Request
This adds a new element for movables that grants turfs they're in
traits, changes lava and the chasm component to check for traits
instead, ditto for turf slowdown. It also implements another trait that
prevents wet floor from slipping people, as well as some other changes
(feel free to opine on them really):
- Tables and conveyor belts now stop turf slowdown, much like catwalks,
as I imagine people walking on them are not really touching the floor.
(I'd include protection against lava too... until they melt, but that'd
mean finding a way to have these objects burn in the first place, and
lava code is still stupid despite a years old refactor I did)
- Tables also stop slippery turfs from slipping (bananas, soaps etc.
still apply). I wish there were a way to make some objects slippery by
coating them in water vapor or splashing water/lube, but that's outside
the scope of this PR.
- Fixed an edge case in which a mob standing on a lava turf would be
left permanently visually on fire if the lava is changed to another kind
of turf.
- Removed unused code from stone tiles.
I'm going to include these traits in that global list for admin-added
traits... tomorrow perhaps. 💤
## Why It's Good For The Game
Replacing some hard-coded mechanics with easier to use traits and an
element, which I also need for the submerge element PR.
## Changelog
🆑
refactor: Replaced hardcoded "safeties" for lava, chasms and ignoring
turf slowdowns on catwalks with traits.
balance: much like catwalks, tables and conveyors also disable turf
slowdowns.
balance: slippery turfs won't slip you when walking on a table.
fix: Fixed an edge case in which a mob standing on a lava turf would be
left visually but permanently on fire if the lava is changed to another
kind of turf.
/🆑
## About The Pull Request
A new pull request that DOESN'T make Lemon and Ghil kill me. _[I had
made a previous PR about the same original commits that was going to
make Volume Pumps leave a lot more gas in pipenets then people would
want.]_
Removed Hardcoded values from Volume_Pump.dm and moved them to __DEFINES
Updated documentation on Volume pumps because it was copied from
Pressure Pump. Volume pumps attempt to move a certain volume and ignore
pressure limits until exceeding them. This can lead to pressures well
above the limit, so there is no ‘perfecting’ of pressures, as previously
detailed by documentation.
Edited to be more specific.
## Why It's Good For The Game
Less Hardcoded values.
Documentation more readily reflects the realities of the game.
## Changelog
🆑
code: replaced hardcoded values in volume_pump.dm with __DEFINES vars
doc: Volume Pump's basic introduction was copied and pasted from the
Pressure Pump documentation, and made mention of trying to 'perfect the
pressure'. Volume pump doesn't care about pressure until it exceeds it,
so there is no 'perfecting' going on.
/🆑
---------
Co-authored-by: Riley Redd <riley@pcs-ms.com>
## About The Pull Request
Constructed cyborgs seemed to hard delete pretty consistently due to
their robot suit having poor reference handing
Goes through and better implements exited for cyborgs and robot suits
Also a hard delete with forced AIs that may have resulted in some
metagaming
Also fixes 1 nodrop check for hats
## Why It's Good For The Game
Hard deletes are bad
## Changelog
🆑 Melbert
fix: Fixed some hard deletes involving constructed cyborgs
fix: Cyborgs with nodrop hats no longer lose them on tip
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
What the title says.
The brain trauma makes the whole screen monochrome until cured.

## Why It's Good For The Game
I feel like the current pool for mild brain traumas is quite lame, this
helps spice it up a bit with something that is quite annoying and
distracting but not game breaking (as mild brain traumas should
generally be).
## Changelog
🆑
add: Added colorblindness as a mild brain trauma.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
rcd can make girders at half the cost of making a wall in 1.3 seconds
## Why It's Good For The Game
more "rapid" than using iron for girders and putting whatever material
on it
## Changelog
🆑
add: rcd can make girders now
/🆑
## About The Pull Request
i maked the mushrom from the simple monster to a basic monster so he is
dont a simple anymore but now he is a basic.i followe the instrucions in
the guide learn-ai.md to maked this pr. i also give the mushrom a extra
feture he will go and hunt food mushroms on the floor to ate them and
when he ate them he will heal small his hp
## Why It's Good For The Game
he is now a basic monster so he is not simple anymore. it is good
because he is a more advance ai and he will stil go and do the same stuf
he did when he is simple but he is now a basic
## Changelog
🆑
refactor: Mushrooms have been refactors, please report any
bugs/unintended behavior
add: the mushroom basic mob can eat the mushroom plant to heal itself
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
This proc made a false assumption owner always was set when emp'd, when
hearts can just be emp'd out in the wild
## Why It's Good For The Game
Runtimes
## Changelog
🆑 Melbert
fix: Fixed EMPing a cybernetic heart not implanted in a body not
applying effects (stopping the heartbeat temporarily)
/🆑
## About The Pull Request
So you're telling me we have a smoker quirk and we DON'T have an
alcoholic quirk?
What a travesty! Time to fix that.
This quirk is essentially equivalent to smoker, but instead of a
favorite brand you get a favorite *brandy* (as in, favorite type of
booze).

## Why It's Good For The Game
More quirk variety with decent roleplay value.
What will we do with a drunken sailor?
## Changelog
🆑
add: Added Alcoholic as a negative quirk.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request

Seeing this pattern repeated over various sections of code was starting
to piss me off
## Why It's Good For The Game
Lessens chance to cause errors with mind traits, ensures consistent
behavior, makes it easier to change how mind traits work if necessary.
## Changelog
hopefully not player facing
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Broken by 51f02b5acc I introduced logic
that would use SET_PLANE_EXPLICIT's context arg's PLANE (if it had no
turf) as a source.
Since we use SET_PLANE_IMPLICIT in atom Initialize, if we set a plane
before Init, it'll end up double offsetting. This was effecting gas.
Solution, because this case is so rare, is just to set the plane on init
and store the offset on the object until then.
## Why It's Good For The Game
Closes#75709Closes#73642
## Changelog
🆑
fix: Gas, like plasma, will now properly display on multiz stations
/🆑
## About The Pull Request
Mobs would never emote or make sounds upon death because they set
themselves to "dead" before trying to run the emote and the emote can't
run while you are dead.
Also basic mobs didn't have the "it's dead" examine text, and should.
## Why It's Good For The Game
It's good for mobs to tell you when they have died.
Multiple basic mobs were implemented with this feature and apparently
never tested? Maybe we just broke it recently.
## Changelog
🆑
fix: Mobs can once again emote (with sound) when they die.
fix: Basic mobs will tell you whether they are alive if you examine
them.
/🆑
## About The Pull Request
Fixes#76553
Sleeping inputs my beloved
Observetarget was overridden and thus we couldn't remove the original
target, so got to keep their stuff rather than removing it
## Why It's Good For The Game
Exploity
## Changelog
🆑 Melbert
fix: Fixed an exploit involving observers
/🆑
## About The Pull Request
Engineers start with a portable T-Ray scanner but scan normally only
print the eyewear version, for some reason, despite it being flagged as
an engineering tool. This makes them protolathe printable, and available
to science too as they might be conceivably useful on occasion there.
As moved a portion of the cost to glass (same overall material cost)
because it just seems to make intuitive sense that a scanner would have
a screen and would use some.
## Why It's Good For The Game
I couldn't really think of a reason that they wouldn't be printable like
other basic tools. They're also dirt cheap (less than the lathe tax,
where applicable) from public vending machines, so it doesn't seem like
they're particularly intended to be very restricted. So, seems like just
an oversight.
## Changelog
🆑
fix: Engineers can now print the non-eyewear T-Ray scanner from their
department lathe.
qol: Scientists can also print this scanner.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Hey there,
A pretty bad bug (#76226) got through, but it was fixed pretty quickly
in #76241 (cf92862daf). I realized that if
we were testing all the away missions, that this could theoretically get
caught and not happen again. Regardless, unit testing gateway missions
has been on my to-do list for a while now, and I finally got it nailed
down.
Basically, we just have a really small "station" map with the bare bones
(_teeny_ bit of fluff, maploading is going to take 30 seconds tops
anyways let me have my kicks) with a JSON map datum flag that causes it
to load all away missions in the codebase (which are all in one folder).
Just in case some admins were planning on invoking the proc on
`SSmapping`, I also decided to gate a `tgui_alert()` behind it because
you never can be too sure of what people think is funny these days (it
really does lock up your game for a second or so at a time).
I also alphabetized the maps.txt config because that was annoying me.
## Why It's Good For The Game
Things that break on production could(?) be caught in unit testing? I
don't know if the linked issue I mentioned above would have been caught
in retrospect, but it's likely to catch more than a few upcoming bugs
(like the UO45 atmospherics thing at the very top) and ensure that these
gateway missions, which tend to be the most neglected part of mapping,
stay bug-free.
This is also helpful in case someone makes a new away mission and wants
to see if stuff's broken. Helps out maptainers a bit because very, very
technically broken mapping will throw up runtimes. Neato.
## Changelog
Nothing that players should be concerned about.
Let me know if there's a better way to approach this, but I really think
that having a super-duper light map with the bare basics to load up
gateway missions and then all nine-ish gateway missions can sequentially
load during init. I can't think of a better way to do it aside from some
really ugly `#ifdef` shit. Also also, it has the added benefit of being
a map that will always load your away mission without touching a single
shred of config (and it's not likely to break if you follow sane
practices such as making your own areas)
## About The Pull Request

continues and closestgstation/tgstation#75708
- adds a generic status readout module that doesn't have a round timer
or round ID display
- the health analyzer's info display can now be toggled via a setting

- adds the generic status readout module to the advanced medical MODs
node

- it has a death sound now yippee (sound and volume are vareditable.
shoutouts to fikou for giving me a sound that was better)
- ninjas still get the one with round timer/ID display
## Why It's Good For The Game
it's a neat little module that tells you things about your spaceman that
you might want to keep track of, like viruses and health and nutritional
status
## Changelog
🆑
add: A really old data disk with the MOD module designs for the status
readout was recovered, and has been haphazardly hotpatched into the
research networks.
add: Also, the status readout module now plays a sound on death.
qol: The MODsuit health analyzer's info tab health readout can now be
disabled in its settings.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
Fixes#76484
Then I noticed some weird stuff which slipped through the PR and poked
at that too.
- Spiderlings and Spiders once more have names ending in (###)
- Removed an unused property on Spiderlings.
- Rewrote the descriptions for a bunch of web-abilities and web-objects
to be clearer and have better capitalisation.
- Refactored the "Web Carcass" ability to not extend from "lay web" as
it didn't need to perform most of that behaviour.
- Also I renamed it and made the description give you a hint about why
you would want to instantly spawn a statue.
- The web effigy now despawns at the same rate as the ability cools down
so you're not dumping spider statues all over the place.
- I made spiderlings move at about the same speed as humans except if
they're on webs in which case they're still pretty fast.
To be honest I am not certain an instant statue spawning button is great
to begin with and I didn't even know it was added to the game but I am
not interested in messing much with the balance for now.
This made me look at spiderlings enough that I'm going to try and make a
new sprite for them that isn't awful.
## Why It's Good For The Game
Lets you differentiate individual spiders a little bit.
Makes usage of abilities clearer.
## Changelog
🆑
balance: Guard spider web statues despawn as the ability comes back off
cooldown.
balance: Spiderlings now only move at light speed if they're on webs,
stay safe little guys.
fix: Spiders once again have random numbers after their names.
/🆑
## About The Pull Request
[Removes the pretense of relative multiz
levels](0293fdc2bd)
Our multiz system does not support having a z level that is only
connected one way, or which goes down backwards or anything like that.
That's a fiction of the trait system, the actual backend has never
really supported this.
This pr removes the assumptions we were making backend around this, and
uses that to save cpu time.
I am also converting multiz_levels from an assoc list to a pure one,
which saves significantly on access times and cleans up the code
somewhat.
Also I'm making the get_below/get_above procs into macros, for the sake
of cpu time.
[Converts the starlight disease to use BYOND's directional defines
instead of our
own](7d698f02d9)
To some extent spurred on by
https://github.com/DaedalusDock/daedalusdock/pull/298, tho it was known
before
## Why It's Good For The Game
Faster multiz code, faster init, etc etc etc
## About The Pull Request
This'll prevent weird "above the max by accident" cases, and also uses
defines instead of hardcoded stuff. This code is often duped, wish we
had a better way of handling it.
Oh also removes a few safety copies before for loops that aren't
actually needed (for x in list copies the list)
## Why It's Good For The Game
Better UX, slightly saner code
## About The Pull Request
I was looking at uniform code and noticed that spacepol jumpsuits didn't
have 10 wound armor like the rest of the security jumpsuits in the file
it's in.
## Why It's Good For The Game
Improving the wound armor of spacepol jumpsuits makes it more consistent
with the other security uniforms and slightly increases spacepol
survivability considering they don't have any medicine.
Fixes https://github.com/tgstation/tgstation/issues/76481
TLDR /mob/living/carbon/human/species subtypes were NOT updating their
bodytypes on spawn due to absurd and wacky carbon bodypart creation code
that meant try_attach_limb() never got called (What the FUCK?)
## About The Pull Request
As with the mining shuttle console, people who can't read can fumble
around on the tram console until they manage to select a station at
random.
You may argue that the menu is largely pictorial anyway, but that's why
it only takes them 5 seconds.
## Why It's Good For The Game
I think the "pressing stuff at random" interaction with the mining
shuttle is cute and I think that being able to utilise the tram map's
central feature in a somewhat aimless way is fun.
## Changelog
🆑
add: People who cannot read can interact with the tram console to send
it to a random station.
/🆑
## About The Pull Request
I noticed that if you let a slime hold the nuclear disk it didn't drop
it upon death.
This turns out to be because `slime/death()` calls `set_stat(DEAD)`
which means that by the time it calls `..()` it fails the "are we dead
already" check.
As the superproc of `death` also calls `set_stat(DEAD)` I just removed
the redundant call from slime, it does not appear that anything in the
superproc was being skipped on purpose.
## Why It's Good For The Game
It fixes a handful of extremely niche bugs which nobody has ever
encountered or reported because they only happen if an admin is fucking
around with components.
Now slimes no longer irretrievably consume the nuke discs or crates upon
death if made into bomb operators or crate carriers, and they can
correctly be made into pinatas.
## Changelog
🆑
fix: A nuclear operative who is a slime will now correctly drop the disk
upon death.
/🆑
## About The Pull Request
I hate looking at spiderlings. Mostly because they're an extremely fast
mob with no directional sprites or animations, so they appear to be a
rapid floating overlay.
I made some new ones. I don't know if they're objectively better but _I_
like them more.
Before:

After:

Unlike the old sprites they also have directional states and movement
animations so you can scurry around really fast without being a static
image (maybe they shouldn't be so fast? A question for another PR).
I spent like 30 minutes looking at GAGs and then realised not only would
the colours be a pain in the ass but it doesn't support movement states
anyway.
Additionally I made the "dead spiderling" item inherit the dead
spiderling icon state from that spiderling instead of always being the
generic one.
Oh also I think a typo made baby tarantulas completely invisible.
## Why It's Good For The Game
I hate looking at spiderlings.
## Changelog
🆑
image: New directional sprites for spiderlings, with movement
animations.
fix: Dead spiderlings will be the same colour as they were when they
were alive.
fix: Tarantula spiderlings are no longer invisible,
/🆑
## About The Pull Request
What this PR does is it adds a small additional feature to the Request
Internet Sound verb to give users who request music an option to credit
themselves for the song request. It will use character name of the
person who submits the request, with the option to be anonymous. The
default will make users anonymous.
## Why It's Good For The Game
This differentiates songs that where requested by users and songs that
admins themselves played. And allows users to give themselves credit for
their 'Good' (or bad) music preferences.
<details>
<summary>Screenshot</summary>

</details>
## Changelog
🆑
qol: Request Internet Sound now has the option to credit the person who
requested the Sound. Defaults to anonymous.
/🆑
## About The Pull Request
Hey there,
#75992 (fc54fd6a60) made me realize just
how wacky the job config system is to people trying to add more new
stuff to it, so I finally got the motivation to fix it up.
The gist is that it does all of the same stuff on the front-end as you
would expect, but instead of having to modify core generation code to
create/recreate the files, it instead uses a robust series of getters
and setters. It's much better to use these getters and setters because
we can apply needed game logic (like ensuring that the age that the
server operator puts in is actually sane, and not completely out of
bounds (if you want to permanently price people out of a position, just
set it to 0)). The getters are also nifty too, because they let me atone
for an early mistake I made with how assistants are meant to work with
"unlimited" nonsense.
All a new coder who wants to add stuff to the config needs to do now is
create the define, create the datum, add the procs for the datums, and
that's it! They don't have to do any of the wacky stuff or account for
weird stuff or do any weird copypasta, it's all handled by the system.
One datum is all you need, quite neat.
This also fixes some issues in #75992 that probably weren't discovered
in testing, but the only good way to fix it was a retune+refactor, which
is included in this PR.
## Why It's Good For The Game
Much more extensible, ensuring this system actually works as fully
intended, etc.
I fixed up the documentation (they didn't regenerate the job config
after they updated the code-side documentation) and some weird spacing
stuff that I missed in my review of that aforementioned PR. Everything
should work as expected, it's been tested quite a bit. It's also in its
own folder now, which is neat because we can share the local defines and
split all this stuff out of the already-quite-large SSjob file.
## Changelog
🆑
server: job_config.toml should now comply with reload-configuration
verb, meaning you can hot-reload the configuration from disk and have it
apply ingame automatically.
config: The documentation for setting Minimum Character Age on a per-Job
basis has been altered to be more explicit.
fix: The Minimum Character Age configuration entry is now sanitized to
ensure that it's within the codebase-defined ages, since there's no
(legitimate) way to get a character outside of those ages anyways.
Invalid values will log to the config log.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
Adds a footstep_override element to the game, that allows object to do
what it reads on the tin.
Only conveyor belts, catwalks and tables use it for now.
## Why It's Good For The Game
Consistency. If you're walking on a table or catwalk, the sound of shoes
trudging on snow or lava shouldn't be played. Tested.
## Changelog
🆑
sound: Walking on conveyors, catwalks and tables no longer plays the
footstep sound of the turf. They have theirs.
/🆑
fixes#76504🆑
fix: abductors can get points again
/🆑
Not really sure what even happened here. istype(something) always
returns true for any instance, so this would always fail
EDIT: #76101 probably mixed up ishuman with istype
Coroners can now purchase the Evil MMI and Brainwashing Surgery Chip.
Chief Engineers can now purchase the Deployable Sentry.
Also I removed a duplicate definition of the noslip modsuit module,
because it was pointless.
## About The Pull Request

I am today's big loser
Fixes https://github.com/tgstation/tgstation/issues/76509 (partly)
This was caused by my goofy ass not using the correct proc for the
VARIABLE movespeed modifier that is the bodypart one.
Additionally slightly changes some bodypart code that bothered me by
using signals even though it was just... not really necessary? And kind
of confusing?
## Why It's Good For The Game
Bugs are bad they make you mad
## Changelog
🆑
fix: Bodyparts that should slow you down, will slow you down.
/🆑
## About The Pull Request
1. Default language holders understand GALCOM on their mind, but speak
it on their atom
0a37898f4d/code/modules/language/language_holder.dm (L39-L43)
2. Living mobs defer to their mind's language holder over their body's
language holder
0a37898f4d/code/modules/mob/living/living_say.dm (L559-L562)
3. Mind get_language_holder, an entirely different proc, makes a default
language holder when it is created
0a37898f4d/code/datums/mind/_mind.dm (L169-L172)
4. Setting species changes your language holder entirely
0a37898f4d/code/datums/dna.dm (L490-L493)
5. When your mind's default language holder is synced with your body's
species language holder's **ATOM LANGUAGES**, it will clear your
languages of all atom languages and then add in all the new ones. You
will notice that mind sourced languages are untouched. This leaves the
understood-via-mind galcom entry from default language holders there,
despite the mob, say, being unable to otherwise understand galcom.
I've fixed this weird chain of events by having mind language holders
default to your current species language holder or current body language
holder.
This is admittedly, kind of a bandaid. **Mind language holder should not
exist**. Mind sourced languages should just be passed around in mind
swaps as you would expect. But that's a larger refactor.
Closes#76330 , but keeps Silverscales as able to understand but not
speak galcom.
I think it's funny if they can hear the peasants but refuse to stoop to
their language no matter what.
## Why It's Good For The Game
People shouldn't able to understand common in some situations
## Changelog
🆑 Melbert
fix: Fixes some species / mobs keeping an understanding of galcom
despite not being intended to.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
## About The Pull Request
After #76018 people reported that you need to do an extra click when you
harvest with plant bag because harvest always dropped on top of
hydrotray instead of going into the bag.
And It looked bad when people just left their harvest on hydrotrays
without picking it up.
I reverted the change that made harvest spawn on top of hydrotrays to
address both issues.
Hydrotrays still protect from germs if the plant was harvested using
telekinesis.
Fixes#76462
Also fixes sloppy mistake in Carpellosis - I was checking whether the
target has mouth instead of owners mouth in the gnashing check.
And it makes patches not become dirty, showing warning message. They
weren't infective anyway.
## Why It's Good For The Game
Fix
## Changelog
🆑
fix: Plant bags now properly harvest items when you click on hydrotray
with it, and don't pick up anything except the harvest
fix: Carpellosis gnashing checks owner's teeth availability instead of
the target's teeth
fix: Patches don't have a message saying that they're dirty
/🆑
## About The Pull Request
Adds Jaywalking as a prisoner crime
Also moved Mass Murder so it's alphabetically ordered.
## Why It's Good For The Game
I was pretty surprised such a serious crime was somehow overlooked.
But more seriously, I feel it fits the tone of this game to have
something a little silly there. Hopefully the warden and sec won't be
too hard on people put away for this crime.
## Changelog
🆑
add: Prisoners can now be jaywalkers
qol: reordered a crime so it appears on the choice list alphabetically.
/🆑
Adds coloured large scarfs and winter coats to ClothesMate
Adds latex gloves to SciDrobe, ChemDrobe, ViroDrobe and GeneDrobe
Adds nitrile gloves to MediDrobe
Adds science headsets to GeneDrobe and RoboDrobe
Adds medical headsets to ViroDrobe and ChemDrobe
Adds black shoes to ChefDrobe
Adds black wizard robes and black wizard hat to MagiVend
Adds grey backpack, grey satchel, leather satchel and grey duffel bag to
CargoDrobe
## Why It's Good For The Game
It makes it so that some job relevant items such as gloves are in drobes
which makes them harder to steal, this will make it less likely that a
latejoin medical doctor will be unable to find and nitrile gloves. The
gloves are added in departments which already have access to them so it
won't result in more people having access to the gloves.
## About The Pull Request
This PR makes two very simple changes. First, requisition forms printed
off by the order consoles in cargo now print with a timestamp on the
name, so that it's a bit easier to differentiate between forms when
there's a bunch of them. Second, crates that come on the cargo shuttle
now have the order ID they are associated with appended to their name.
The req forms:

As well as two crates that would normally be impossible to differentiate


## Why It's Good For The Game
When there are lots of requisition forms laying on the ground and you
need to refer back to one of them (to see who ordered what or something
like that), it can be a pain to find the right one since they all have
the same name. This is even worse if someone has tried to be helpful and
put them all in a folder, since you now have to take them out and look
at each one. Adding the timestamp helps to remedy this.
For the crates, when someone orders something that doesn't come with a
named crate (for example, some medical orders just have the name
"medical crate"), or when multiples of the same things are ordered, it
can be hard to match up the shipping manifest with the crate again,
leading to unwanted fines, especially when people don't return all their
crates at once. Adding the order ID to the name of the crate lets you
easily identify which manifest goes where.
## Changelog
🆑
qol: Crates that come in the cargo shuttle now have the order ID in
their name
qol: Requisition forms are now blue, and named with the timestamp they
were created on
/🆑
---------
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>