## 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
**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
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
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
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 PR does 2 things, firstly it allows u to directly feed animals from
ur hand instead of having to drop it on the floor and relying on their
AI to go eat it. So you can now directly feed ore to raptors or wheat to
cows by simply clicking on them with the item. secondly, it links the
tameable component and the eating element together, as now the former
relies on signals sent by the latter.
## Why It's Good For The Game
Small QOL for pet owners when it comes to feeding their animals.
## Changelog
🆑
qol: u can now directly feed animals from ur hands, like raptors or
cats, by clicking on them with their preferred food.
balance: u can now heal ur raptors mid or post battles by hand feeding
them ores
/🆑
## About The Pull Request
basically #64128 slightly redone (with permission)
gatfruit now shoots peas;
(injects assuming hit zone is unblocked and this assumes you havent
modified the plants reagent genes)
at 0 potency to god knows what potency a single pea (bullet) deals 5
brute and injects 1u of phytotoxins
at 50 potency it fires 10 brute and injects 15u of phytotoxin
at 100 potency it fires 15 brute and injects 30u of phytotoxin
phytotoxin is the Toxin chemical but with no liver damage, it is not
particularly strong but serves to recreate the original PRs 5 tox with
possibility of actually modifying that

upon peeling the fruit its reagents are spread among the revolvers 7
casings
also i attempted to make the revolver look more plant-like but im pretty
sure i screwed up

## Why It's Good For The Game
a bullet of 357 deals 60 brute (not counting falloff (which i dont think
it gets) and armor)
there are 7 bullets of 357 in a revolver so 420 brute in 1 revolver, and
it basically takes 200 brute to kill someone outright if oxygen and
other damage doesnt do it first
at 10 yield (or whatever max yield is i cant really remember) thats 10
revolvers, so 10 x 420 so 4200 in a bag brute per harvest (again 200
brute if you decide to shoot until something dies so you can kill like
21 people if you dont miss in a single yield 10 harvest)
thats pretty busted for something you can achieve fast by making REALLY
easy chems after getting the seeds from exodrones or lavaland
with this change its still a viable weapon but not a supremely lethal
traitor weapon, and also enables some botany gaming if you make it
contain felinid mutation toxin or something
## Changelog
🆑
balance: A mutation in gatfruit seeds has led to a drastic alteration in
the observable traits of the plant, which now fires hardened peas that
deal less damage, but poison the target. Additionally, its poison can
be, with some botanical engineering, replaced with whatever you wish.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
- Fixes#76827
This removes gravity from the following areas:
- Solars
- Nearstation
- Space
- Ordnance bomb testing
##### Note - Asteroid areas (Tram) or planet areas (Ice) are not
affected.
<details>
<summary>Examples of outside gravity turfs</summary>

