## About The Pull Request
Fixes#89199
Loop was checking if `teleport_location` was a valid teleport
destination, however at time of dangerous teleport loop that value
contains a string, we only set it after the loop. We check the iterated
turf instead.
## Changelog
🆑
fix: You can once again teleport dangerously with the hand teleporter
/🆑
## About The Pull Request
Fixes#89007
The conditionals were messed up - Burn wound sanitation / flesh healing
heals the wound over time so it's not like these would reasonably drop
to zero while meshing them.
## Changelog
🆑 Melbert
fix: Regen meshes stop when they've done all they can again
/🆑
## About The Pull Request
Nothing super crazy here, I've added a new goodie item (For **75
credits** as a private purchase), a smaller variant of the pet carrier
that is pre-loaded with a single mouse already. So that should be good
to g-
Okay so, it turns out that pet carriers have some open issues, such as
that pet carriers at base were made to be GAGS, but subtypes of pet
carriers as a result can generate empty icon_states due to not all
following the new GAGS template.
And as a result the exodrone loot carrier was also broken, so we added
some new states to make that work.
And then I updated a bunch of comments within the pet carrier file
because they needed auto-docs.
And then I added contextual screentips, because we're living in 2025
now, and I love me some useful screentips since I had no gosh darn idea
how to use pet carriers in the first place!

## Why It's Good For The Game
Overall, a nice code cleanup for pet carriers. Screentips aid
readability for use in-game, comments improve maintainability, and we
resolved a niche bug on a reward item.
As for why adding mice to the goodies menu is useful, there are multiple
ways to use mice in-game, including breeding more mice, regal rat
farming, cytology, cooking ingredients, etc. At a certain population,
it's very easy to actually run *out* of mice through chewing on wires or
similar, and this is a simple addition to prevent that. Plus, economy
content.
## Changelog
🆑
add: You can now purchase pet mice as a cargo goodie.
qol: Pet carriers now have contextual screentips.
fix: The biopod pet carrier now doesn't randomly turn invisible.
/🆑
## About The Pull Request
Closes#88618
Head IDs now keep the large pointer effect when slotted into a PDA or
displayed as the front ID in a wallet
## Changelog
🆑
fix: Head IDs now keep the large pointer effect when slotted into a PDA
or displayed as the front ID in a wallet
/🆑
## About The Pull Request
Set the minimum flight distance to 3 tiles for objects hit by baseball
bat parry,
so instead of the boulder being sucked into wielder when the baseball
bat hits it, it now bounces back a little.
## Why It's Good For The Game
Closes https://github.com/tgstation/tgstation/issues/87877
## Changelog
🆑
fix: objects with throw_range 0 now properly parried with baseball bats
/🆑
## About The Pull Request
This PR is literally just
https://github.com/tgstation/tgstation/pull/87754 so you should probably
go read the contents of that PR to learn more.
### Sorry, No Stunsword in this PR.
Stunbaton inhand tips change color as the cell it has inside increases
in capacity. They also have different animations based on the cell, to
make it clearer which one you are looking at.

## Why It's Good For The Game
So, two things;
A) The test showed that there is more work to be done, but that this was
actually improving survivability to some degree against batons when
properly geared, while not necessarily impacting the average tider
arrest attempts. It didn't solve the issue of alleviating the need for
anti-baton knockdown tools, but it did help a bit. Enough that I think
this could be worked on further as a foundation for solving that
problem.
B) People have been asking me to, or have made it obvious that they
would like to see this actually merged into the game. So uh...here is
that PR if any maints care for it.
I think there is still more to do for testing and possible changes to
address the issues I was trying to investigate in the test. However, I
actually think this change could be an important step towards
accomplishing some of those changes. It isn't quite enough to start
pulling out baton resistance from various sources just yet, but it is a
start.
## Changelog
🆑
balance: Batons now respect the armor worn by targets. Analog batons
respect MELEE armor. Cell-type batons respect ENERGY armor.
balance: Various batons have differing amounts of armour penetration
based on what type of baton it is.
balance: Heads of staff have color graded batons to denote penetration
power. Bronze (Quartermaster), Silver (Chief Engineer, Chief Medical
Officer, Head of Personnel, Research Director), Gold (Captain).
Contractor batons are equivalent to Gold.
balance: Cell-type batons gain armor penetration based on their cell's
quality. The better it is, the more it penetrates.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
## About The Pull Request
This implements a new, minor, but flavorful system to IDs -- Honorifics.
Does going by your full name not suit you? Do you demand respect for the
position on Space Station 13 that you've earned and want to be addressed
by your title? Do you take yourself WAY too seriously? This is for you.
Toggled by ctrl-clicking your ID, honorifics append a title to your name
depending on your position. Certain titles (Captain, Officer, Doctor,
etc.) will only append to the start (replacing or including the
first/last name), while others (PhD., Esq.) can only be appended at the
end.

