## About The Pull Request
Pass `amount` to `use_tool()`
## Why It's Good For The Game
fixes#95519
## Changelog
🆑
fix: You can no longer create infinite plasteel with girders
/🆑
## About The Pull Request
- Fixes#95310
- Depends on #95319
## Changelog
🆑
fix: you cannot install infinite water recyclers in the sink frame
fix: you can attach sink frames to walls in most cases regardless of
what's on the wall(except when there is already a light fixture, camera
or another sink)
/🆑
## About The Pull Request
1. Underclothes have all been repathed as
`/datum/sprite_accessory/clothing`
2. Underclothes now have support for GAGS. Currently it ONLY supports
static GAGS colors, ie only preset colors, however prefs support could
easily be added in the future
3. Uses the GAGS support to implement the existing digitigrade
templating system for some undergarmants - lizards will use a generic
template for their underclothings when applicable
Example
<img width="169" height="124" alt="image"
src="https://github.com/user-attachments/assets/30b6689b-13a4-4cf9-811c-0d5d0bd5da59"
/>
## Why It's Good For The Game
Existing undergarmants look really jank on lizards
<img width="170" height="140" alt="image"
src="https://github.com/user-attachments/assets/de0704e0-d403-4bdb-a4c5-432d704b9c99"
/>
<img width="118" height="102" alt="image"
src="https://github.com/user-attachments/assets/7ec47327-c2a9-4a90-aab5-fb57105d5111"
/>
I would like to solve this, and well... the two solutions are "we force
lizards to run around naked" or "we use the cool templating system". The
latter seemed preferable
<img width="165" height="125" alt="image"
src="https://github.com/user-attachments/assets/6a8e4225-10a4-4044-9a12-c220713cd613"
/>
I did yoink the template from the jumpsuit template so it might look too
similar, might need to tweak it
## Changelog
🆑 Melbert
add: Some undergarmants will now use a generic replacement on lizard
body shapes that fit more appropriately
refactor: Refactored how undergarmants generate their icons, report any
oddities with that
/🆑
## About The Pull Request
[Adds a visual tick helper, integrates it into SSmove and
such](https://github.com/tgstation/tgstation/commit/e97035f9f74fad5c67c5bf19d8d5d3bb4bd476b4)
Basically, if we do "stuff" during verb time then the next chance
clients have to actually see it is on the next visual tick (rather then
the normal "this tick"). This is cause clients get their next frame
during maptick, and maptick runs before verbs.
We want to be able to handle this properly because if you say, create an
object and then move it on the same VISUAL tick (NOT game tick), it will
just teleport instead of playing out the move. I don't want this for
stuff like sparks, so we need a way to work around it.
[Moves most users of the _FAST flag to
_INSTANT](https://github.com/tgstation/tgstation/commit/6f96daac00519c69adc7554f52114798a65f3ad5)
These are the kids that don't immediately spawn something and the move
it, and we want to allow them to move actually as soon as possible
(important for stuff like space)
[Improves basic effect systems, makes their products delete when they
stop
moving](https://github.com/tgstation/tgstation/commit/172cb25d80ed34e1ec523172a1677fb524239fba)
Moves some stuff out to getters or vars so children can better decide
how long effects should last/how fast they should move. Uses this to
clean up weird dupe code used by explosions.
Makes all these effects delete on contact with something that stops
them. I'm doing this because an effect just hanging in the air looks
really really odd. Does have consequences for sparks that are already
moving at a wall though, might need a better way to handle that.
Makes all these effects use _FAST loops so they don't just hang in the
air for a second on spawn
Adds a setter proc on sparks for their duration, gonna use this to
improve their effects some
[Refactors overlay lights, adds support for animating their
images](https://github.com/tgstation/tgstation/commit/3ad0083cf2b536df51a6d93dca40eac20c1d62d1)
Implements light_render_source and relevant setters, this allows us to
replace the components of an overlay light with basically whatever we
want
Refactors overlay lighting to handle its images more consistently,
allowing us to hook into an image being modified
Combining the two of these will allow us to consistently copy a light's
image, modify it in some way, and then relay that modification back
down. Allowing us to animate it or do more advanced effects painlessly
Also, fixes ranges of 1 or less not rendering at all on initial set
(thank you kapu)
[In which I get fed up and add a macro helper for UID
generation](https://github.com/tgstation/tgstation/commit/aab48b03d407104d4f9cf9acb034494237def911)
[adds vv hooking for all existing lighting
vars](https://github.com/tgstation/tgstation/commit/b81c6200a0d74c36b440aa3f4c1f22c422090a2d)
[Upgrade effect system's dir picking to avoid duplicates when
possible](https://github.com/tgstation/tgstation/commit/18b622586b509c6be4c4bca4e3e7c175ad75fe91)
[Uses the technique described above to animate spark's lights out as
they
move](https://github.com/tgstation/tgstation/commit/67ba177982213799984a70e89536c5efb3d17e14)
This is a decently nice effect imo, it allows us to bump their power
(read, alpha) since it'll get animated away. I try to sync the animation
to the actual icon state's flow (it's 0.7s long). I also sped them up
somewhat to hopefully have a nicer looking effect? we'll see.
[Abstracts away intercepting overlay lights into a holder
datum](https://github.com/tgstation/tgstation/pull/95362/commits/b3f1fe74f2c3bab1d8912ab8a666bd05677ad032)
This should make it far easier to reuse this pattern!
[Fixes overlay lights flashing to double intensity when picked up off
the
ground](https://github.com/tgstation/tgstation/pull/95362/commits/1d83f2031fa2b33312b2aea4359c0c37c9d04ac7)
We needed to clear out their underlays BEFORE the animation
[Adds a flickering effect to flares and their
children](https://github.com/tgstation/tgstation/pull/95362/commits/b7a858e04a607c58b6c7fbe1476ffe2239e63bde)
I'm still not 100% happy with this, I was trying to avoid it feeling
like a heartbeat with random noise and I.. THINK it worked? it's
honestly quite hard to tell
[Adds the same flickering to lighters, welding tools and life
candles](https://github.com/tgstation/tgstation/pull/95362/commits/3ec44027e17835ae96702cec5f0b12d1f4deb32b)
Also, updated light candles to mirror the appearance of normal candles
and use overlay lighting
EDIT:
I realized while working on flares that I accidentally double applied
color, so if you saw the sparks animations before now it was different
(less vibrant). IDK if I like this better or worse but it is RIGHT and
that's what matters.
## Why It's Good For The Game
I got mad about how bad these looked, and this is a start at improving
them.
Also, adds a framework for more dynamic effects applied to overlay
lights (you could use this to apply a sort of "emergency rotating"
effect, or flicker/buzz for example).
<details>
<summary>Before</summary>
https://github.com/user-attachments/assets/66437f27-ee3c-4f14-a7ee-4a1c3e68533ahttps://github.com/user-attachments/assets/ed14fff8-a7eb-47fe-bab5-9a490ac96629
</details>
<details>
<summary>After</summary>
https://github.com/user-attachments/assets/fb24ff2e-c745-42a5-8e11-c8a1eeef35a5https://github.com/user-attachments/assets/fd8c2116-cb92-4fe6-ad3e-786a6538e52a
</details>
## Changelog
🆑
add: Reworks how sparks render. They're now a bit brighter, will fade
out as they move/if they hit something, will stack with each other less
and also won't start hang in the air on spawn.
add: Added a flickering effect to lighters, welding tools, flares,
torches and candles (since they're flames).
fix: Overlay based lights (think flashlights) will no longer flash to
double intensity while being picked up.
refactor: Reworked how some effects (explosion particles, sparks, some
reagent stuff) function, report any bugs!
/🆑
## About The Pull Request
Revenants, even while invisible, can be seen in the reflection of
mirrors
<img width="231" height="254" alt="image"
src="https://github.com/user-attachments/assets/135341b8-192c-4f9b-b9c3-0da2c96c6fac"
/>
They have an ethereal, ghostly effect applied to their reflection while
invisible (it's an animation so you can't see it in the picture), this
effect is removed if they become visible. It also doesn't apply when
reflecting in a magic mirror.
Additionally, "Defile" will now break mirrors, though not magic mirrors.
Also, Revenants no longer elevate over tables. They're ghosts after all.
## Why It's Good For The Game
It's a thematically appropriate way for a Revenant to reveal themselves
to the crew without, well, outright revealing themselves.
Also there's a hypothetical world where Medbay puts mirrors everywhere
to catch a Revenant.
## Changelog
🆑 Melbert
add: Revenants are always visible in mirror reflections, even while
invisible.
add: Revenant "Defile" now shatters mirrors.
qol: Revenants no longer elevate over tables.
/🆑
## About The Pull Request
Two main items:
1: Admins can now use the new "Create new Blackmarket Item" verb, which
prompts them about the item, price, quantity, name and description of
the item they'd like to list. If successful, the item will be listed to
the black market, available to purchase by the crew.
Prices can be set very, very high, though I've limited the available
quantity to 100 per listing as a nice middle-ground value. The verb can
be used any number of times, allowing for admins to use the black market
to run events, as such. Of note, this verb will spawn a fresh typepath
of the object listed, so it cannot be used to list var-edited objects
as-is, but it's still quite useful for offering unique or rare items to
the crew based on the needs of the round.
2: This PR does a few tweaks to the "launch" shipping option on the
black market. The text displayed when having an object launched to the
station has been adjusted to reduce some ambiguity on if the item is
potentially deleted when launched. The launch behavior has not been
modified in this way, as the object is still launched at the station
using similar logic as before.
**However**, the item is now launched to the station in a faux-energy
bubble, which destroys itself and empties it's contents when it makes
thrown impact or is opened by hand. In practice, this is only noticeable
if you were outside when the order is launched at the station, or if the
crate makes impact with you. This allows for black market objects that
create spawners to arrive at the station harmlessly, which also
potentially reducing some of the randomness of an object being thrown at
the station, and then leaving the z-level immediately based on the extra
collision involved. Additionally, I've lowered the **shipping cost to
0** of launched items.
Misc:
Did some code cleanup by adding defines for each of the categories of
black market items, and a list-define for every category together.
## Why It's Good For The Game
I've wanted to have the option for admins to be able to list things for
the crew to buy for quite awhile now, without requiring them to barter
by hand or through a reliable means that can't be bypassed by 3
assistants with baseball bats. This offers that option, while also
having some flavor of being offered on the black market, if that's
desirable. Otherwise, it's no impact on the average round as it's
admin-only.
Regarding the launch options, this started as a grammar tweak as I was
talking with Arm on discord and the lack of clarity raised the whole
shipping option to our attention. After confirming that launching things
to the station was NOT, in fact a literal noob trap, just an awful
choice, I started work on the shield-bubble idea in an attempt to see if
I could try and reduce some of the randomness involved with that
shipping option. It already sucks due to the risk of going out into
space, there's no need to make it suck worse by potentially losing any
of the cooler items available on the black market at the same time. So,
price down and a mild consistency up. I also ran into #95183 while I was
testing all of this, so this should fix#95183.
Lastly, code cleanup. Made a few things look 3% nicer.
## About The Pull Request
`shock` was copy pasted across a bunch of base types
I needed the behavior unified and it was fairly trivial to do
So now we have `/obj/proc/shock` which all the old implementations call
## Changelog
🆑 Melbert
refactor: Made some minor changes to how things like airlocks, vendors,
and autolathes shock you. Report any wierdness with that
/🆑
## About The Pull Request
``get_temperature()`` returns a value in kelvins, not a boolean. Trying
to treat it as such will result in ***any*** item with a thermal value,
like condensers, being treated as a lighter.
## Why It's Good For The Game
Consistency, allows us to have actually functioning cooling items that
don't act like lighters all the time.
## Changelog
🆑
fix: Condensers can no longer be used to ignite things
/🆑
## About The Pull Request
passes `user` in the `open()` for when someone attempts to leave an
unlocked, unwelded container such as a bodyag. The reason for the bug
was attempting to give a null user the pinned piece of paper.
Also adds an exception for no user being passed into `open()` for the
sake of revenant's defile & likely other things in the future.
Also fixes an unrelated bug where the reason that taking off the pinned
paper from a bodybag would stop it opening was a runtime rather than
returning false. Behaviour remains identical.
## Why It's Good For The Game
fixes#95247
## Changelog
🆑
fix: Pieces of paper no longer make bodybags inescapable
/🆑
## About The Pull Request
Add a new button to the fun tab of admin secrets that taps every ore
vent
## Why It's Good For The Game
Quick button to get steady stream of ore flowing into the station is
nice
## Changelog
🆑
admin: added tap all ore vents button to secrets panel
/🆑
## About The Pull Request
Fixes infinite `do_after()`s making infinite machine guns by making the
`do_after()`'s `target` the relevant machine gun.
## Why It's Good For The Game
fixes#95218
## Changelog
🆑
fix: Fixed infinite machine guns
/🆑
## About The Pull Request
Ports the Experimental Holotool from yogstation. An RD item that is all
the tools in a compact package.
## Why It's Good For The Game
RD has nothing interesting except the armor that kills you if you use
it, and many people dont because of that. This gives a unique,
interesting item that is useful to their kit, much like the CMO's hypo.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
<img width="273" height="314" alt="image"
src="https://github.com/user-attachments/assets/7111c679-928c-4069-a4d9-ab93588d9daf"
/>
<img width="127" height="83" alt="image"
src="https://github.com/user-attachments/assets/86346c30-3ae3-449d-b40a-3c26b05f6949"
/>
</details>
## Changelog
🆑
add: The RD now has an Experimental Holotool! It starts in their locker.
/🆑
`togglelock` is called in both tool_interact and attack_hand. Aborting
on the first success here prevents the double toggle
🆑
fix: Fixed right clicking a closet with an ID in hand toggling locks
twice in one tick
/🆑
Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
## About The Pull Request
That's all.
The sprites clearly have a pedestal which is attached to the floor. They
shouldn't behave as if they are free floating wash basins.
<details><summary>example: a barber shop</summary>
<img width="614" height="818" alt="StrongDMM_ahHbCymkjR"
src="https://github.com/user-attachments/assets/aeee4090-e209-4ad7-8d1d-fef9dcbb36e2"
/>
</details>
Also runs the UpdatePaths script so it can collapse some duplicate tiles
which have been annoying me with diffs each time it's run.
## Why It's Good For The Game
More mapping flexibility for bathrooms and medical spaces.
## Changelog
🆑
code: sinks can be mounted to floors
/🆑
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
## About The Pull Request
This PR refactors ``effect_system``s to be a bit easier to use by
getting rid of ``set_up``, allowing ``attach()`` to be chained into
``start()`` and refactoring most direct system usages in our code to use
helper procs.
``set_up`` was unnecessary and only existed to allow ``New``'s behavior
to be fully overriden, which is not required if we split
sparks/lightning/steam into a new ``/datum/effect_system/basic`` subtype
which houses the effect spreading behavior. This allows us to roll all
logic from ``set_up`` into ``New`` and cut down on code complexity.
Chaining setup as ``system.attach(src).start()`` also helps a bit in
case no helper method exists
I've added ``do_chem_smoke`` and ``do_foam`` helpers, which respectively
allow chemical smoke or foam to be spawned easily without having to
manually create effect datums and reagent holders.
Also turns out we've had some nonfunctional effect systems which either
never set themselves up, or never started, so I fixed those while I was
at it (mostly by moving them to aforementioned helper procs)
## Why It's Good For The Game
Cleaner code, makes it significantly easier for users to work with. Also
most of our effect system usage was copypasta which was passing booleans
as numbers, while perfectly fine helper procs existed in our code.
## Changelog
🆑
refactor: Refactored sparks, foam, smoke, and other miscellaneous effect
systems.
refactor: Vapes now have consistent rigging with cigs using the new
system.
fix: Fixed some effects never working.
/🆑
## About The Pull Request
TRAIT_DISFIGURED and physical disfiguration are now handled by the head
bodypart rather than being on the mob itself. This is mostly for
internal purposes, but it does mean that:
- Players can now perform plastic surgery on torn off heads.
- Disfigured mobs' heads keep their face hidden, and when attached to a
different body won't magically get repaired and vice versa, attaching a
new head to a disfigured corpse no longer disfigures it.
- Robotic (and other non-huskable) heads no longer become disfigured
from husking
- Also in the rare case of grafting a head torn off from a husk onto
another body, they no longer permanently turn into an Unknown. (lol)
## Why It's Good For The Game
Saner code, we generally want limb-specific behaviors to be on limbs
themselves and not on the mob. Also yeah that one weird edge case.
~~Husks are next on the chopping block~~
## Changelog
🆑
qol: Plastic surgery can now be done on detached heads.
refactor: Refactored how disfiguration is handled to be stored on head's
side
fix: Robotic (and other non-huskable) heads no longer become disfigured
from husking
fix: Attaching a head from a husk to a different body no longer
permanently turns them into an Unknown.
/🆑
## About The Pull Request
Because cable coils are by default 30 cable, what was presumably
intended to drop four cable actually dropped four stacks of cable. This
modifies the deconstruction logic of improvised mounted weapons to spawn
`/obj/item/stack`s once, with their count set in `new()`, rather than
repeatedly spawning single stacks and having them merge, which allows
granularity when it comes to cable.
## Why It's Good For The Game
Unless you're deconstructing something via a wiremill, it shouldn't
produce eight times as much cable as it cost.
## Changelog
🆑
fix: Improvised mounted weaponry now drops a reasonable amount of cable
/🆑
## About The Pull Request
This PR refactors wall construction on girders, wooden barricades and
metal foam to use a centralized element, which listens to item
interaction signals and attempts to make any available wall recipe.
This change is an atomized prerequisite to my blueprinting system, since
that system requires a sane way to dynamically change the speed at which
walls are built.
This PR will later be expanded to refactor girder construction steps in
general.
I also added `proc/valid_typesof(base_type)` as a side effect of my
previous attempts at refactoring this stuff. There's now what amounts to
a code comment easter egg in the same file, because DM is wacko and
you're going to get cursed now too. :)
## Why It's Good For The Game
The old system had ~20 bespoke yet highly similar wall construction
steps. Some of the wall recipes were also concatenated from a string on
the used stack type. To put it bluntly, the code was fucking horrible.
Same thing goes for the rest of the girder construction steps, they were
all bespoke.
## Changelog
🆑
refactor: Refactored girders and wall construction. Report any bugs.
tweak: Some niche wall types might have their wall delay changed by like
2 seconds. This doesn't affect normal walls, reinforced walls,
falsewalls or any other important wall types.
/🆑
## About The Pull Request
**Qol**
- Adds examines & screen tips for washing items in sinks
- Adds examines & screen tips for wall frame items i.e deconstructing
with wrench & what structures you can mount them on
**Fixes**
- Plumbing components inside shuttles now properly reconnect
- Plumbing iv drip has their connectors (red & blue pipes) visible again
- Sinks consume reagents when washing and won't wash when it becomes dry
- Fixes#94942 placing ducts by hand on turf won't run time. Also
Plumbing machinery properly reconnects when un wrenching ducts in
circular connections
- All plumbing machinery now operates in the plumbing subsystem & map
loaded machines begin processing
**Refactor**
- Refactored sink frame into a wall frame item meaning it can now be
carried in hand and mounted on walls
- Refactored the sink attack chain to use `item_interaction()` instead
of `attackby()`
- All sinks are now wall mounted components meaning destroying the wall
they are attached to will cause it to deconstruct
## Changelog
🆑
qol: added examines & screen tips for wall frame items
qol: added examines & screen tips for washing items in sinks
fix: plumbing components inside shuttles reconnect to their machine
counterparts correctly
fix: plumbing iv drip has its red & blue connectors visible again
fix: sinks consume reagents when washing and won't wash when it becomes
dry
fix: map loaded plumbing machines begin processing
fix: placing stack of ducts by hand of ducts works again
fix; plumbing machinery properly reconnects when un wrenching ducts in
circular connections
refactor: sinks are now proper wall mounted components meaning
destroying their attached walls will cause it to get destroyed & sink
frames are wall frame items that can be carried in hand
/🆑
## About The Pull Request
1. Adds stasis bodybags, unlocked with cryogenics tech
These bodybags are portable forms of stasis. However, they wear down
with use, only being able to keep someone in stasis for about 2, 3
minutes before falling apart.
Bodyparts and organs put in the bodybag are also frozen, allowing you to
maintain parts of gibbed people.
You can med scan through the walls of the stasis bag as well. Also you
can med scan through holographics bodybags.
2. Adds triage cards to the medical vendor
Triage cards are small pieces of paper you can write on and stick to
people. They're color coded according to severity, and are intended to
be used in mass casualty events for prioritizing patients.
3. You can pin paper to bodybags
You can pin a sheet of paper to bodybags that people can read, be it
autopsy or whatever.
4. Updates paper interaction code slightly
We have new procs for allowing interactions rather that snowflakes
5. Other forms of stasis apply tumor suppression
Oversight?
## Why It's Good For The Game
I made these a while back to just give medical doctors a few more tools
to play around with beyond the meta tools. Just to get more immersed
into the larp.
Otherwise, stasis bodybags gives Paramedics a tangible upgrade(if you
can call it that), offering a safer way to retrieve patients
## Changelog
🆑 Melbert
add: Adds stasis bodybags, unlocked with cryo tech. They put its
occupants (organ or mobs) in stasis, but wear down over time.
add: Adds triage cards to the medical vendor, a flavor item docs can use
during mass casualty events.
qol: You can pin papers to closed bodybags. Keep organized with your
autopsies.
qol: You can interact with papers in folders and on clipboards
qol: All forms of stasis stop brain tumors
/🆑
## About The Pull Request
- null all GAGS vars for brass wirecutters as it doesn't use GAGS
- Repath `mothbomb.dmi` so it actually gets deployed with the server
- Generate map icons
- Fix 150+ crafting material parity failures
- Fix airlock lights not working
- Fix certain species missing eyes
## Why It's Good For The Game
Don't like red X
## Proof Of Testing
If this PR is green check then you Know
## About The Pull Request
#94802 follow up
Dense objects that can pass over tables like microwaves shouldn't block
table construction
## Why It's Good For The Game
It's a bit annoying to have to work around tables for machines made to
be on tables
## Changelog
🆑 Melbert
qol: Objects that can pass over tables don't block table construction
qol: If table construction fails, it tells you what is blocking, rather
than "something is"
/🆑
## About The Pull Request
I thought megafauna were hard to refactor into simple mobs, and they
kinda are, but also enough work has been done on them through various
refactors (e.g. mob abilities) that it's not _too_ bad, but I didn't
really relish working on it.
Regardless, it's refactored! A few more of the ol' simple mobs flushed
down the toilet, with a bunch more features to make porting over more
`megafauna` to the basic mob's `boss` framework even simpler. There's
some weird patterns that are introduced in here to better fit the old
system's parity, but I don't really mind having done that since it's
more important to get stuff out of the simple mob framework and into
something a bit easier to work with and extend.
Here are all of the changes I can recall having made:
* A lot of the documentation regarding the blood drunk miner did not
actually meet reality. The current refactor reflects what the code was
actually doing, not what was documented.
* The code regarding using the saw's `melee attack chain` stuff wasn't
changed. Sorry but I can't even start to unravel that, I just overrode
the whole attack thing because it's not really incorporable from what I
was finding.
* Basic mobs operate differently than simple mobs, thus this mob will be
"harder" for a shorter amount of time as people are not used to the
current timings/pathfinding behavior/cooldowns/etc. of the modern blood
drunk miner. The overall difficulty didn't feel too different to me in
my playtesting, but changes can certainly be made if someone can tell me
which variable to fix.
* Basic Bosses now appear in the orbit menu as mob POIs, parity with
megafauna
* Basic Bosses can now use the boss music component.
## Why It's Good For The Game
Cleans up the code by incorporating it into a modern framework that
already accounts for a lot of the stuff that was taken for granted 8-9
years ago when this was first implemented, and tries to keep any
possible number the same in doing so. Should be much easier to add new
graphics or overhaul the boss's AI to transform it into something even
more interesting should someone choose to do so.
Let me know if I fucked up with signals/ai behavior patterns/etc.
somewhere as it's been a while since I touched this stuff and I had to
clean out a lot of cobwebs in my brain to get to this implementation.
## Changelog
🆑
balance: Miners Beware: Blood Drunk Miners have been refactored into
basic mobs. This means their timings and such may be a bit more
unpredictable than what you're used to. The difficulty should be about
the same, but do approach with caution lest you get devoured...
/🆑
Hopefully more people can pitch in with refactoring megafauna now... not
too bad anymore after I fixed some of the jank...
## About The Pull Request
Fixes#94801 by making table construction closer to other construction
objects and has the same error message as other construction bits,
Checked the logic in crafting for comparison as well and tested the fix
in game.
<img width="371" height="205" alt="Screenshot 2026-01-09 153357"
src="https://github.com/user-attachments/assets/bb17031f-320b-4234-97d7-193762ced721"
/>
<img width="267" height="260" alt="Screenshot 2026-01-09 153424"
src="https://github.com/user-attachments/assets/9f38ece7-328b-4f43-b6d8-9c175f7d5687"
/>
## Why It's Good For The Game
- Fixes unintended exploit method of having all the benefits of surgery
with stasis beds
## Changelog
🆑
fix: Making surgery beds on top of stasis beds no longer possible
/🆑
Co-authored-by: loganuk <falseemail@aol.com>
## About The Pull Request
Void stamp added to bureaucracy loot spawners, a new box that contains a
granted, denied, and void stamp found in the lawdrobe, hop locker,
bureaucracy crate, mod stamper module, and the paperwork implant gets a
stamp that can cycle between 3 different ones like the mod stamp.
## Why It's Good For The Game
Finally the void stamp is obtainable
## Changelog
🆑
add: The void stamp is now obtainable
add: The lawdrobe now sells a box of stamps
add: The head of personnel's locker now contains a box of stamps
fix: The mod stamper module is now visible
/🆑
---------
Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
## About The Pull Request
- Fixes#94119
> This will require a different solution which someone smarter than me
has to figure out in the foreseeable future
Today me is now smarter than yesterday me. We basically just unmount
when the object is about to shuttle moved and remount after it has been
shuttle moved
This also map edits some objects that could not be mounted in shuttles
previously
## Changelog
🆑
fix: objects mounted in shuttle areas deconstruct when their support
structure is destroyed
fix: fixes runtime in arrivals shuttle when its request console is
destroyed
map: moved around some objects in shuttles so they can be mounted on its
walls again
/🆑
## About The Pull Request
fixes#94729
## Why It's Good For The Game
cleaner logs
## Changelog
🆑
admin: siege weapons log in attack instead of attack and game.
/🆑
## About The Pull Request
Adds vitals monitors to medbay
<img width="368" height="292" alt="image"
src="https://github.com/user-attachments/assets/af32ef4b-5d20-4d9d-bb0d-bec554dd4dbc"
/>
These are wall mounted monitors that display a patient's state visually:
- The doll on the left shows bodypart damage + missing bodyparts
- The droplet next to the head shows blood level, from a bright red to a
grey
- The top bar shows heart rate (an approximation - stops when dead,
speeds up in hard crit), as well as overall health
- The second to the top shows respiration (stops when not breathing)
- Second from the bottom bar shows oxyloss level
- Bottom bar shows toxloss level
You can **examine** a vitals display to get a condensed health analyzer
output to your chat. (This lets the AI see health scans as well)
They beep as patient conditions betters or worsens, though I didn't add
any sound FX to it (yet), it's just a runechat message.
They can link to most machines that accept an occupant - such as cryo
cells and stasis beds - as well as operating tables.
They are printable in two forms - basic and advanced, the latter
requiring tech and does advanced scans on examine, rather than basic
scans.
The displays are mapped in every surgical theatre, as well as over most
stasis beds and by a few cryo cells.
## Why It's Good For The Game
I made these to cut down on juggling the health analyzer when trying to
determine how a patient is faring. (And also to add to medical larp.)
Currently while monitoring a patient's state you have to spam click them
with your scanner and fill up your chat.
This is cumbersome and distracts you from the rest of chat.
The vitals display provides a visual feedback for how a patient is
doing, no spam clicking needed unless you need specific details like...
organ health.
Some other benefits:
- AI can now monitor patient health without a shell.
- Other doctors don't need to crowd around a patient, they can step back
to watch the screen instead.
- Visitors don't need to rush in and print an analyzer to see how a
patient is doing either.
## Changelog
🆑 Melbert
add: Adds vitals monitors, mapped into the medbay treatment center,
cryogenics, and every surgical theatre. They act as wall mounted health
scanners, providing visual feedback for a patient's health.
/🆑
## About The Pull Request
if a surgery table has a patient on it, and you click it with a surgical
tool, it redirects the click to the patient instead of placing the tool
on the table
## Why It's Good For The Game
sometimes you misclick on the one pixel of transparency and the tool is
lost to the sands of time. this is annoying
## Changelog
🆑 Melbert
qol: If a surgery table has a patient on it, and you click it with a
surgical tool, it redirects the click to the patient instead of placing
the tool on the table
/🆑
## About The Pull Request
Floppy disks received a sprite upgrade, as well as unique wraps:
<img width="364" height="150" alt="image"
src="https://github.com/user-attachments/assets/0ac433e3-7432-4c06-bec2-aeae00b6852f"
/>
<img width="786" height="527" alt="image"
src="https://github.com/user-attachments/assets/0f36bd0d-0362-4431-8131-49060a2fe348"
/>
You can now stack floppy disks! They also scatter around when thrown.
The video also showcases new styling options with a selection of
stickers! You can also write something on the disk instead of selecting
an icon:
https://github.com/user-attachments/assets/ff0a8542-9d79-4108-ae46-672ca5d620a2
MOST disks now inherit the `/item/disk` type to properly stack and do...
stuff. An updatepaths script included.
## Why It's Good For The Game
Old school is cool. Stacking disks makes them feel more authentic, while
styling allows for more crearivity!
## Changelog
🆑
add: New unique wraps for floppy disks
qol: Floppy disks can now be stacked
image: New sprites and stickers for floppy disks
map: Added and ran an updatepaths script
refactor: Most disks are now under the base disk item type
/🆑
---------
Co-authored-by: The-Tyrant <tyrantofgaming@gmail.com>
## About The Pull Request
1. Eigenstasium can no longer be splashed onto lockers to link them
2. Maintenance lockers can rarely be linked to another locker on the
station - any locker, including head of staff lockers. This has a 0.1%
chance, which amounts to a ~5% chance to spawn on a map with 50 lockers.
3. Teleporting via an eigenlocker no longer opens up the opposite side,
allowing you to jumpscare people
## Why It's Good For The Game
1a. Eigenstasium's lockers are both significantly easier to produce and
significantly easier to use than our "intended" method of spot-to-spot
teleportation, the Quantum Pad.
There is an argument to be made in that the Quantum Pad needs to be
brought up to this level, and I may do that, because honestly, it's a
valid point. But in the meanwhile, it doesn't really make sense that
Chemistry can make better teleportation... than the teleportation
department.
1b. Eigenstasium wears too many hats. It really is a wonder chem. It
intrudes on other mechanics of other jobs and frankly doesn't need the
extra sauce, it's already interesting enough.
If your wikibox has a *collapsible*, it might be doing too much....
<img width="1567" height="397" alt="image"
src="https://github.com/user-attachments/assets/969b6d32-5e85-42a1-8d3b-7769b6968b95"
/>
2. However, teleporting lockers are funny. We have the station trait,
but it announces itself and affects (potentially) every closet, which
ruins some of the mystique. So I wanted to add that effect as something
you can stumble upon in the wild accidentally - Imagine hopping into a
locker in maint to dodge sec and you end up in the Captain's office.
3. Builds off of 2. Finding a locker that teleports you into the middle
of security so you can jump out and surprise them the next time they
show up sounds really funny.
## Changelog
🆑 Melbert
del: Eigenstasium can no longer create Eigenlockers
add: Rarely, maintenance lockers will spawn as Eigenlockers, potentially
linked to any other locker on the station - yes, even the Captain's.
add: Teleporting via an Eigenlocker doesn't auto-open the destination
locker, allowing you to hide in them.
/🆑
## About The Pull Request
Applies `/datum/component/free_operation` when buckling mobs to stasis
beds or surgical tables
## Why It's Good For The Game
The only reason we still have drapes is because otherwise, trying to
help intent click on a mob with a saw will result in attempting surgery
instead of attacking them
In other words drapes serve as an explicit "I WANT TO PERFORM SURGERY"
check
However we can get that explicitness from other things, such as buckling
someone to the designated surgery places
This ultimately leaves drapes as **entirely optional** in a surgical
setting (...Maybe it can provide a speed bonus for being sanitary or
something?)
## Changelog
🆑 Melbert
add: You can skip the "apply drapes" step of surgery if the patient is
buckled to an operating table or stasis bed!
/🆑
## About The Pull Request
Primarily adds a loop to moisture traps which is mostly silence,
interrupted by the solemn sound of a water droplet falling. Just like
the sprite be doing, y'know?
I decided to make it a simple loop, instead of doing a little extra and
setting that sprite animation up to play only when the sound effect
plays, as I'd have to make moisture traps process to call `flick` - and
I wasn't sure if that's worth it.
The sound effect is from:
https://freesound.org/people/mattfinarelli/sounds/533146/
## Why It's Good For The Game
Adds just a drop of ambience to the maintenance shafts.
## Changelog
🆑
sound: Added more atmospheric sounds to moisture traps
/🆑
## About The Pull Request
Merry Christmas!
This PR expands on the more gruesome areas of chef content, such as
cannibalism.
Human limbs can now be individually butchered for their meat and skin
with a knife or another butchering implement once the skin has been cut
and retracted (forks now can be used as bootleg retractors). If the limb
contains organs, those will need to be removed first, which also can be
quickly performed with a butchering tool at the cost of damaging the
inhards (head and chest will require the bone to be cut first, which can
be done with a butcher's cleaver if you don't have a saw)
You can also butcher humans whole by right clicking them with a
butchering implement on combat mode, which will attempt to gut/cut apart
the selected limb. Obviously this requires the limb to be prepped first,
so meat hooks/kitchenspikes now allow mobs strung on them to be operated
on without needing drapes. Its a pretty bad spot to be performing
surgeries at though, so beware! Torsos can only be butchered after all
other limbs have been. The gutting/butchering delay is based off the
owner's stat, halving if the limb is detached and doubling if the owner
is still alive and kicking.
<img width="392" height="265" alt="dreamseeker_D7QWbWKStd"
src="https://github.com/user-attachments/assets/050d7c25-3572-4b02-ae93-d8efefe54885"
/>
(The video is too large for github)
https://streamable.com/459a0y
After being butchered, most limbs will leave behind a nonfunctional
skeletal limb (with exceptions like jelly limbs with no skeleton inside)
which is always disabled. Skeleton chests husk their owner, so you'll
need to replace it first.
Gibbers now source their meat from the victim's limbs (and not their
species) at an RNG-based percentage based on the matter bin's tier.
As to allow individual limbs to be butchered, you can now perform (some)
surgeries on individual limbs. There are some obvious restrictions like
zombification or bioware surgeries, but most of the ones that make sense
can be performed on someone's chopped off head as long as you've got the
tools.
Wounds also contribute to surgeries now, major slash wounds count as
cut/open skin (and sealing the vessels would reduce their bleed rate),
and critical blunt wounds count as sawed bones.
I've refactored gibbers, butchering and meat spike code as well as fixed
some backend bugs while I was at it.
## Why It's Good For The Game
While rather gruesome, I feel like the freedom which these mechanics
provide fits us pretty well. We already have plenty of nasty stuff and
this doesn't really go that much further, and a chef serving their own
leg in their dish is pretty funny. (Also you can scrape plasma off
plasmamen bones)
## About The Pull Request
This PR changes it so that if you commit suicide via handheld experiment
scanner, all of your belongings are placed inside the resulting toilet's
cistern rather than just your brain.
## Why It's Good For The Game
It was pointed out that most forms of suicide that "destroy" the body
preserve the items, while this one does not.
This is largely a measure for ensuring that various items required for
traitor objectives or other reasons are not destroyed.
## Changelog
🆑
fix: Meat toilets will now contain all of the belongings they were
wearing prior to transformation, which can be retrieved if the cistern
is open and the lid is closed.
/🆑
## About The Pull Request
As title says, right clicking on a closet with an item now opens or
closes it. Makes sense you'd be able to do that by using your shoulder
or feet.
## Why It's Good For The Game
Makes inventory management a bit easier and lets players offload their
backpacks into lockers easier (when they actually do so for once)
## Changelog
🆑
qol: Right-clicking closets with an item now opens/closes them
/🆑
## About The Pull Request
The overall behaviour of everything should stay the same but the memory
& speed of these components has been slightly improved and when you
scale that across large plumbing factories you get a substantial
improvement. Here's a list of the most noticeable changes along with
many others that aren't worth mentioning
- Removed vars `use_overlays`, `turn_connects`,
`recipient_reagents_holder`
- `active` var is now replaced with a proc which simply returns is the
machine wrenched or not
- `turn_connects` has been removed because all machines have their pipes
rotate when the machine is rotated. This also removed all the static
icon states ending with `-s` from the `dmi` file thus reducing that file
size as well
- `extend_pipe_to_edge` var is directly integrated into `cut_overlays()`
because it's use cases were limited such for showers & sinks
- Simplified `Initialize()` a lot. Removed params `start`,
`turn_connects`, `custom_receiver`, `extend_pipe_to_edge`. We now only
pass `bolt_layer` making that proc faster & less convoluted
- Replaced `set_recipient_reagents_holder()` proc with
`recipient_reagents_holder()` which returns the reagent holder for
holding reagents instead of storing it in the component. This removes
the need to hook a qdel signal on the holder & we don't need to keep
track of it
- Merged a ton of procs to reduce overhead & reduce file size
- Plumbing ducts creating the network at mapload is faster without using
recursion and the timer subsystem
- Deconstructing plumbing ducts is faster in reconstructing the network
without using recursion and the timer subsystem
This makes managing plumbing code less convoluted & overall better for
the foreseeable future. See the lines of code removed vs added and still
preserves behaviour
## Changelog
🆑
qol: added examines & screentips for ducts & stack of ducts
qol: you can wrench a stack of ducts on the ground to create a pipe
refactor: plumbing code has been improved overall. Report bugs on github
sprite: removed unused static(does not rotate with machine) icon states
for plumbing connections
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
I neglected platforms, whoops. Also, while we are at it refactors to use
the connect_loc element further reducing instances of connect_loc_behalf
components, and fixes a bug in disarm code with checking for a flag
using && instead of & that I randomly stumbled upon
<details> <summary> Working </summary>
<img width="1461" height="804" alt="image"
src="https://github.com/user-attachments/assets/fa6fc773-94a8-488e-840d-d1d3d2070a29"
/>
</details>
## Why It's Good For The Game
Fixes a runtime
## Changelog
🆑
fix: fixes tablesmashing onto platforms
/🆑