</details>
Now stepping on floor plating in those areas will result in mobs
drifting. (like they do inside the station when gravity is offline)
Stepping on or near catwalks, lattices, or walls stills controls your
movement. Also refactored a little bit of the `has_gravity` code to use
defines instead of `TRUE/FALSE`.
## Why It's Good For The Game
Consistency. Mag boots are highly recommended when performing EVA.
## Changelog
🆑
fix: Fix gravity for areas in space near station (solars, nearspace,
bomb testing, etc.)
/🆑
<!-- 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
- Material anomaly will now self-delete after 1-4 relocations
- Bioscrambler now has a countdown like all other anomalies
- Increased anomaly lifetime from 99 seconds to 120
- Adds some more detonation effects where there were none (see: I abuse
the circle effect jacq added (again))
## 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. -->
Material anomalies can wreak insane havok throughout the station if it's
not caught quickly. It's a cat and mouse game, which can get kinda
frustrating (flashbacks to trying to get the anomaly but it constantly
teleporting just before I get to it). I don't wanna kill the cat & mouse
game, but putting a limit on it so the entire station doesn't suffer
endlessly to pizza/snow/jungle toilets is a nice middle road.
Bioscramblers are actually beyond frustrating. If someone doesn't
immediately go for them, they'll start locking on and noclipping through
the entire station and mutating every single person for the rest of the
shift. This would probably be less bad if the bioscrambler couldn't give
every single organ (par some blacklisted), causing a lot of irreversible
damage, spontaneous combustions, glitches and creeping rare organs and
limbs into a round "for the lulz". (This doesn't fix the absolute organ
slop that they cause, but reworking bioscramblers not to be shit is for
later.)
I've also given anomalies 20 extra seconds of runtime. Anomalies take 99
seconds, take 30 to announce (for most), giving scientists 69 seconds to
get anomaly catching gear and navigate to the area and defuse it. It's
always felt like just barely too little time, often not getting the
anomaly even when I am beelining. It was usually enough from when we
just had meta, but we got bigger and bigger maps. It also gives them
more time to wreak havoc for chaos lovers.
## 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. -->
🆑
balance: Bioscramblers are no longer immortal
balance: Anomalies give 20 extra seconds to defuse! Or 20 extra seconds
for them to reach havoc...
balance: Material anomalies only teleport 1-4 times before detonating
/🆑
<!-- 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
refer to title
No code changes were made here, i just copypasted code around
The only real difference is that I removed a pretty useless define that
depended on TESTING because it got in my way of splitting emergency.dm
tbh i didnt want a 50k line refactor pr that nobody is going to review
so im getting it out of the way in a separate PR
## Why It's Good For The Game
Shuttle code is literally all over the place please help me oh gosh
## Changelog
Nothing player facing or developer facing (at least I really hope so)
## About The Pull Request
Closes#87423
## Why It's Good For The Game
The sound this produces when AI states laws on a non-common frequency is
highly jarring and shouldn't be spammed every time someone from command
asks AI to state laws (or security uses a tape recorder in the
interrogation room).
## Changelog
🆑
qol: AI laws and tape recorders no longer cause radio blips
/🆑
Closes#88283
Closes https://github.com/tgstation/tgstation/issues/88320
Fixes a harddel caused by the limp status effect not being properly
deleted
Reduces update-body calls in:
- Initialize from 4 to 1
- On z-level change from 2 to 1
- On move with bloody shoes from 1 to 0
Mostly by just passing along the proper argument and removing seemingly
unnecessary update body calls
## About The Pull Request
Not adding a limit on how many you can have attached at once was a
mistake. MODsuits can only attach one tether at a time and they're
*slightly* slower to cut. You still can attach yourself to more than one
anchor manually (or mob via embedding), but this prevents you from being
attached to more than one machine/structure at a time. Tether anchors
now also only support one link at most.
Tethers no longer require you to click on a specific tile and have a
couple of transparent pixels to the side to make them easier to cut in a
hurry.
Closes#88057
## Why It's Good For The Game