Each job TRIM has a set honorific and positions it can be assigned to. A
doctor can be "Doctor Peterson" or "Doctor Peterson Bungle" or "Doctor
Bungle". A Lawyer can only choose to be "Peterson Bungle, Esq.".
This will only occur when the speaker's voice is the same identity as
the one written on the ID's registered name. This should not interfere
with Unknown voice obfuscation, stolen ID shenanigans, or anything
gameplay-oriented. Hopefully.
This feature is also mononym friendly!

This also makes `first_name()` and `last_name()` global procs, and adds
one to check if a passed string has spaces/dashes/whitespace/whatever.
All of this is compatible with ID name changes, but the voice name must
align with the card name to display the honorific. If you are "Peter
Stinkypants" with your honorific set to display "Doctor Stinkypants",
and your ID's registered name is changed to "Peter Stinker", you show up
as "Peter Stinkypants (as Peter Stinker)" with no honorific provided. If
you become "Peter Stinker" and have a "Peter Stinker" ID, you will show
up as "Doctor Stinker" once again.
That all make sense? Great.
<details>
<summary>So about the ID name stuff...</summary>
<br>
So, when you activate an honorific on your ID, it DOES change the actual
object's name. Not the registered name, but the ID's name will go from
"Peter Dawson's ID card" to "Captain Dawson's ID card" when an honorific
is applied. This, as far as I've tested, does not mess with anything
important, but I can totally see it doing so in a way that makes
ctrl-Fing through logs harder than it needs to be. This could probably
be changed without too much effort so if the issue does arise I can fix
it. If not I am totally fine with reverting this PR until I can make it
work (if I can at all).
<br>
Admittedly this doesn't have much testing with holopads/radios, but I'm
confident the message composure is handled well enough to only display
the right names under the right circumstances. If this fucks up logging
or naming in any way tell me ASAP because I have a sinking feeling it
will in a way more catastrophic than I could ever predict. This PR has
been tested thoroughly but I have my limits.
</details>
## About The Pull Request
This PR adds several circuit features, and changes several
assembly-related features to make them a bit more logical in how they
work. Included are the following changes/additions:
- Assemblies and wires have been refactored with vars that describe
their behavior:
- Assemblies have an `assembly_behavior` bitflag instead of a
`attachable` var. This var has 3 flags:
- `ASSEMBLY_INPUT`: The assembly is able to pulse the wire it is
attached to.
- `ASSEMBLY_TOGGLE_ARMED`: On activation, the assembly toggles whether
it can pulse the wire it is attached to.
- `ASSEMBLY_FUNCTIONAL_OUTPUT`: On activation, the assembly does
something other than just toggling whether it's armed.
- Wires have a `wires_behavior` bitflag with 3 flags:
- `WIRES_INPUT`: The object the wires are attached to does something
when the wires are pulsed.
- `WIRES_TOGGLE_ARMED`: The object the wires are attached to can
activate assemblies attached to those wires, and is fine if all that
activating that assembly does is toggle whether it's armed.
- `WIRES_FUNCTIONAL_OUTPUT`: The object the wires are attached to
expects that assemblies attached to its wires do something other than
toggling themselves when activated.
- Buttons can only accept assemblies with `ASSEMBLY_FUNCTIONAL_OUTPUT`.
- Pressure plates can now accept any assembly with
`ASSEMBLY_FUNCTIONAL_OUTPUT`, not just signalers. Assembly shells
attached to pressure plates will draw power from the powernet if the
pressure plate is under a tile.
- Adds a new circuit component - the wire bundle.
- This component gives the circuit a number of wires corresponding to
the size of the shell.
- Each wire has a corresponding port on the component that can pulse,
and receive pulses from, that wire.
- A circuit can only have one wire bundle component.
- Assembly shells cannot be attached to these wires, and no wires will
be created if the component is added to an assembly shell.
- Available with roundstart tech.
- Adds two new shells.
- The wallmounted shell is a large shell that can be hung on walls, and
uses power from the area it's placed in.
- Frame icon:

- Constructed icon:

- The undertile shell is a small shell that only works when fit under a
floor tile, but uses power from the area it's placed in.

