Commit Graph

46601 Commits

Author SHA1 Message Date
Ghom 4e1eb514b5 Flash and flasher refactor/rework (simple mobs no longer immune edition) (#93076)
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2025-10-15 13:49:11 +11:00
Roxy f3848f1ef2 Renames flatten_list proc to assoc_to_values (#93453)
## About The Pull Request

`/proc/flatten_list()` -> `/proc/assoc_to_values()`, also changes the
code doc to mirror the language of `assoc_to_keys()`'s code doc

## Why It's Good For The Game

Having a proc called `assoc_to_keys` that takes an associative list and
returns a list of the keys, and also having a proc that takes an
associative list and returns a list of the values, and the latter not
being called `assoc_to_values` is very funny

## Changelog
🆑
code: renamed flatten_list proc to assoc_to_values
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-10-14 21:01:09 +00:00
Fghj240 cb7b00c3a7 The health analyzer can now tell the difference between curable and incurable traumas (#93433)
## About The Pull Request

TRAUMA_RESILIENCE_MAGIC traumas are now called "Persistent" traumas, and
the health analyzer tells you they can be treated with magic.
TRAUMA_RESILIENCE_ABSOLUTE traumas are unaffected.

## Why It's Good For The Game

Makes it easier to understand why some permanent traumas can be cured
while others can't. Also it's kind of weird that a curable trauma is
called "permanent", but also these are two different resiliences and
they shouldn't share a name anyways.

## Changelog

🆑
qol: Health analyzers now tell the difference between curable and
incurable permanent traumas
/🆑

Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
2025-10-14 22:35:41 +02:00
Bloop 0e06e2f48f Adds the 'mob_possessor' argument to all the instances of special() (#93410)
## About The Pull Request

a spooky special possession pr for october appears~~

(This is just some code cleanup)
Before, some procs had the `mob_possessor` arg, and some didn't. Which
made it a nightmare to add more positional args to it down the line.
This PR just ensures that all positional args are present in all the
instances of the proc.

## Why It's Good For The Game

Makes this proc chain slightly less of a mess to deal with.

## Changelog

N/A
2025-10-14 22:34:50 +02:00
mcbalaam 1c9e617697 Fixes and QOL for the "Request Internet sound" verb (#93244)
## About The Pull Request

Fixes inverted `tgui_input` arguments. Prettifies both admin and user
outputs.


https://github.com/user-attachments/assets/e91bc950-0117-42b4-add0-45de2295744d

<img width="687" height="202" alt="image"
src="https://github.com/user-attachments/assets/23b6fa14-016d-4357-ae9b-7121226be4a8"
/>

## Why It's Good For The Game

Cleaner code, looks better ingame

## Changelog

🆑
qol: Better output for sound requesting
fix: "Request Internet sound" input window's title and description are
not inverted anymore
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-10-14 22:30:48 +02:00
thegrb93 66e3b9e222 Fix selfsustaining and clusterbuster bugs with extracts (#93415)
## About The Pull Request
Fixes slime extract bugs with selfstaining slime and clusterbuster.
Fixes: #93315

## Why It's Good For The Game
Fixes slime extract bugs
## Changelog
🆑
fix: Self sustaining slime and clusterbuster now correctly fill required
reagents
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-10-14 18:33:43 +00:00
MrMelbert 65bd5e581a Beaker panel TGUI / At least makes it functional (#93398)
## About The Pull Request

Makes Beaker Panel a TGUI so it actually works

<img width="787" height="295" alt="image"
src="https://github.com/user-attachments/assets/343056d2-f059-473d-a1eb-5604d2c3a38e"
/>

There's a lot more I want to do to this UI, namely UX and more features
(like changing grenade types) but I figured I should PR it now that it's
bare minimum functional so I don't get eaten by scope creep

Fixes #89954

## Changelog

🆑 Melbert
admin: Spawn-reagent-container works again, and it's a TGUI
/🆑
2025-10-14 20:20:15 +02:00
Fghj240 ccf799133c Non-admin spawned atlas gravitronic spinal implants now use their intentional(?) sprite (#93428)
## About The Pull Request

so apparently there are two sprites for herculean gravitronics, one with
the core in and one without, but the code for adding a core to the
gravitronic doesn't actually change the sprite so it's unused unless an
admin spawns in an atlas with a core already in it which in that case
it'll have the sprite.

This single line of code makes the sprite change when a new core is put
in.

yes I tested it no it's not a web edit

## Why It's Good For The Game

bugfix

## Changelog

🆑
fix: Atlas gravitronic spinal implants now use their intended sprite
/🆑

Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
2025-10-14 00:11:18 +02:00
FalloutFalcon e95fbc547c ghost basic mobs use natural hair colors (#93437)
## About The Pull Request
<img width="1142" height="956" alt="image"
src="https://github.com/user-attachments/assets/6395e71d-cecd-42f1-a0b7-ebf322a3cb65"
/>

## Why It's Good For The Game
I have no whimsy and am repulsed by the funny colors (standardization
for how the rest of human hair color selections is done.)
## Changelog
🆑
fix: ghost basic mobs use natural hair colors
/🆑
2025-10-13 20:47:19 +02:00
Xander3359 bbe729aef7 Converts more attackby's to interactions (#93106)
## About The Pull Request
Converts the following:
- Medical Kiosk
- Implant case
- Flamethrower
- Chemical implant case
- Pappercutter

Also I've looked at some alt click procs and adjusted some of their
returns
2025-10-12 22:40:42 -05:00
Hatterhat 17303dfe7b syndicate modsuit visor pseudo-toggle (tied to combat mode) (#93391)
## About The Pull Request

The visors on MODsuits using the Syndicate welding visor (now renamed
the "flash-protected optical suite") now toggle their armor booster
overlay depending on whether the user has combat mode on or off.

## Why It's Good For The Game

Style. Listen, man, I just thought it'd be a shame if the cool visor
sprites never got used again.


https://github.com/user-attachments/assets/d5103168-7a1e-4405-adb3-53420c8601d7

## Changelog

🆑
add: The visors on MODsuits that used to have armor boosters now visibly
toggle based on whether the wearer is in combat mode or not.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2025-10-13 00:28:39 +02:00
MrMelbert e85674d366 Unified CMO blues slightly, updates garment bags slightly, updates CMO locker contents slightly (#93321)
## About The Pull Request

### CMO palette update

Before - after

<img width="533" height="324" alt="image"
src="https://github.com/user-attachments/assets/c8a843a6-875d-4796-8c62-d24dd509147b"
/>

Logical follow up to #93313 and #91902

CMO now has a backpack which matches their teal palette rather than
re-using the medical doctor's blue backpack

CMO now starts with white sneakers instead of blue sneakers

### Garment bag update

Garment bags can hold backpacks, duffels, etc. 

However they CANNOT store backpacks which have ANY contents, so no risk
of storage nesting memes here.

### Misc

Removed the defib mount from the CMO's closet

Minor bugfix for being unable to swap storage positions of items which
were instantiated in a storage

## Why It's Good For The Game

- Much like the Paramedic, the CMO has had many cooks which have not
always been on the same page, so this makes their sprite a bit more
coherent.

- Heads with unique packs just tossed them in their closet which is
pretty spammy given we have four variants now. Putting them in the
garment back makes sense.

- Defib mount in CMO's locker hasn't been necessary for a while now that
all treatment centers spawn with defib mounts.

- Bugfix.

## Changelog

🆑 Melbert
image: CMO now has unique backpack/satchel/etc. sprites which matches
their teal palette.
image: CMO spawns with white sneakers instead of blue sneakers.
qol: Garment bags can hold empty backpacks/satchels/etc.
del: Defib mount removed from CMO's locker.
fix: Items stocked in a storage item by default can be
mouse-drag-swapped like any other item.
/🆑
2025-10-13 00:16:49 +02:00
SyncIt21 978e662314 Fixes circuit multitool revealing special items (#93419)
## About The Pull Request
- Fixes #93409

Code copied from strip menu so the same principles apply

## Changelog
🆑
fix: circuit multitool won't reveal special items on mobs
/🆑
2025-10-12 23:54:09 +02:00
Bloop b7402b77c2 Changes cat tail define from FEATURE_TAIL to FEATURE_TAIL_CAT so it matches the rest (#93426)
## About The Pull Request

Just a simple find + replace PR. All the other tail defines match their
text strings, but for some reason cat tails are just `FEATURE_TAIL`
which is inconsistent.

## Why It's Good For The Game

Consistency, + a lot of downstreams have a generic "tail" feature key
which is distinct from cat tails, so not taking up that define is
better.

## Changelog

Nothing any players would notice
2025-10-12 23:51:54 +02:00
SyncIt21 d830b73b10 Fixes 2 order console bugs (#93417)
## About The Pull Request
- Fixes #93416
- Order console displays correct Private/Department order text amounts

## Changelog
🆑
fix: order console correctly differentiates between private & department
orders
fix: order console checkout cart displays correct Private/Department
order text amounts
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2025-10-12 23:49:46 +02:00
Bloop 145b70cafc Fixes backwards istype() check (#93420)
## About The Pull Request

Came across this randomly, looks weird, and I think it always just would
evaluate to FALSE which is definitely not the intention.

## Why It's Good For The Game

Fixes a bug

## Changelog

🆑
fix: integrated toolset and integrated paperwork implants can be emagged
for an integrated combat knife and chameleon stamp, respectively (fixed
a bug preventing that from working)
/🆑
2025-10-12 15:25:54 +03:00
Gaxeer 7468a0fbcf refactor detective scan categories, fix some categories not being shown at all, remove Syndicate scan category (#93138)
## About The Pull Request

Refactor detective scan categories.
Fix some categories not being shown at all.
Remove Syndicate scan category.

<details>
<summary>TGUI</summary>
<img width="514" height="545" alt="image"
src="https://github.com/user-attachments/assets/754ce576-545e-40e5-9fad-86f19d8d2606"
/>
</details>

<details>
<summary>Paper report</summary>
<img width="460" height="609" alt="image"
src="https://github.com/user-attachments/assets/e37e1965-e90a-4e0c-8109-f4384d6a4a79"
/>
</details>


## Why It's Good For The Game

DETSCAN_CATEGORY_SETTINGS, DETSCAN_CATEGORY_HOLY,
DETSCAN_CATEGORY_ILLEGAL and DETSCAN_CATEGORY_NOTES are now shown in
detective scanner ui and printed report.

Cleaner code

## Changelog

🆑
fix: energy dagger pen report will be now shown in detective scanner and
also all items that transform will have additional note about it
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2025-10-12 05:44:56 +02:00
SmArtKar 4d648d016c Sleeping Carp and Cain & Abel no longer tell you about armor penetration when you reflect projectiles with them (#93275)
## About The Pull Request

Projectile refactor pulled armor check above the pre-hit comsig, this
fixes that. No need to check armor before you're hit when you
potentially will not be.

## Changelog
🆑
fix: Sleeping Carp and Cain & Abel no longer tell you about armor
penetration when you reflect projectiles with them
/🆑
2025-10-12 05:39:43 +02:00
ArchBTW f5ab9dbe01 Fixes riot shotgun unintentional melee when point blank shooting (#93320)
## About The Pull Request

Due to 'fire_delay = 8', when pump racking a riot shotgun (with a live
shotgun bullet in it) it will instead melee when you try to point blank
shoot at someone.
This PR fixes that by blocking melee, on the condition that you pump
racked the riot shotgun and it is about to be ready to fire.

You still melee with LMB if you have no ammo pump racked/didn't pump
rack the shotgun, and if you have ammo pump racked, you can use RMB as
intended.

tldr Melee combat functionality for riot shotgun remains unchanged, the
PR only fixes the unintentional melee attack.

## Why It's Good For The Game

The PR fixes unintentional tediousness when wanting to fire at someone
point blank with a riot shotgun - It will no longer melee, which is
good, because otherwise it makes arbitrarily make riot shotgun cooldown
longer due to an unintentional melee attack.

## Changelog

🆑 ArchBTW
fix: Fixes riot shotgun unintentional melee when point blank shooting
/🆑
2025-10-12 05:38:27 +02:00
necromanceranne 8166d8f357 Turns the chaplain's energy swords into...energy swords. (#93394)
## About The Pull Request

The chaplain's energy swords were weird fake energy swords that couldn't
be turned on or off. This is largely because, in the past, we couldn't
easily convert other objects into null rods conveniently. Though we did
get the transforming component, it never was added to the chaplain
weapons. Maybe because there would be a lot of copypasted code.

Now, with the ``nullrod_core`` element, we can easily turn an object
into a null rod. So I did that. It's now an energy sword AND a null rod.
The future is now.

For clarity, the stats on the null rods are identical to before. The
only difference being that it has the ability to switch on and off, and
it now emits light. That's it really. If there are any extra stats I
missed, let me know.

Also adds the carp'sie plushie to the list of wearable objects for
chaplain suit storage.

## Why It's Good For The Game

This has bugged me like, for a really, really long time. And we now have
a lot of the bits and pieces to make more of the null rods actually
closer to the objects they're ripping off.

## Changelog
🆑
qol: The chaplain energy swords now work like energy swords. Turn them
on and off! Light your way with the blade. Light a cigarette with your
blade like a badass. Feel bad that it isn't a REAL energy sword.
fix: The carp'sie plushie now fits in chaplain suit storage.
/🆑
2025-10-12 05:37:29 +02:00
Leland Kemble b83274fec0 Gets rid of lie in contractor kit uplink purchase description (#93400)
## About The Pull Request

It says there's three random items, but that isn't true anymore.
Also, some messed-up spacing.

## Why It's Good For The Game

The syndicate's evil and all, but lying might be a bit too much

## Changelog
🆑

spellcheck: Removed lie about free stuff from contractor kit uplink
description

/🆑
2025-10-12 05:36:10 +02:00
Krysonism cbaf2d663f Fixes living food / creature hybrids not grabbing ghosts or storing brains. (#93405)
## About The Pull Request

This PR fixes a long standing issue where food creatures created with
player brains did not work correctly, due to their code checking for the
brain within their contents, where it was absent.

It also stores the heart used in contents for consistency. 

## Why It's Good For The Game

It lets people enjoy playing as these wonderous creatures, and lets
these strange beasts be revived when destroyed with proper veterinary or
culinary intervention.

## Changelog

🆑
fix: food / animal hybrids like the butterbear and cak now once again
correctly grab ghosts and store brains.
/🆑
2025-10-11 20:29:26 -04:00
MrMelbert da10322dc1 Fix modsuits and defibs (#93373)
## About The Pull Request

Fixes #93359

Caused by #93165

Inventory screen elements were no longer considered reachable, which
broke mousedrop handing on objects that check "is dragging into
inventory slot"

I don't know the best way to fix this yet but I figured the next best
thing would be to make all of these use the `drag_pickup` element, which
skips this reach-ability check

Thus I refactored it slightly to accommodate for items which should
contextually not be drag-pick-up-abble and bam, works like a charm

## Changelog

🆑 Melbert
fix: Dragging defibs and modsuits off your back works again
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-10-11 18:17:23 -04:00
paganiy 33ea581933 Changeling's last resort breaks near obstacles (#93109)
## About The Pull Request

- **fixes** a runtime error that occurred when removing antag info
button from the ling's old body (which became null) after transforming
into a worm.
- **fixes** a bug that caused a worm to appear in the debug room when
spamming the "yes" button in the TGUI alert window
- **changes** the blind range of last resort from 2 to 4, because it has
a short animation now

**Added** the ability for the changeling's "Last Resort" to break
through walls and other objects accompanied by blood, gore, and
disgusting sounds😊


https://github.com/user-attachments/assets/a2f263ec-a809-404f-a001-8d3643ba887b
## Why It's Good For The Game
currently, the explosion from "last resort" feels generic, similar to a
grenade or bomb. As a bioweapon, the changeling's ability should reflect
its biological nature — as if the ling is rapidly expanding its cells,
bursting its own body to rupture the surrounding environment and
explode.

regarding the ability to break walls: the current design allows for a
counter-play strategy of quickly building walls around a ling (it takes
like 10 seconds or less) who is in stasis or accumulating reagents for
last resort. While containing a ling in proper cell is valid roleplay
(like for science), this "fortnite-style" walling tactic feels cheap.
The intended design of the ability is to force the destruction of the
ling's body, not to allow them to be permanently walled in with no
option other than ghosting.

Yeah, i know that players will just build a cell that's 2 walls thick or
even bigger, but i think that's fiiine.
## Changelog
🆑
add: changeling's last resort ability now can rupture surrounding them
walls and other objects
add: last resort now has a short animation
balance: increased last resort's blind range from 2 to 4 tiles
fix: fixed several runtimes related to changeling's last resort ability
sound: added a gore sound effect to last resort explosion
/🆑
2025-10-11 14:56:34 -07:00
Tim b7026b5993 Water helps heal liver slowly (#93367)
Co-authored-by: Lucy <lucy@absolucy.moe>
2025-10-11 06:47:56 +00:00
MrMelbert dd8af45715 Fix soup pots being unreachable (#93377)
## About The Pull Request

Caused by #93165 

I'm not sure but I think this was just missing a check for
`TRAIT_SKIP_BASIC_REACH_CHECK`, because soup pots are given that trait

## Changelog

🆑 Melbert
fix: You can interact with soup pots on stoves again
/🆑
2025-10-11 00:16:15 +02:00
necromanceranne 3bce974300 Restores the base warp_effect object (#93368)
## About The Pull Request

Was deleted in https://github.com/tgstation/tgstation/pull/92216

Should not have been.

## Why It's Good For The Game

Deleting used assets bad.

## Changelog
🆑
fix: The warp sfx now works properly.
/🆑
2025-10-11 00:15:35 +02:00
MrMelbert 0800c75540 Artifically spawned mobs have a vastly reduced penalty for death moodlet (#93348)
## About The Pull Request

Closes #93285

Mood event from the death of a mob spawned "artificially" is 75% weaker,
lasts 80% the duration, and don't compound

An artificial monkey's death will now result 
- -8 * 0.25 * 0.5 = floor(1) = 1 strength moodlet for the average crew
member
   - ...Lasting 30 seconds (unless refreshed)
- -8 * 0.25 * 1.5 = floor(3) = 3 strength moodlet for animal friends
   - ...Lasting 1.5 minutes (unless refreshed)
- -8 * 0.25 = floor(2) = 2 strength moodlet for compassionate crew
members
   - ...Lasting 1 minute (unless refreshed)

Artifical spawning includes
- Moneky Cube
- Xenobiology Console
- "Life" reaction
- Summoned rats
- Spawner grenades
- Cult ghosts

Lemmie know if I'm missing any obvious spawns 

## Why It's Good For The Game

While funny it was not my intention to have Xenobiology / Genetics /
Virology nuke your mood.

## Changelog

🆑 Melbert
balance: Death of artifical mobs (such as monkey cube monkeys) result in
a 75% weaker, 80% shorter moodlet that does not compound with more
deaths.
/🆑
2025-10-11 00:14:54 +02:00
Fghj240 dac24540ec A new type of cybernetic ear, volume-adjusting ears. Also changes the stats of the basic and regular cybernetic ears for consistency (#93362) 2025-10-11 09:10:53 +11:00
necromanceranne 86c499ebc3 Adds the Jaws of Recovery, a specialized form of Jaws of Life for paramedics with heavier limitations. (#93021)
## About The Pull Request

Adds the Jaws of Recovery, a form of Jaws of Life. These spawn in
cabinets in medical, similar to the fireaxe and mech removal tool.

Jaws of Recovery have two heads; prying, like a standard set of jaws of
life, and bonesetting.

Jaws of Recovery cannot be used to open windoors, and cannot be used to
open certain restricted doors. These doors include command staff private
offices, any command specific areas, AI upload areas and security areas
that aren't the brig entrance.

Jaws of Recovery also send out an alarm whenever used to open a door
that is of meaningful significance, like a departmental area. This does
not happen when opening maintenance airlocks, public accessible doors,
external airlocks and the auxiliary base.

The standard Jaws of Life and Syndicate Jaws of Death are entirely
untouched and function as expected.

<img width="240" height="177" alt="image"
src="https://github.com/user-attachments/assets/4e661720-25c7-42b5-963d-707b77d3683f"
/>


## Why It's Good For The Game

In my last PR I removed the broad access available to paramedics.
https://github.com/tgstation/tgstation/pull/92751
I have already explained my reasoning as to why this broad access is a
mistake. This is not anywhere close to that broad access being returned.
This is a slow, deliberate interaction meant to create friction when
someone is moving around using this tool.

Now, obviously, the change was something of a kick in the teeth for
paramedics (which I won't apologize for doing). I hadn't received any
moderate alternatives that sounded like a good idea for months. That is,
until the PR was merged and someone told me about how paramedics over on
Baystation have jaws of life, but they alert people over the radio when
they are used. Seemingly they were as much worried about paramedic
tiders as we are, and they're a high roleplay environment. We clearly
invited a problem on our end that they had sought to resolve because
they too realized that it was a mistake to just give the role this
access.

Now, obviously, [RETA exists to get medical staff into an
area](https://github.com/tgstation/tgstation/pull/92753). That's all
well and good and I like that system. This does not detract from that PR
whatsoever either. This is meant to serve as an extra emergency measure
in the event a paramedic REALLY needs to get into an area while trying
to create some kind of accountability for their actions by telling sec
when they start being used to pry open airlocks. If sec doesn't like how
much the paramedic is invading areas without reason, they at least know
where and when they've been going into locations and might be
incentivized to go investigate.

## Changelog
🆑
add: Adds the Jaws of Recovery. One can be found in a locked glass
cabinet in medical. These jaws of life are restricted on what they can
force open, and alert security and medical whenever they are utilized to
pry open departmental doors. They can't be used to open high security
doors whatsoever. And they come with a bonesetter attachment instead of
wirecutters. You know, for power-relocating your arm.
/🆑
2025-10-10 16:44:57 -04:00
Ghom bf8b97fbae Removed duplicate scream emote. (#93104)
## About The Pull Request
We have two different *scream emote types, not counting the *screech
subtype, and it's a bit of a copypasta, so I merged the two together,
and made the *screech its own type, only usable by human mobs ~~with the
primitive traits, aka monkeys and ashwalkers~~ like before.

## Why It's Good For The Game
Less copypasta. You'll probably have to reset your scream hotkey after
this is merged.

~~Also screeching is simply another emote that played the scream sound,
and human scream stock sounds barely fit it anyway, so we're not losing
much by locking it to monkeys and ashwalkers.~~ Screeching is once more
back on the menu

## Changelog

🆑
code: Merged the human and living versions of the scream emote. Remember
to reset your scream hotkey if it is ever unset.
/🆑
2025-10-10 13:33:14 -04:00
Cyan d4d5a9a9ac Moth Emotes for the masses. (#93282) 2025-10-10 11:48:23 -04:00
SmArtKar 157d88d39d Visual and balance changes to brimdust sacks and rush glands (#93323) 2025-10-10 13:43:22 +11:00
Ghom aa4cf2b136 The nullrod refactor (the carp-sie plushie is now actually a plushie) (#93311) 2025-10-10 13:42:33 +11:00
Iajret 3559d90340 Fix MOD NVG (non-visor variant) (#93343)
## About The Pull Request
Someone mixed `ADD_TRAIT` and `add_traits` in their head. 

<img width="1266" height="998" alt="изображение"
src="https://github.com/user-attachments/assets/c6055629-ee76-4b31-a7e8-41a1fbb4ef5e"
/>

## Why It's Good For The Game
bug bad, runtime bad, working nukie suits gud

closes https://github.com/tgstation/tgstation/issues/93216

## Changelog
🆑
fix: fixed not working MOD suit NVGs 
/🆑
2025-10-10 03:58:38 +02:00
ArcaneMusic bf4cc3e415 Cargo requests for other departments may now request they come out of the department budget. (#93152)
## About The Pull Request

When placing a cargo request as a non-cargo staff, you may now specify
which department you are requesting this for, which if approved will
bill that department from their budget. Requests placed this way will
need to be approved by cargo staff by default.

Originally I was going to tie this to my proposed rolling permission
system (Think an email chain where if things don't get approved, it goes
up a PDA Message chain until someone approves the thing), however I've
quite stalled on that and I wanted to at least get the baseline
functionality into people's hands.

Cargo, as per usual, has a right to refusal to reject the request as
well.

<img width="797" height="199" alt="image"
src="https://github.com/user-attachments/assets/19889b0a-8af5-4347-b91a-91cc39ab2bee"
/>
_WIP Photos, names/departments only show here as undefined due to being
admin spawned and not naturally spawned players_

## Why It's Good For The Game

Heads of staff can already order crates using their departmental
ordering apps and utilizing their funds, without needing QM approval.
This will allow for crewmembers within a department to request to
requisition supplies using their budget's funds as well.

As it stands, ordering from budget is already quite clunky, and being
able to go to cargo to place a request for your department should at
least elicit a conversation between heads of staff to see if it makes
sense. Keeping in mind, spending too much of a budget's funds can result
in failure to complete paychecks, so there is some conflict that can
arise from interacting with this mechanic too aggressively.

**I'll be real, there's a pretty good chance this may be too easy to use
and too powerful in it's current state.** If it needs something like the
additional rolling permissions system in place in the future, we may
want to re-assess at a later point.

## Changelog

🆑
qol: When placing cargo requests, you can now request that a crate be
obtained using your department's funds as opposed to the cargo budget.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-10-09 21:16:15 +02:00
Da Cool Boss 2a12b4d9c9 Fixes 'bricking' of ballistic laser rifles (#93330)
## About The Pull Request
I don't think these are obtainable through normal gameplay, these guns
are ballistic weapons designed to emulate laser guns, except with a
swappable "battery".

It had the wrong bolt type, which caused problems. It chambered rounds
so it could fire a shot without a battery in it, and worse when it
emptied its chamber and didn't have a new round to load in, the gun
would unrack itself. There is no way to re-rack this gun so at that
point it is made permanantly useless. Now it fires directly from the
clip without chambering anything or caring about whether or not it is
racked. This stops it getting stuck, stops you being able to fire the
gun when there's no power pack loaded, and simplifies ammo management
which makes it feel more like an energy weapon. Even if it isn't really
one.
## Why It's Good For The Game
Fixes some bugs that made using this thing needlessly difficult.
## Changelog
🆑
fix: Ballistic laser guns will no longer brick themselves when out of
ammo.
fix: Ballistic laser guns now fire ammo directly from their loaded clip,
without chambering.
/🆑
2025-10-09 21:13:46 +02:00
necromanceranne 3419def3fa Adds the pipegun monologue to the lore element (#93350)
## About The Pull Request

What it says on the tin.

## Why It's Good For The Game

This is why the element even exists.

## Changelog
🆑
refactor: The pipegun now hints at its deep lore.
/🆑
2025-10-09 20:20:59 +02:00
necromanceranne 204ba28c18 Changes the vorpal scythe to use attack_modifiers (#93356)
## About The Pull Request

What it says on the tin. Otherwise, no functionality change.

## Why It's Good For The Game

This actually cleanly resolves an edge case bug, and this is a weapon
that benefited from this refactor quite nicely.
2025-10-09 12:39:05 -05:00
ArchBTW b0e6e72c45 Makes plumbing synthesizers default to 5u (#93332)
## About The Pull Request

As Chemists, when make our massive plumbing factories we always use 5u
because anything under is pointless, and only makes our plumbing
factories slower, and takes up extra tedious/unnecessary time to setup.

This is simply a QoL change so that we don't have to keep pressing the
5u button when we make our synthesizers (its very tedious when working
on huge factories).

## Why It's Good For The Game

Less tediousness, notably when making huge factories

## Changelog

🆑 ArchBTW
qol: Makes plumbing synthesizers default to 5u
/🆑
2025-10-09 08:07:33 +02:00
SmArtKar 846e2f5c74 Allows kinetic crusher to pick up trophies without being wielded (#93272) 2025-10-09 17:04:38 +11:00
Hatterhat cae0e53145 spawner legion corpses disappear in storms (#93276)
## About The Pull Request

About what it says on the tin. Corpses from spawner legions (e.g. vent
legions, tendril legions) have the storm-hating component, which means
that when a storm starts the body is deleted.

Also makes it so that the `storm_hating` component clears itself when
the atom it's attached to is logged into, so skeletons you do decide to
brainswap into/bodyjack/etc. won't Thanos snap and turn into dust if you
get stormed on.

## Why It's Good For The Game

Ashes to ashes, dust to dust. Prevents corpses from piling up that
badly. I swear this was a feature but I don't know whatever happened to
it.

## Changelog

🆑
qol: The skeletal corpses left from spawner legions (e.g. from ore vent
defenses and legion necropolis tendrils) now disappear during ash
storms. This does not apply if the body gets brainswapped into.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-10-09 04:25:52 +02:00
Ghom 9519866cf6 Any unit test that comes after create_and_destroy no longer cares about the floor (#93344)
## About The Pull Request
`dcs_check_list_arguments` doesn't use the unit test room anyway, nor
should any (so far non-existent) unit test after `create_and_destroy`.
Nonetheless, we cannot enforce these assertions after spawning 99% of
the objects and mobs in the game.

## Why It's Good For The Game
Fixing CI.

## Changelog
N/A
2025-10-08 18:09:11 -07:00
ArchBTW e6ceb7289d Readds Lean (#93310)
## About The Pull Request

Readds Lean

It was a flavor of the month meme, talked about a lot in 2022. Since
2022-2023 it died down.
I'm hoping enough time has passed and the sentiment has changed since
then
We have some fun chemicals like Maldium, Methamphetamine, Fentanyl,
Kronkaine (cocaine), Bath Salts in game

But if it's still not good enough, feel free to close the PR its no big
deal

I've also made the drink more fun and engaging (like when it's used in a
party ICly) compared to last time

## Why It's Good For The Game

- It's a fun drink
- Encourages more parties (IC birthday, etc)
- Incentivizes RP interaction in bar
- More flavorful stuff for bartender
- Another thing would be that SS13 players are special and something
like this, would probably actually incentivize those who don't like to
hang out with others, to take the time to hang out with others.


## Changelog

🆑 ArchBTW
add: Readds Lean
/🆑

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
2025-10-08 17:18:16 +03:00
MrMelbert e83fd2603f Fix buckling and probably a lot more mousedrop interactions (#93352) 2025-10-08 11:47:52 +02:00
Xander3359 7e3caa6eca Adds a safety to uplink discounts, preventing the amount of sales from exceeding the amount of categories. (#93202) 2025-10-08 11:21:38 +11:00
ArchBTW 6163ec0219 Fixes combat mode interaction with chem machines and beakers (#93329)
## About The Pull Request

Currently the Chem Dispenser and HPLC are allowed to be interacted with
using beakers while on combat mode, but likewise, not the
ChemMaster/Chem Heater/All-In-One-Grinder.

This PR fixes that by making the behavior consistent across all the Chem
Machines (if holding a beaker, will put it in, even on combat mode)

## Why It's Good For The Game

More consistent behavior with combat mode
Less tediousness with chems in general

## Changelog

🆑 ArchBTW
fix: Fixes combat mode interaction with all chem machines and beakers
(consistency)
/🆑
2025-10-07 23:27:56 +02:00
die 0204ab8fdd Canreach refactor (#93165)
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147

full credit to @Kapu1178 for the juice

instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
2025-10-07 20:28:59 +02:00
MrMelbert 858c241ae2 Fix screen alert click (#93337)
## About The Pull Request

#93305 rearranged the logic for `alert/Click` but deleted `return TRUE`
at the end which all subtypes rely on

## Changelog

🆑 Melbert
fix: Screen alerts are clickable again
/🆑
2025-10-07 20:08:57 +02:00
SmArtKar 975d3d47ae Fixes certain broken icons in the outfit editor, stripping menu and multiple others (#93319)
## About The Pull Request

``icon2base64`` does not like animated icons and will display an atlas
in TGUI when one is passed into it

<img width="239" height="220" alt="JKneqDL9NH"
src="https://github.com/user-attachments/assets/47e0ffdf-c155-4c84-94ce-c23203281012"
/>

Additionally added some padding between the icon and the slot name in
the outfit editor because it annoyed me

## Changelog
🆑
fix: Fixed certain broken icons in the outfit editor, stripping menu and
multiple others
/🆑
2025-10-07 18:42:17 +02:00