## Changelog
🆑
fix: You cannot have more than one MODtether (excluding manual
connections)
qol: Tethers are easier to cut (require less pixelhunting)
/🆑
## About The Pull Request
So, as you might know, megacells made it that etherials gained charge
really slowly. I changed this to be proportional again, but forgot to
make it that said charge decreases the same, leading to an overcharge
lasting 30+ minutes and the toxin damage killing you before said
overcharge wore off.
Also I realized I screwed up a value on the charge gain from booze when
i took one sip of a telepole and instantly spewed lightning everywhere,
so thats been decreased.
## Why It's Good For The Game
Because slowly dying over 30 minutes cause you drank a single sip of
wine is not fun.
## Changelog
🆑
fix: Etherials no longer lose overcharge really slowly.
fix: Etherial Wine/Telepole no longer overcharges etherials with one
sip.
/🆑
## About The Pull Request
Last night I was experimenting with hooking up different chemicals to a
shower and discovered that blood didn't really do anything other than
have red mist and particles. Your characters clothes were still cleaned.
The mood boost was still happy. So I reworked it a bit.
Blood now:
- Gives a negative mood, disgust, and status effect when showering with
it (unless you are morbid, evil, or undead, then it's considered
positive)
- Has an icon alert for bloody showers
- Covers a mob's clothing with blood when showering (or any objects on
the tile)
- Tossing or spraying a container full of blood now covers objects/mobs
in blood
- The revenant defile spell now affects showers by removing all water
recyclers and reagents that gets replaced with blood
Showers now:
- Require 70% of water to clean and get mood/status effects
- Require 70% of blood to get mood/status effects
- Require 20% of radioactive reagents to stop radiation removal effects
So it's possible to have a clean water shower that is secretly
radioactive. Since radioactive reagents do nothing on `TOUCH`, all this
achieves is preventing the water from washing off the radiation.
I did have to refactor some of the reagent code to support method types
for objects since I was experiencing hazmat issues when I was testing.
Whenever I would inject blood from a syringe into a beaker, it would
cover the beaker in blood on the outside. This would have been extremely
hazardous for viruses. So I needed to make sure we are only applying it
to the methods for `VAPOR|TOUCH`
Also improved the mood typecasting for owner to allow checking of mob
biotypes. (so we can check `UNDEAD` for mood)
## Why It's Good For The Game
Blood effects and interactions are now more consistent. The code for
objects is refactored to support method interactions with reagents.
Evil/Morbid people now get some unique interactions that fit their
theme. Last we get a cool new ability to let revenant's make their
defiled areas something out of a horror movie.
## Changelog
🆑
add: The revenant defile spell now affects showers by removing all water
recyclers and reagents that gets replaced with blood.
add: Showering in clean water (+70%) results in positive
mood/regen/stamina effects. It will wash off the mob.
add: Showering in dirty water results in negative mood effects and
disgust. It will NOT wash off the mob.
add: Showering with radioactive reagents (+20%) results in the
preventing the shower from washing off the radiation.
add: Showering in blood (+70%) results in severe negative mood effects
and disgust. (unless you are morbid, evil, or undead then it's
considered positive) It will cover the mob in blood.
add: Water effects that interact with a mob from touch or vapor
(showering/spray bottles/etc.) will now heal sleep, unconsciousness,
confusion, drowsiness, jitters, dizziness, and drunkenness.
fix: Fix bloody showers not covering objects in blood.
fix: Tossing or spraying a container full of blood now covers
objects/mobs in blood
fix: Fix wrong status effect for watery tile
image: Add new alert icons for bloody/dirty showers
code: Refactored some expose_obj reagent code to support method types.
code: Improved mood typecasting for owner to allow checking of mob
biotypes.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Aquarium kits can now be printed from service, cargo, science
protolathes and the autolathe too, from half a sheet of metal. You still
need the other materials to set it up but it should be fairy simple if
you can access a proto/autolathe.
The 'Growth/Reproduction' setting for aquariums has been renamed to
"Safe Mode", which, on top of disabling features such as growth,
reproduction, evolution, power generation etc etc, will also disable the
water, temperature and food requirements for keeping the fish alive.
Useful if you want a purely ornamental aquarium or you have to skidaddle
somewhere else for a while.
The lawyer, as well as prefilled aquariums start with 'Safe Mode'
enabled.
The 'Aggressive' fish trait has been replaced with 'Territorial', which
is exactly the same but the fish won't lash out unless the aquarium is
populated by five fishes or more. No more angelfish viciously attacking
the guppy and goldfish in prefilled aquariums.
Tweaked a couple values around hunger and fish health loss when starving
or in a bad environment to cause slightly less damage.
Lastly, added screentips to the aquarium component, which is something
I've forgot to do in the PR that brought it.
## Why It's Good For The Game
Aquariums may be a complex feature, but as far as I can tell, I had been
neglecting the possibility of aquariums as simple room decoration for a
while (outside of the beauty-related mechanics), and the constant
maintenance (and perhaps a bit of knowhow) they require makes them awful
at that. Also, the "growth/reproduction" setting really didn't have a
reason to be before, since it didn't offer any tangible benifit to turn
it off, so I had to revamped it.
Also it's been proven by now that keeping aquariums as cargo-orderable
stuff is just bad.
As for the fish trait change, it just sucks to see the angelfish shank
the goldfish with no way to solve it other than removing the
hyper-aggressive killer fish from san diego fella.
## Changelog
🆑
balance: Aquarium kits can now be printed from cargo, service, science
protolathes as well as the autolathe. They no longer have to be ordered
from cargo.
balance: Revamped the "Growth/Reproduction" setting for aquarium to
"Safe Mode", which also disables the food, temperature and water
requiremenets of aquariums, making it useful for purely decorative
aquariums.
balance: Replaced the "Aggressive" fish trait with "Territorial". No
more angelfish shanking the goldfish and guppy in prefilled aquariums
with less than 5 fishes.
qol: Added screentips to aquariums.
/🆑
## About The Pull Request
Fixes a lot of status effects having the default alert, adds a unit test
to check that status effects don't forget to change it
I chose a test rather than just making the default "no alert" because I
think people making status effects should think about whether it should
have an alert
Also I added a test for effects which did not set an ID because that's
kind of important, I applied the same mindset here to account for
abstract types but admittedly less sold on this one.
## Changelog
🆑 Melbert
fix: You should be afflicted by the "Curse of Mundanity" far, far less
/🆑
## About The Pull Request
Detemination gives you TRAIT_ANALGESIA, so if you take ***too much***
damage you'll be unable to see it as well. Plus linking blunt overlay
hiding to reagents isn't very good practice as it can cause flickering
if you microdose.
(Also fixed incorrect trait sources on the quirk and kept it for the
nocrit deathmatch modifier)
Closes#88278
## Changelog
🆑
fix: Fixed damage overlays hiding themselves or flickering when you get
wounded.
/🆑
## About The Pull Request
You can now fish from aquariums if you wish to. This includes some
backend changes to make it possible for the fish table from
get_fish_table() to contain instances, and all that it entails up to
spawn_reward(), which is a requirement for the gimmick to respect the
various traits and other variables of the already instantiated fish
rather than read from cached properties.
## Why It's Good For The Game
The fish progress score/index had only little nasty flaw that has been
nagging me since day one: Not all fish species can be caught. Skipping
McGill, which is a peculiar case that for cheevo purposes should be
considered a standard goldfish, there is the one, unsignificant yet rare
purple sludgefish which can only be gotten as a rare evolution of the
generic sludgefish. Talk about petty, but this may be a long-term nit I
prefer to handle right now.
Also why not? The 'unmarine mastodon' is near impossible to get unless
you somehow find a oil well which is locked behind a specific ruin.
## Changelog
🆑
fix: Aquariums are now potential fishing spots.
/🆑
## About The Pull Request
You can now wear a hat on any modsuit, even w/o the stabilizing module.
However:
- It will always sit slightly askew, at an angle.
- Involuntarily falling to the ground for any reason will cause the hat
to fall to the ground.
- Being thrown, slapped, or slipped will send it flying off.
Added the Atrocinator, Hat Stabilizer, and Tanning modules to the black
market.
Added the loose hat component to bio/bomb/rad hoods and space helmets.
## Why It's Good For The Game
> You can now wear a hat on any modsuit, even w/o the stabilizing
module.
I think the notion of, say, the Head of Security putting his cap on his
modsuit and then being slipped by the clown, who then steals the cap, is
really funny.
https://github.com/user-attachments/assets/3ad8a74d-0cb8-4118-8beb-d2ce9c76b358
The module is fairly rare and sometimes I just want to wear a silly hat
alongside the modsuit without badgering the captain for his hat module.
The downsides are rather plentiful so it's not like the hat module is
made irrelevant - if anything it makes it more notable.
This will add a bunch of enjoyable silliness to rounds, so I think it's
worth it.
> Added the Atrocinator, Hat Stabilizer, and Tanning modules to the
black market.
> Added the loose hat component to bio/bomb/rad hoods and space helmets.
It sucks losing your iconic drip when you need to venture out to space
for whichever reason - this lets you keep it without taking up space in
your bag, while having the throw downside.
They just feel perfect for the vibes of the black market. More
miscellaneous completely useless fancy stuff that has exorbitant prices
please!
## 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. -->
🆑
add: You can now wear a hat on any modsuit, even w/o the stabilizing
module. But it may easily fall off...
add: Added the Atrocinator, Hat Stabilizer, and Tanning modules to the
black market.
add: Added the loose hat component to bio/bomb/rad hoods and space
helmets.
/🆑
~~I'm having a bit of an issue. Somewhere I fugged up and now the worn
overlay on the mod helmet sprite doesn't work properly...~~ Turns out
that code was never used and nonfunctional to begin with so I removed it
entirely yay
## About The Pull Request
Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed
somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire
sharks.
Aquatic mobs can be hooked by fishing rods, even without a jawed fishing
hook installed.
The carp and fish infusion sets now give the infusee the aquatic
biotype. Added support for infusions adding a biotype.
You can check for a fish's pulse with a stethoscope, which will tell you
its status even without fishing skill.
Refined fish health status checks to be more precise.
Added 'Fishy' Reagent, a version of strange reagent that only works for
fish or aquatic biotype mobs. It's made with omnizine, saltwater, and
carpotoxin or tetrodotoxin.
Added a lifish chemical reaction that creates fish.
## Why It's Good For The Game
Fish content fish content fish content
> Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed
somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire
sharks.
We were really missing this one by now.
> Aquatic mobs can be hooked by fishing rods, even without a jawed
fishing hook installed.
> The carp and fish infusion sets now give the infusee the aquatic
biotype. Added support for infusions adding a biotype.
I want to reel in fish people. This is going to be hilarious.
> You can check for a fish's pulse with a stethoscope, which will tell
you its status even without fishing skill.
Fish doctor content - also lets you see the exact status of a fish's
health even if you haven't interacted w/ fishing that shift.
> Added 'Fishy' Reagent, a version of strange reagent that only works
for fish or aquatic biotype mobs. It's made with omnizine, saltwater,
and carpotoxin or tetrodotoxin.
A somewhat easier to get version of strange reagent, purely for fish, as
they die very easily and the road to making SR is a large diversion. I
might add this to cargo, maybe?
> Added a lifish chemical reaction that creates fish.
Fish. fish fish fish fish fish.
@Ghommie
## Changelog
🆑
add: Adds a new biotype, MOB_AQUATIC, indicating the mob is water-themed
somehow. Given to carp, lobstrosities, frogs, axolotls, penguins, fire
sharks.
add: Aquatic mobs can be hooked by fishing rods, even without a jawed
fishing hook installed.
add: The carp and fish infusion sets now give the infusee the aquatic
biotype. Added support for infusions adding a biotype.
add: You can check for a fish's pulse with a stethoscope, which will
tell you its status even without fishing skill.
qol: Refined fish health status checks to be more precise.
add: Added 'Fishy' Reagent, a version of strange reagent that only works
for fish or aquatic biotype mobs. It's made with omnizine, saltwater,
and carpotoxin or tetrodotoxin.
add: Added a lifish chemical reaction that creates fish.
/🆑
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
A new item for 2 TC has been added to the chef's traitor uplink –
Molt'Obeso sauce!
Buying it, you get a bottle for 50 units, filled with this sauce. After
eating Molt'Obese, you'll think you're still hungry. It also removes the
limit on how much food you can eat, so you can just keep going and
going, but you never get full. Plus, Molt'Obeso helps your body absorb
more nutrients from food, so the food is even more nourishing with it.
## Why It's Good For The Game
The Syndicate sabotages the NT station by making everyone fat?
## Changelog
🆑
add: Add a new item to the chef traitor's uplink: Molt'Obeso sauce. A
sauce that makes people want to eat too much.
/🆑
## About The Pull Request
this fixes some few sentient repairbot-related issues that were reported
a few days ago. ive also given sentient repairbots a new simple UI to
manage their materials.