- Both shells support usb cables.
- The above shells are available with the Advanced Shells techweb node.
## Why It's Good For The Game
The wire bundle component complements the functionality of the assembly
shell by allowing circuits to use assemblies directly in their logic.
The wallmounted and undertile shells provide ways of placing circuits
that don't necessarily take up space for machines. The undertile shell
is particularly useful for relaying usb component data over wirenets.
Pressure plates being able to accept assemblies other than signalers
expands their uses significantly.
## Changelog
🆑
refactor: Wires and assemblies have been refactored to have
directionality to them. This mostly makes it so that assemblies can only
be attached to wires it would make sense for them to be attached to.
qol: Pressure plates can now also accept igniters, condensers, flashes,
assembly shells, and door controllers.
add: Undertile circuit shells. They only work when placed under floor
tiles, but support USB cables and use APC power instead of cell power.
add: Wallmounted circuit shells. Large shells that support USB cables
and use APC power instead of cell power.
add: Wire bundle component. Adds a number of wires to the circuit
proportional to the capacity of the shell, allowing you to use
assemblies in circuit logic.
/🆑
## About The Pull Request

Didn't know that some plants have reagent traits defined for grafted
traits.
It didn't work because the trait_db contained only subtypes of
`/datum/plant_gene/trait`, but not `/datum/plant_gene/reagent`.
## Why It's Good For The Game
Fix
## Changelog
🆑
fix: Fixed plant analyzer UI crashing on plants that have a reagent gene
on their graft
fix: Plants with reagent traits in the graft now properly say the name
of the grafted reagent
/🆑
## About The Pull Request

- Space Carps and Space Dragons no longer speak Common.
- Space Carps and Space Dragons now speak Carptongue, a language native
to Space Carps.
- Space Dragons also speak Draconic.
- Space Dragons can still understand common, they just can't speak it.
- Space Craps cannot understand common, unless they're a special carp
(Cayenne, Lia, Magicarps, those spawned from plushies)
- Ash Drakes and Ice Whelps also no longer speak Common, and instead
speak Draconic. They can still understand common.
- Carp Infusion now lets you speak and understand Carptongue.
- Fish Infusion now lets you speak and understand Carptongue.
- Fire Sharks now speak Carptongue instead of Common. They can still
understand common (to receive directions).
## Why It's Good For The Game
#89032 made me think "hey why CAN carps speak Common?"
So I thought "What if the Space Dragon spoke Draconic instead since it's
a big lizard"
But naturally the Space Dragon still needs to communicate verbally to
its carps and, well, carps aren't really lizards so they shouldn't get
Draconic right?
So I thought "Why not add a Fish language"
Now, various aquatic space creatures have a language that they can speak
between one another in privacy, while the Space Dragon can still
communicate to the crew for gimmicks via the curator (or draconic if
they want to speak to lizards)
## Changelog
🆑 Melbert
add: Adds Carptongue language, spoken by Space Carps.
del: Space Carps no longer speak or understand Common. Special carps
like Cayenne and Lia can still understand common.
add: Space Dragons can speak Draconic and Carptongue.
del: Space Dragons no longer speak Common. They can still understand it.
add: Ash Drakes and Ice Whelps now speak Draconic.
del: Ash Drakes and Ice Whelps no longer speak Common. They can still
understand it.
add: Fire Sharks now speak Carptongue.
del: Fire Sharks no longer speak Common. They can still understand it.
add: Fish and Carp Infusion now grant Carptongue, letting you speak to
(and understand) Space Carps.
add: Sleeping Carp grants you Carptongue, but as most human tongues
can't speak it, you'll only be able to understand Space Carps unless you
steal a fish tongue.
/🆑
## About The Pull Request
A more proper way to be solving the alarm appearing in #88335 (That PR
still actually makes the alarm read the inside of the booth so its still
important)
As it turns out, Canary already does this - when creating a new
`/datum/station_alert/` to track the alarms, it passes the optional
areas filter included in the datum with a preset of all station areas
plus the mining station areas.
This PR (after a slight rework) adds a Subtype of the monitoring
consoles called `station_only`, which have checks that only display
alarms from the station and miningstation. These replace all pre-mapped
consoles in stations only.
This will mostly be notable on Icebox and other Multi-Z stations, where
ruins will stop polluting the alarm boards and alarms on all levels will
be displayed - and, on other stations, the fact that alarm boards will
now also display the mining station.
<details><summary>z-level vs station_only</summary>


</details>
Examining the console will display if it's in z-level or station-area
mode, and this can be changed by multitooling the circuitboard (for crew
rebuilding both damaged station consoles, or space ruins)
<details><summary>examines</summary>


