## 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
/🆑
`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
#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
/🆑
## About The Pull Request
Alternative to https://github.com/tgstation/tgstation/pull/94613
The iconoclast repeater, the handheld version, no longer fires two
pellets but instead fires in a two round burst.
The iconoclast repeater now charges two shots (one trigger pull) every
crank, and the crank takes 0.4 seconds (letting you outpace your shot
rate). However, you cannot charge the gun while moving.
Reduces the damage of the repeater's shots. Now it does 15 lethal force.
Since this is coming out in bursts of two, this means that it deals 30
lethal force in a single pull.
https://github.com/tgstation/tgstation/pull/86867 removed the wielding
requirement but didn't make the weapon heavy. I suspect this was an
oversight so I'm treating it as a fix given the weapon visually appears
to be held in two hands.
Cleans up some repeat variables and nouns.
## Why It's Good For The Game
The repeater has some pretty egregious statistics that put it pretty
soundly above other improvised weapons, but also a lot of manufactured
weapons as well. It has existing downsides, but they're not necessarily
able to be felt because of other oversights to the weapon's design.
This will make sure that the weaknesses are felt while still being a
relatively useful weapon. Pointedly, the gun still kills people pretty
fast if you're in line of fire, but actually pursuing someone while
firing is going to be very difficult. It can still run down unarmored
targets with the amount of shots in the gun, but it can't be used to go
Rambo down the halls, wiping everyone out with your effective machine
gun.
## Changelog
🆑
balance: The iconoclast repeater, the handheld version, no longer fires
two pellets but instead fires in a two round burst.
balance: The iconoclast repeater now charges two shots (one trigger
pull) every crank, and the crank takes 0.4 seconds (letting you outpace
your shot rate). However, you cannot charge the gun while moving.
balance: Reduces the damage of the repeater's shots (both versions). Now
it does 15 lethal force per shot. Since this is coming out in bursts of
two, this means that it deals 30 lethal force in a single pull.
fix: Laser musket type weapons are now heavy weapons.
code: Cleans up some of the code and grammar on the repeater.
/🆑
## About The Pull Request
`adjust_fishing_difficulty` is a good one to make into a bespoke element
since a number of the same clothing item are created in the wardrobe
system.
climb_walkable is also good due to how prevalent it is, and it is a bit
of a two for one since it also removes the need for the
`/component/connect_loc_behalf`
Also stops adding the on_climbable trait to literally everything in the
turf, it now only applies it to atoms with density. So no more pipes and
stuff getting trait lists created for no reason.
<details><summary> Tested + things still work as before </summary>
<img width="422" height="122" alt="image"
src="https://github.com/user-attachments/assets/b23696f5-cd16-4150-aeb3-14ea6bd256fc"
/>
</details>
## Why It's Good For The Game
Lessens overhead, fixes a bug as well.
## Changelog
🆑
fix: fixes a pushed crate not removing on_climbable trait properly off
the mob standing atop it
/🆑
## About The Pull Request
<img width="579" height="67" alt="image"
src="https://github.com/user-attachments/assets/d7a4427e-2a6e-44d3-94ba-c90a2d474984"
/>
Simple rotation components number in the 8-9k range per round, and each
contains a needless callback datum as well.
These do not need to hold any state and can be bespoke elements, and the
proc to do things post_rotation can just be a normal atom proc.
<details><summary>Still works as you'd expect, including items that have
flag requirements like the wrench</summary>


</details>
## Why It's Good For The Game
Makes a heavily used element much more lightweight, saves a few mb of
memory.
## Changelog
🆑
refactor: simple rotation component has been refactored into an element
Please report any bugs to github.
/🆑
## About The Pull Request
- Fixes#94497. Adds atom mount component directly but only for non
shuttle areas
- Hand placed posters are pixel shifted onto the wall and not directly
force moved allowing for stuff like acid/fire to interact with them
- Hand placing posters & signs apply the atom mounted component directly
without calling `find_and_mount_on_atom()`
## Changelog
🆑
code: improves code for placing posters and signs on walls
fix: hand placed posters now interact with fire/acid on their mounted
turf
fix: wallframes in player hands gets consumed when mounted in shuttle
areas
/🆑
<img width="517" height="305" alt="image"
src="https://github.com/user-attachments/assets/e8cd8bcd-dd3c-4733-99fe-0cdfb9799182"
/>
So, been a while, hasn't it? This PR adds three things. First Up: The
Ratvarian Repeater.

The Ratvarian repeater is a mounted gun made from bronze, stock parts,
and some drinking glasses. it is the emplaced counterpart to the laser
musket, as the pipe organ gun is to the crossbow. Being a laser musket
derivative, this means it has the benefit of _infinite ammo._ However,
this also means to reload it, you turn the crank on the back. My
personal headcanon was it works via a spring mechanism not unlike a
watch, so naturally, it turned into a clock-cult flavored weapon. Each
individual volley per winding shoots 12 laser musket shots in bursts of
two.
https://github.com/user-attachments/assets/152c3ce8-3560-4c8a-b618-7f2d81fb75a0
However, this isnt the only thing it's capable of. If you prefer your
weapons more iconoclastic, you can take a welder to the stand, and carry
it around, for the ability to shoot two laser musket shots instead of
one per trigger pull... with the price being a decreased movespeed, and
the second shot having random spread. Also you cant redeploy the stand,
because iconoclasm. Still, the power is there, if you desire it.
Overall, the repeater is the "Expensive but reliable" option of the
three craftable gun emplacements. It has the most work to get, but once
you have it, theres no need for ammo.
On the complete opposite side of the coin, we have the Improvised
Ballista.
https://github.com/user-attachments/assets/16262965-a860-4205-bc3e-eeb8ec593647
This thing is as cheap as it gets - taking iron and wire to make (plus
tools), and fires the classic spears greytiders love for 80 damage. This
sounds like a lot (and it is), but once the ballista has fired - that's
it, and reloading a second spear takes a full six seconds. Of the four
emplaced guns, it has the least damage per firing sequence, but has all
that damage in one big projectile. The ballista overall is designed to
be dirt cheap to make and generally useful, but requiring a lot of work
to keep running.
And lastly, we have the Giant-killer spear.
<img width="417" height="287" alt="image"
src="https://github.com/user-attachments/assets/613379aa-379c-40b3-b4fc-ccdaa5ea4678"
/>
Crafted from titanium, plasteel and seven knives, and then forged by
throwing it into lava this monstrously oversized spear is designed to
fight monstrously oversized... monsters. While only doing 21 damage when
wielded, this damage is multiplied by 3.5 against lavaland fauna,
dealing damage equal to a crusher mark detonation. However, despite the
ease of use, it lacks the ability to mount trophies like the crusher, so
is much more suited to killing basic enemies like legions or goliaths,
rather than megafauna. (It still does decently versus them, but youre
prone to just dying.) Additionally, due to lacking the requirements of
mining access or lavaland monsters, it can be made by the crew at large,
providing them a meaningful defense on lavaland/icemoon. It can also be
loaded into the ballista, so you can, if you desire, show those
ashwalkers how the dark ages were REALLY fought.
<img width="202" height="236" alt="image"
src="https://github.com/user-attachments/assets/d21a7275-3d9e-427b-ac14-fee080541fb5"
/>
This PR has been six months in the making, so it feels good to finally
get it out.
Why its good for the game: Similar logic to my previous improvised
weapon prs; I feel the dichotomy of "High tech laser rifle" and "Gun
made from stuff lying around" is an interesting one. Of the damage
values, the only one that has the potential for a balance issue is the
spear, but due to being basically a plastitanium spear that does better
versus mining mobs, I don't forsee this becoming a weapon that you can
arm an entire revolution with.
## Changelog
🆑 Webcomicartist
add: Added the ratvarian repeater, a craftable emplaced crank laser
weapon that can be carried by hand, themed after clock cult.
add: Added the improvised ballista, the rebar crossbow's bigger brother,
that fires spears. Huge damage, terrible fire rate.
add: Added the giant-slayer spear, a spear made at a necropolis tendril
that does extra damage to lavaland creatures. (Ballista compatible)
image: added sprites for the above.
qol: The pipe organ gun should be easier to light now.
fix: Fixed Pipe Organ Gun firing sprites not always going back to normal
after finishing firing.
refactor: Mounted guns are now EVEN MORE flexible codewise, now
supporting secondary ammo types.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
You can soak a rag in a sink to fill it with water.
Also while I was killing one letter variable I made it so that the
pickle jar interaction that sinks have puts the clean beaker back in
your hand.
## Why It's Good For The Game
A sink is the most reasonable place to soak a rag. I know y'all aren't
dumping beakers of water onto your rags at home.
## Changelog
🆑
add: You can soak a rag in a sink
/🆑