while I was at it, i also fixed bots continuously trying to path to
unreachable beacons, which can be quite costly since they're regularly
very far away.
## Why It's Good For The Game
closes#88067
## Changelog
🆑
fix: repairbots no longer get flashed by their own welder
fix: repairbots no longer break glass tables they step on
fix: repairbots can no longer flush their own welders
fix: fixes some runtimes when emagged repairbots try to deconstruct
things
fix: fixes sentient repairbots not being able to see or remove their
material counts
/🆑
## About The Pull Request
`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage
## Changelog
🆑 Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/🆑
## About The Pull Request
after my PR removing most self-registering attack signals, raptors would
sometimes break their troughs after interacting with it, this fixes
that. Also, removes the troublesome trait from raptors. raptors with
this trait would go out and harm other raptors everyonce in a while, but
ive discovered that this can be annoying to deal with when you have many
of them, so ive removed it and im going to replace it with something
less annoying in the future. Also you can now give your raptors pet
collars, effectively allowing u to rename them
## Why It's Good For The Game
fixes raptors breaking their trough and provides some QOL to raptor
ranching
## Changelog
🆑
fix: raptors no longer break their trough upon interacting with it
balance: removed the troublesome trait from raptors, they now wont go
out to attack their colleagues.
add: you can now give pet collars to ur raptors to rename them
/🆑
## About The Pull Request
Lil cleanup/tweak I couldn't do in the main PR because it conflicted
before and i forgot after. Yes this works with overrides that don't have
the arg, yes I tested it.
## Why It's Good For The Game
Don't run armor code thrice please thank you
## Changelog
🆑
code: Projectile impacts no longer fetch mobs' armor values thrice
/🆑
## About The Pull Request
Closes#87981
Also respects silent footsteps and lagswitch now
## Changelog
🆑
fix: Fixed atrocinator module footstep spam when you're moving on a tram
/🆑
## About The Pull Request
~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.
### Key changes:
* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.
<details>
<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>
Before:
https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e
After:
https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915
</details>
<details>
<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>
Before:
https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348
After:
https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238
</details>
### But how will this affect the ~~trout population~~ gameplay?
Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.
This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.
Closes#71822Closes#78547Closes#78871Closes#83901Closes#87802Closes#88073
## Why It's Good For The Game
Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.
Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.
## Changelog
🆑
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/🆑
<!-- 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! --> the text displayed when this quirk's gained would
include the skillchip's typepath rather than its name. this fixes that.
also fixes an issue with how the callback timer was being handled, which
would lead to a runtime whenever the quirk was removed (since addtimer
returns the id and not the callback itself). also fixes the scratch
effect never actually working because an organ slot was being provided
to `get_organ_by_type` rather than the type. also fixes the itchy effect
not going away after the skillchip is removed (it gets added again if
the skillchip is reimplanted).
## 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. --> fixes a few
issues with the chipped quirk
## 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. -->
🆑
fix: fixes the chipped quirk displaying the skill chip's typepath rather
than its name
fix: fixes chipped quirk's itchy effect not working
fix: the chipped quirk's itchy effect now goes away when the skillchip
is removed
/🆑
<!-- 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: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
* A generic /mob/eye/camera type has been made, containing everything
needed to interface with a cameranet
* /mob/eye/ai_eye has been refactored into a generic /mob/eye/camera
instance
* Advanced cameras no longer inherit from AI eyes, splitting off
behaviour
* Camera code has been somewhat cleaned up
* Probably some more stuff I'm forgetting right now
## Big man Southport:

## Changelog
🆑
code: made /proc/getviewsize() pure
refactor: mob/eye/ai_eye has been restructured, now inheriting from a
generic mob/eye/camera type
refactor: advanced cameras and their subtypes are now
mob/eye/camera/remote subtypes
code: the cameranet no longer expects the user to be an AI eye
code: remote camera eyes have had their initialization streamlined
code: remote cameras handle assigning and unassigning users by
themselves now
code: remote cameras now use weakrefs instead of hard referencing owners
and origins
code: also the sentient disease is_define was removed (we don't have
those anymore)
fix: AI eyes no longer assign real names to themselves, fixing their
orbit name
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
this is a partial rewrite of monkey's attacking behavior
## Why It's Good For The Game
closes#87893
## Changelog
🆑
fix: fixes monkey AI not being able to attack
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
This allows you to use a fishing rod during the "manipulate organs" step
of the aforementioned surgery to snatch organs from a target.
Unlike other fish sources, this one has a negative fishing difficulty of
-20, which when summed with the default minigame difficulty should still
result in a negative difficulty. In layman terms, this means the
minigame is skipped here (unless you're wearing some clunky stuff like
insulated or boxing gloves). It also has a wait time of 8 to 13 seconds
versus the more random standard 3 to 25 seconds.
A small side-effect of this is that explosions during the "manipulate
organs" step will basically disembowel you, but it kinda fits anyway.
By the by, because of this, there is a tiny chance bluespace fishing
rods can yield you random organs. Worry not, they're newly generated, so
you won't be snatching it from another player by accident (at least for
now).
## Why It's Good For The Game
It adds more possible weird and rare shenanigans involving surgery.
## Changelog
🆑
Add: You can use a fishing rod to snatch organs during organ
manipulation surgery
/🆑
## About The Pull Request
I've been meaning to do this for some time. I need this for
portable/handheld aquariums/fishtanks to be possible. I'll sprite and
code them before I call this PR ready, however suggestions and code
reviews are welcome in the meantime.
Being a pretty heavy refactor, some things might break (we have more
than a few unit tests so perhaps not) while others, coincidentally,
might be fixed without me knowing. Anyway I'm sure this PR fixes
aquarium beauty, which wasn't really working to begin with because the
code was so fucking bad. Nothing really worth of a CL entry tho.
TODO:
- [x] handheld aquariums, craftable with a kit and little plastic or
buyable from the fun vendor ig.
- [x] an aquarium upgrade for handheld aquariums to bypass possible
restrictions.
- [x] update the beauty element to consider items, which shouldn't
contribute to the area beauty when held or otherwise not on a turf.
## Why It's Good For The Game
This should make handheld aquariums possible.
## Changelog
🆑
refactor: refactored aquariums heavily. Please report any fishy bug.
add: Added portable/handheld fish tanks to the game. They can be crafted
with an aquarium kit and 5 sheets of plastic. While portable, they
cannot store fish that are too big or if there're too many already. This
restriction can be removed by using the new "bluespace fish tank kit"
techweb item.
map: Replaced the lawyer's stationary pet aquarium with a fish tank, so
you can carry McGill around.
balance: Reduced the iron cost of stationary aquariums a little.
/🆑
## About The Pull Request
Atomizing changes from an upcoming PR. Basically the immerse element
didn't work for things on the floor plane ever since the TOPDOWN_LAYER
was introduced to the code (eg disposal pipes don't appear underwater),
and the type checks for atmos pipe caps are deprecated by the
underfloor_accessibility var.
## Why It's Good For The Game
Fixing a couple visual nits.
## Changelog
🆑
fix: Fixed a couple nits with the water visuals not appearing on objects
with a very low layer (rendered just above the floor), as well as atmos
pipes looking a bit funky on untiled turfs beside catwalks and platings
when beside connected, under-floored pipes.
/🆑
## About The Pull Request
adds repairbots to the game!

this pr serves as a massive rework and buff to floorbots. i was a bit
sad that they dont get built much anymore so ive given them tons of more
utilities and uses.
Repairbots still inherit to place tiles and repair breaches. but they
can now rebuild walls, rebuild windows and repair structure and
machinery. Also Ive given them voicelines to add more character to them.
In short, they are very depressed with their job (however they express
their happy go lucky attitude when u emag them where they will start
deconstructing the station)
to demonstrate capabilities, here's a slightly sped up clip of some
repairbots patching up an area that was maxcapped 4 times:
https://github.com/user-attachments/assets/bddac3b0-1984-4571-85d3-c5283dd7c0de
When repairbots feel threatened, they will retract into their little
toolbox which u can pick up and hold in ur hand, either to conveniently
carry and plop them down at breached sites, or to bash skull with it
U can build them using a toolbox, proximity sensor, cyborg arm and a
conveyor belt
## Why It's Good For The Game
refactors floorbots and makes them alot more useful tools for engineers
to use
## Changelog
🆑
refactor: floorbots have been refactored, please report any bugs
add: adds repairbots to the game!
/🆑
## About The Pull Request
1. Having a broken arm will affect your accuracy when firing a weapon
with that arm, even potentially causing damage to you if it's a weapon
with recoil. This effect is not applied under the effects of a
painkiller.
2. The sister effect of this (punching someone with a broken arm) now
also has an interact with painkillers (it can no longer block your
attack).
3. Being drunk heavily affects ranged weapon accuracy, unless you're the
bartender
4. A lot of hand handling cleanup, using new macros to make it a lot
more readable at a glance
## Why It's Good For The Game
We have this system for modifying firearm accuracy but we don't really
use it commonly, and I feel like it slots in well with a lot of places
For broken arms, it adds some more depth to the wound system, in the
same way that trying to punch someone with a broken arm causes pain. (I
actually want to expand this to melee weapon accuracy and attacking with
melee weapons in general, but that's for a later time)
For drunkenness, it just adds to the drunk shenanigans. It also slightly
reduces the effectiveness of drinks as combat healing chemicals, such as
quadsec - makes it a bit more of a trade off.
## Changelog
🆑 Melbert
balance: Having a broken arm affects your accuracy with ranged weapons
fired with that arm. Utilizing a painkiller will nullify this effect,
however.
balance: Painkillers will prevent your punches from being cancelled due
to having a broken arm. You'll still take damage, though.
balance: Being drunk now affects your accuracy with ranged weapon. The
bartender is immune to this effect via their skillchip.
code: A lot of code involving left and right hand handling has been
cleaned up, easier to read. Report any oddities, like left and rights
being flipped
/🆑
## About The Pull Request
https://github.com/user-attachments/assets/3e07530e-c8f1-4c21-b59b-b814831fdb2d
## Why It's Good For The Game
The aforementioned escape menu felt lacking on the sound side so with
the assistance of @Sadboysuss I've added these,
they also sound pretty neat.
## Changelog
🆑
sound: Added sounds for the escape menu opening/closing/being open
/🆑
## About The Pull Request
Changes the color of hallucination cores from red (?) to hot pink.
Adds the Perceptomatrix Helm, a hallucination anomaly core item.

This helmet shields the user's brain from all external stimuli while
creating a 1:1 replica of it, beamed straight into their mind. What this
means in practice is that the user's perception is hypercharged and
their brain shielded from psychic phenomena.
The sprite is a resprited marine helmet. It's mid and I don't like it
but I'm not a spriter.
List of effects:
Perception:
- Flash/Weld Immunity
- True Night Vision
- Blindness and blurriness immunity
- Expanded FOV
Brain Shielding:
- Perceptual Trauma Immunity
- Hallucination Immunity
Psyshield:
- Conversion and Mindswap Immunity
- Magical Mind Resistance (Much more limited than normal resistance)
- Technically counts as casting clothes
Additionally, you can an ability to invoke hallucinations on others on a
25-second cooldown.

## Why It's Good For The Game
I'm kinda tired of half the anomaly cores in the game having jack and
shit going for them. I also think there's a moderate lack of psychic
content in the game, so here we go.
### Yeah this is cool but like isn't it kinda fucking nuts? Holy shit
dude
Let's dissect this.
> Perception:
> - Flash/Weld Immunity
> - True Night Vision
> - Blindness and blurriness immunity
> - Expanded FOV
This part effectively amounts to nothing but night vision sunglasses.
> Brain Shielding:
> - Perceptual Trauma Immunity
> - Hallucination Immunity
This isn't all that impactful, either. Hallucination immunity is
immensely irrelevant. Perceptual trauma immunity, which means you ignore
effects like blindness or imaginary friends, is very, very niche.
> Psyshield:
> - Conversion and Mindswap Immunity
> - Magical Mind Resistance (Much more limited than normal resistance)
> - Technically counts as casting clothes
Basically just having a mindshield, and that only if you don't get it
taken off anyways. Mindswap immunity could be nice, that's really not
something you can even get otherwise.
Magical mind resistance isn't very good. It blocks mind reading,
nullblade sneak attacks, eye of god, many forms of telepathy, psyker
magic, the curse of madness, the curse of babel, and that's about it.
It's nice, but it won't stop a fireball.
A lot of this can in the end be duplicated with sunglasses &
oculine/mesons and welding protection, and a tinfoil hat, which is
partly why I added the ability. It staggers for a small duration and
causes hallucinations, and it's pretty fun to use, despite its effects
being rather understated.
## About The Pull Request
This adds plenty of useful stuff regarding byond-tracy, altho mostly
focused on the [Paradise
fork](https://github.com/ParadiseSS13/byond-tracy).
- Adds two new config options **(THEY ARE DISABLED BY DEFAULT)**
- `ALLOW_TRACY_START` gives admins with +DEBUG the "Run Tracy Now" verb,
which will allow them to start profiling with byond-tracy mid-round.
- `ALLOW_TRACY_QUEUE` gives admins with +DEBUG the "Toggle Tracy Next
Round" verb, which will initialize byond-tracy during world init the
next round (in the same way as passing `-params tracy` or defining
`USE_BYOND_TRACY`)
- If byond-tracy fails to initialize, the error will be logged and
available to view for the whole round.
- If `MC_TAB_TRACY_INFO` is defined, information about byond-tracy now
appears in the MC tab - if it's running or not, if it errored (and what
the error is), why it's running, if its queued for next round, etc.
- byond-tracy is now properly shut down when the world shuts
down/reboots, minimizing the risk of data loss or crashing
- More info regarding byond-tracy init is sent to `world.log`
## Why It's Good For The Game
Profiling is super helpful, and this should make things quite easier
## Changelog
No user-facing changes
## About The Pull Request
Vampires have stomachs and lungs.
They still don't have hunger.
Vampires are a human subtype.
Vamp bloodtype from "U"nknown to "V"ampire
## Why It's Good For The Game
For some stupid reason vampires lacked stomachs. Vampires drinking wine
is a classic trope that currently results in vomit magically appearing
below you.
Evidence of wine:

Vampires are a human subtype too like felinids because this resulted in
dumb bugs like no screaming sound.
Vamp bloodtype from "U"nknown to "V"ampire
I mean if we haev these guys on halloween. We probably know their blood
right.
## Changelog
🆑
fix: vampires are a human subtype & have stomachs/lungs
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>