</details>
- [x] TO-DO: Fix Station Alerts Consoles not get set up correctly when
rebuilt ~~(the tracking is set up before the circuit can pass on
`station_only`)~~ (Done much cleaner now, thank you Lemon/Potato)
- [x] TO-DO: Test how this behaves with renamed or newly created
areas... (Renamed functions fine, Newly Created is probably better fixed
in the creation code so that it applies to other station area checks.)
## Why It's Good For The Game
Engineering shouldn't need to worry about ruins or otherwise non-station
alarms. Appearing in the station consoles is confusing and annoying to
those who like to see the board green all across.
Plus, they SHOULD be at least slightly worried about the mining station,
or at least able to tell somebody else about alerts there.
Also of course they should just be able to see all of icebox/tram/other
multi-z stations from alert consoles instead of needing to have one
per-zlevel
## Changelog
🆑
qol: Atmospherics/Station Alerts Consoles can now be set to only display
station (+mining station) areas. Station-mapped ones are set to this by
default. Use a multitool on the circuitboard to toggle between z-level
or station-area tracking!
fix: In turn, Atmospherics Alert Consoles now actually show the whole of
multi-z stations instead of ignoring other z-levels
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
## About The Pull Request
Mind lockboxes have received a tooltip about their in-hand use, but also
can be unlocked by trying to open them normally (clicking on one while
holding it in your offhand). Should reduce the player confusion around
these significantly.
Closes#88999
## Why It's Good For The Game
More intuitive handling of objects is always nice
## Changelog
🆑
qol: Improved mind lockbox handling
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Trying to insert an airlock auth card into a bag or container would not
work due to a message saying the target must be an airlock. It's now
fixed and should insert into a container regardless if on help or harm
intent.
## Why It's Good For The Game
Consistency.
## Changelog
🆑
fix: Fix airlock authentication card not getting stored in containers
/🆑
## About The Pull Request
Adjusts a bunch of machine board names to comply with the general
machine board naming patterns I see.
First pass just removed a bunch of errant (Machine Board)s that were
still on board names despite them being automatically appended on
initialization, second pass set some board designs to actually have
"Board" on the end to specify that it's a board and not a whole machine.
## Why It's Good For The Game
Machine board naming consistency is probably good, actually.
## Changelog
🆑
spellcheck: A handful of machine boards should no longer have two
(Machine Board)s showing up in their name.
spellcheck: Boulder machinery boards are now labeled as boards from
autolathes/circuit imprinters.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
## About The Pull Request
- Stack crafting got images, and a redesign, as it now uses the
ImageButtons component instead of the usual buttons
- Search will no longer stop the character when opening the stack
crafting menu
- Icon into SearchBar component now centered
## Why It's Good For The Game
Images greatly simplify interactions with interfaces, especially those
where it is desirable to see what you are doing (crafting)
So... better UI/UX :high:
## Demostration

<details><summary> Video with almost all materials </summary>
https://github.com/user-attachments/assets/6e0e90b7-064a-48de-afe9-9e097abaa011
</details>
## Changelog
🆑
qol: Stack crafting UI got images
qol: Search in stack crafting UI will not take control from you, feel
free to craft on walk
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
## About The Pull Request
If you ink kissed a obj there would be a floating ink spit as it did not
delete the projectile. This is now fixed
## Why It's Good For The Game
bugg
## Changelog
🆑
fix: ink kisses now delete the spawned projectile
/🆑
## About The Pull Request
Closes#88510
Also fixed incorrect icon positioning on Big Brother's trim (Human AI)
and medieval punpun icon flickering
## Changelog
🆑
fix: Fixed chameleon cards not updating sechud icons
image: Fixed human AI's and medieval punpun's ID trims
/🆑
## About The Pull Request
A bunch of places in code were recently updated to use a helper proc for
validating teleportation.
Unfortunately a lot of them also got the return value inverted, and
would only let you teleport to illegal locations. Most notably this
effected the hand teleporter, but also several other items.
Fixes#88966
what is a "dull universal force" supposed to be anyway
<!-- 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! -->
- Fixes#88107
Adds a default snow sound for material sheets instead of playing metal
sounds.
`sound/items/handling/materials/snow_drop.ogg` and
`sound/items/handling/materials/snow_pick_up.ogg` --
https://freesound.org/people/Vrymaa/sounds/775014/ by Vrymaa (CC0)
## 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. -->
It's an Xmas miracle!
## 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. -->
🆑
sound: Add snow pickup and drop sounds to material
/🆑
<!-- 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
Closes#88895
Also made them listen for reagent changes so now they'll turn off as
soon as all the juice is sucked out of them
## Changelog
🆑
fix: Fixed glowsticks not glowing
/🆑
## About The Pull Request
Adds a new area flag, LOCAL_TELEPORT.
This flag allows teleports ONLY in the same area that the teleport is
used. This allows for short range hijinks without enabling long range
exploits, and thus it's given to DMs and domains.
Changed almost all area_flags & NO_TELEPORT checks to use
check_teleport() (as now areas may use local_teleport instead, and this
lets them check for multiple things instead)
Thus I re-added Void Phase to the heretic scribe in DM and shuffled some
stuff around
(realizing now i neglected to doublecheck if blade breaking tps you to
station. need to check just in case)
## Why It's Good For The Game
It sucks you can't use teleporting abilities in temporary areas, so this
is a good way to allow this to still happen without opening the way for
gamebreaking exploits.
## Changelog
🆑
code: Adds a new area flag, LOCAL_TELEPORT, given to virtual domains and
deathmatch arenas.
code: Re-added Void Phase to Heretic Scribes in Deathmatch's Ragnarok
map.
/🆑
## About The Pull Request
- Matches can be ignited with boots.
- Matches have a rare chance of failing to ignite (prompting you to try
again) or an even rarer chance of snapping (wasting it).
- Also makes ignition span use mostly-consistent (using rose span for
the "cooler" ignition effects).
## Why It's Good For The Game
You may be thinking "hey, matches won't light on just friction unless
they're from the 1800s", and you'd be right. But it's a cool movie
trope, which means it should be possible, I don't make the rules.
## Changelog
🆑 Melbert
add: You can light matches on the heel of your boots - Just don't do it
too hard.
/🆑
## About The Pull Request
You can now use a fishing rod to fish random vending products from
vending machines, using holochips, coins and spacecash as bait. The
value of the money used as bait will positively influence the chance of
getting the pricier vending items, while using less than the minimum
paycheck (25 credits) will increase the minigame difficulty and carries
an additional, small risk of getting a dud or even hurling the vending
machine in your direction.
This also warranted a slight refactor of how vending product prices are
set.
## Why It's Good For The Game
Expands the list of things you can do with a fishing rod. Like for the
organ manipulation fishing PR. This is not about getting fish, but the
unconventional things we can do along the way.
Now tested, it works.
## Changelog
🆑
add: You can now try to fish random products out of vending machines
with a fishing rod and a few bucks.
fix: Fixing the 1000 cr holochip loot from exploration drones.
/🆑
## About The Pull Request
This PR completely rewrites our embedding system in favor of embedding
datum handlers which acts as containers for all embedding-related data
and logic.
Currently embedding logic relies on an element-component-datum triad,
where elements on the items handle embedding logic, singleton datums
store embedding data and components (which get assigned to ***mobs*** in
whom the item embedded) handle pain and the item being ripped out. How
do we access all the procs? By using comsigs as procs, which is really
bad. This code was written back in 2020 when DCS was hot stuff but in
hindsight this implementation was a mistake, as it heavily restricts
custom embedding behaviors unless you're willing to constantly run
GetComponent (bad, ugly, incarnation of evil)
This PR rewrites all that logic to be handled by lazyloaded
``/datum/embedding``, which is stored similarly to current
``/datum/embed_data``. Upon being requested, it is initialized and
assigned to a parent from whom all the logic is handled, from being
embedded to pain and having the item ripped out. On projectiles this
only handles one proc, after which it copies itself down to the shrapnel
item instead and runs the chain further from there.
Ideally, most embedding-related logic now should be handled purely
datum-side - in most cases items should not be hooking up to themselves
like they did before (unless said logic is for when the item is made
sticky or smth) and instead the code should be handled by the embedding
datum (see sholean grapes implementation in this PR). This should allow
us to do fancy stuff like syringe guns embedding syringes into targets
and injecting them that way, and fix some bugs along the way.
Closes#88115Closes#87946
Also fixed a bug with scars not displaying when examined closely from
#86506 because i was in the area anyways
## About The Pull Request
Glowsticks now contain some luminescent fluid (amount equal to their
duration, in minutes) which, when drank, makes your eyes glow in the
dark and gives you minor (slightly weaker than mesons) night vision.
When above 20u are taken at once (or when you have more than 20u in your
body) the glow becomes strong enough to project a beam of light in front
of you. Overdosing (50u threshold) will make the glowing effect
permanent (not the flashlight part though).

As this creates a flashlight inside of the mob, nightmares can stop the
glowing effect with their light eater.
## Why It's Good For The Game
A funny gimmick reagent with a rather minor impact. Same effects can be
achieved with mesons, flashlights or eye implants, so I don't see this
being a major issue. Could probably be used for some devious
shenanigans, but I don't see any ways to pull it off myself. Adds sovl.
## Changelog
🆑
add: You can chug glowstick fluid to get glowing eyes
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Colorful reagent (and thus, crayon powders) now color your clothing,
bodyparts (except for crayon powder), hair and organs when you're
exposed to it via smoke, foam or splashed with them. Bodyparts and
organs now change their visuals according to their atom color. Due to
this, going under a shower washes your bodyparts and washing your face
washes your eyeballs (pretty cursed).
After 30 ticks, coloring on your organs becomes permanent so be careful
with crayon smoke bombs!
Additionally, moved spraycan painting for robotic limbs to left click
(since LMB mode does not affect them visually anyways due to their
paleness).
## Why It's Good For The Game
While HUDs no longer get colored with their owner, it still feels odd to
have your clothes get colored with you when you get sprayed with
colorful reagent. This remedies this issue, as your and your clothes'
coloration are now separate.
## Changelog
🆑
add: Changed how colorful reagent and crayon powder work: douse your
victims to color their clothing, bodyparts and even internal organs!
add: You can wash your eyes when washing your face at a sink
fix: You can color robotic limbs with left click (again)
/🆑
## About The Pull Request
adds the forensics spoofing kit for 5tc to the uplink (is it really a
kit if its only the item and instructions?)



silent mode: if off the scanner will make sounds and messages like a
forensics scanner if used (Elliot Wardle points the forensic scanner at
the reinforced wall and performs a forensic scan.)
scan mode:
scans stuff for NEWLY discovered fibers and fingerprint, stores them
the scanner may only hold 5 each of fibers and prints
the scanner reads sec records to display names next to fingerprints
apply mode:
it adds the fiber/fingerprint to whatever you use it on
## Why It's Good For The Game
as it is right now forensics scanners are basically a guaranteed "this
guy is an antag" if they scan anything syndicate related and find your
prints on it (or fibers). that is not ideal because you will spend the
next 30 minutes of your time getting trolled in the permabrig by
security
with this item you (traitor) get the benefit of the doubt which is good
and makes detectives legit use their brain beyond CTRL+C CTRL+V on sec
records
## Changelog
🆑
add: forensics spoofing kit for traitors/whoever with an uplink
/🆑
## About The Pull Request
Fixes lead acid battery being overlooked in the split between cell and
megacell. It still remains a very good battery fitting of being rare
maintenance loot, but it's no longer equivalent to several bluespace
cells combined.
It is a cell with a maximum charge of 600kJ, more than a bluespace cell,
but a lower charge rate and no charge indicator.
It spawns with 250kJ to 350kJ in starting charge, between super and
hyper.
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/88573
## Changelog
🆑 LT3
fix: Fixed lead acid cell having extremely high max charge
/🆑
## About The Pull Request
Welding overlays were being put on the welding tool's
update_overlays_on_z, rather than the target's. This fixes that.
## Why It's Good For The Game
Fix bug
## Changelog
🆑
fix: welding sparks no longer break on transitioning to a different
floor
/🆑
## About The Pull Request
I was digging through sound code trying to add a few misc `.ogg`'s when
I noticed a horrifying revelation. Sound calculations are broken as
fuck. At first I didn't think it was a big deal until I remembered this
comment in another PR:

I asked for the profile logs:
```
Profile results (total time)
Proc Name Self CPU Total CPU Real Time Overtime Calls
---------------------------------------------------------------------------------------------- --------- --------- --------- --------- ---------
/proc/playsound 4.771 26.841 26.902 0.347 153938
/mob/proc/playsound_local 9.511 15.689 15.891 0.724 429391
/mob/living/say 0.125 19.064 19.945 0.000 2550
/mob/living/carbon/updatehealth 0.878 8.305 8.341 0.013 49847
/mob/living/carbon/proc/handle_organs 1.486 9.263 9.300 0.000 70977
/obj/item/organ/internal/on_life 0.415 0.455 0.561 0.000 340312
/mob/living/carbon/Life 0.758 30.085 30.123 0.000 71933
/mob/living/proc/Life 5.509 39.404 39.512 0.000 401951
```
Yeah, that is _really_ bad. Especially since it is a hot proc that is
used half a million times. Optimizing this would help a decent amount.
So now you are probably wondering, what exactly is the problem?! Let's
take a look.
https://www.desmos.com/calculator/sqdfl8ipgf
Sounds are being broadcast on a large radius which is typically about
~17 tiles. Since the volume of a sound is reduced by distance, the
further away the sound is, the quieter it becomes. You would think, hey
that's fine! Sounds become inaudible at the 17 tile distance limit
right? Except no, they generally become inaudible about 2/3rds of the
way there. (~10 tile range) Sound volume is between 1-100. When the
sound volume is lower than 3, it becomes (pretty much) inaudible.
This means most of the sounds that are being spammed in game everywhere,
you can't even hear!!!
To fix this we used two major optimizations:
1. Add a `SOUND_AUDIBLE_VOLUME_MIN` to ignore any sound lower than this
volume and calculate an audible distance
2. Use the new audible distance to drastically shorten the tile range of
mob listeners using `get_hearers_in_view()`
To give you an idea of how much better this is:
Sounds that had a range of 17x17 (289 turfs) are now 12x12 (144 turfs).
There is also large range machinery like the SM that has a 40x40 (1600
turfs) that is now 30x30 (900 turfs).
It's quite an improvement.
I also went and added a debugging tool to the admin/debug equipment set
that can be found in the debug box. It is a pair of earmuffs that when
worn has any sounds sent to the mob via a `to_chat` message displaying
the sounds max range, distance from player, volume, and sound name. It
is highly recommend to walk while wearing the earmuffs since walking
stops your mob from emitting footstep sounds.
## Why It's Good For The Game
The speed of sound is now faster than ever. Please don't break the sound
barrier.
## Changelog
🆑
refactor: Sound has been heavily optimized and will now ignore low
volume sounds from far away.
admin: Add debugging sound earmuffs to admin equipment inside the debug
box. Wear them to determine a sounds max range, distance, volume, and
sound name. Highly recommended to walk otherwise you will get spammed
with footstep sounds.
/🆑
## About The Pull Request
- Fixes subtype flatpacks missing a name when in vending machines
- Adds default price for vending flatpacks
- Moves flatpacks into their own .dm file
- Groups the mail related items together in the CargoDrobe
## Why It's Good For The Game
All vending machine flatpacks having identical names despite the
contents of the flatpack is less than ideal
## Changelog
🆑 LT3
fix: Premade/vending machine flatpacks now display what board is inside
/🆑
## About The Pull Request
Was just scrolling through the Paradise github since they seem to have
more work done for 516 to see if there's anything I can port over, found
this and thought why not.
Ports parts of https://github.com/ParadiseSS13/Paradise/pull/25105
Specifically, updaing all hrefs to use the internal ``byond://``, and
adding it to grep.
## Why It's Good For The Game
More work towards 516.
## Changelog
Nothing player-facing.
## About The Pull Request
Kissing while you have the ink infusion ability off cooldown gives you
an ink kiss.
This ink kiss behaves identically to a normal kiss but also creates a
ink spit projectile and calls on_hit(target) on its own on_hit (not
on_harmless_hit)
## Why It's Good For The Game
I think it's funny to kiss people and splat them with ink.
I did not test this because apparently worktrees dont work with pressing
f5
## Changelog
🆑
add: Kissing while you have the ink infusion ability off cooldown gives
you an ink kiss
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
Makarovs and Donksoft Riot Toy Pistols now come in weapon cases. These
cases come with the gun, two spare magazines and a box of spare loose
ammo.
Basic ammunition for these guns come in case packs of three, with a
spare box of loose ammo. The basic ammo for Makarovs is slightly more
expensive.
Donksoft Toy Pistols from the uplink (and given to clown ops) now deal
substantially more damage. For riot darts, this goes from 25 to 35
stamina force. However, the case now costs 6 TC.
Makarov and Donksoft toy pistols have had their magazines increased by 4
bullets, for a total of 12. The Ansem is still at 8.
The pistol cases now have a unique sprite thanks to SmartKar.

All included cases come with a disposal bomb built into the case. Use
Alt-Right-Click on the case to start the countdown, and stand back. Or
chuck it at someone you don't like.
## Why It's Good For The Game
>Makarovs and Donksoft Riot Toy Pistols now come in weapon cases. These
cases come with the gun, two spare magazines and a box of spare loose
ammo.
>Basic ammunition for these guns come in case packs of three, with a
spare box of loose ammo. The basic ammo for Makarovs is slightly more
expensive.
A long time ago, I proposed to a maintainer that maybe traitor weapons
should be bundled together with some starting ammo, to give them a
little bit of a necessary boost for longevity for their cost. This being
in a state of the game with only 20 TC and no way to get more. I thought
progtot may alleviate this issue somewhat, but I don't believe it has at
all.
I narrowed this down to just the Makarov and Toy Pistol as I think
they're the ones in need of help, and my reasoning is thus;
A) The TC value is extremely deceptive.
The weapons themselves are not very good at doing anything without
additionally putting in more TC to load up on ammunition or support
equipment. While it does say 7 TC on the header for the Makarov, if you
want it to be silent, you have to spend more TC on a suppressor (3 TC).
Then, if you're not entirely sure that only 8+1 shots you get from the
beginning is enough to take out a target (maybe they're known to have
armor), then you may need to get either specialized ammo or additional
ammunition. At a certain point, it begs the question 'why didn't I just
buy the bigger stick and get more value out of my purchase as well as
more reliability?' Particularly since drawing heat probably means all
that TC is just going straight into more ammo, one way or another. Or a
bigger stick if you're doing side objectives, making that early purchase
redundant.
B) Whenever you look at either, I want you to consider. 'Could I get
better results by just getting a station weapon?'
The answer is almost universally 'yes'. Even some improvised weapons can
be more reliable. Even spending TC on getting that weapon (like C-4) is
miles more worthwhile than spending TC to get either weapon upfront.
C) It significantly overvalues autolathe access just to make the weapon
feel less like a ripoff. If the uplink can't in of itself justify using
the weapons, they're just flat out not good. and that's assuming players
even know to keep magazines.
It's just a bad value purchase and deceptive in just how expensive it
can end up to use them. The weapon is overshadowed by fairly comparable
items once you factor additional expenditures.
Even the toy pistol is a bad value purchase and it's literally just 2
TC, because the damage it does is dogshit. It's worse than a disabler.
It's worse than a sleepy pen for value to effect. It's so shit, people
put them on maps for free grabs. Let's resolve that with the following.
> Donksoft Toy Pistols from the uplink (and given to clown ops) now deal
substantially more damage. For riot darts, this goes from 25 to 35
stamina force. However, the case now costs 6 TC.
Subtle weapon, good, reliable damage. Fantastic for kidnapping at 40
damage. All without ever actually inflicting a real point of damage.
Great for clowns, great for pacifist tots. Decent deniability. Silicons
may have a harder time justifying an intervention. Genuinely a budget
tool that increases the value of any TC you put into it. Since it has so
much more value, this is why I've increased the price to offset this. It
is actually competing with similar tools well enough to not go too
overboard.
> Makarov and Donksoft toy pistols have had their magazines increased by
4 bullets, for a total of 12. The Ansem is still at 8.
Longevity is the only thing Makarovs seem to want to claim to have over
the revolver, and it isn't much more longevity from just the gun itself
(7 bullets on the revolver compared to 8+1 on the pistol). If we're
talking real longevity, and particularly if you're considering getting a
silencer, than the ebow is literally 3 TC more expensive, silent, and
has endless ammunition with high damage output.
You still need to dump a lot of TC into the Makarov to satiate its ammo
needs if you happen to be skirmishing a lot. By comparison, just getting
a single laser can often times do a much better job at skirmishing than
the tot with a Makarov can. And do comparable damage no less. From
experience, I've always done better with lasers than the Makarov.
Making it more directly able to maintain a good ammo count during a
fight hopefully makes the Makarov feel more like a value purchase for
what I think should be its strength. Staying power and the ability to be
aggressive with ammo expenditure. Particularly against larger numbers,
which traitors are almost always expected to go up against. If those
opponents have lasers, the Makarov just always gets outgunned by an
absurd amount (lasers on their own have like 16 shots, so you can do the
math if there are even two people with a laser each).
Simply put; let's not make make tots feel like a dumbass for not just
getting a laser themselves or buying a ebow to maintain firepower over
long fights, especially with rechargers usually being in pretty nicely
secluded locations for them to access.
## Changelog
🆑 NecromancerAnne (code), SmArtKar (sprites)
balance: Makarovs and Toy Pistols come in weapon cases. Complete with
spare ammo.
balance: Basic ammo for either weapon comes in weapon cases of three
extra magazines at an affordable price.
balance: Donksoft Toy Pistols from the uplink are much stronger than
their standard counterparts, but now priced at 6 TC.
balance: Makarovs and Toy pistols have a magazine capacity of 12 rounds.
balance: Gun/Ammo cases from the traitor uplink can be destroyed by
activating the disposal bomb. Press Alt-Right-Click on the case to start
the timer.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>