Skip to content

upstream, I suppose? && Adds some of spy unique items to an regular uplink.#33

Merged
Bruh-24 merged 332 commits into
Alliance-codeBase:masterfrom
Bruh-24:master
Sep 18, 2025
Merged

upstream, I suppose? && Adds some of spy unique items to an regular uplink.#33
Bruh-24 merged 332 commits into
Alliance-codeBase:masterfrom
Bruh-24:master

Conversation

@Bruh-24

@Bruh-24 Bruh-24 commented Sep 18, 2025

Copy link
Copy Markdown
Contributor

blah blah blah bleh bleh bleh bleh bleh bleh.
Bottom Text

tgstation-ci Bot and others added 30 commits September 7, 2025 01:47
…ting them. (#92864)

## About The Pull Request

Currently `/obj/machinery/recycler` will just delete anything it eats
and will only extract materials if they are retrieved from
`/datum/component/material_container/insert_item()`. This change adjusts
the recycler to call `deconstruct(FALSE)` on non-item objects so that
they are properly destroyed and any special effects the object
implements for this scenario aren't just lost. This change also makes
the recycler consider if the object being destroyed is a secure, locked
closet to prevent griefing heads by deleting all of their closet items
or exploiting the recycler to possibly get at the contents of locked
departmental orders.
## Why It's Good For The Game

If you insert any non-item object into a recycler it will just straight
up delete it. This appears to me as an oversight, as inserting things
like locked closets/crates will just destroy anything in them, and
things like reagent_dispensers/atmos canisters will completely delete
the gases within. This allows non-item objects to react to their
deconstruction when inserted into a recycler. Items are still recycled
as they were originally.

The alternative is to just prevent the recycler from consuming non-item
objects. At the moment due to my lack of knowledge of all the game's
stuff this may be the safer option. Currently the only safety added on
top of what was already there is to prevent deconstructing locked
closets, but there may be more things I'm not thinking of. However, its
a lot less interesting to me to just block non-items and I would like to
try this first.


![dreamseeker_MHMlibFCIF](https://github.com/user-attachments/assets/3878d7c0-6b82-42bc-b9b1-01a7f7613a2d)

![dreamseeker_zcFl6dTjuQ](https://github.com/user-attachments/assets/3ccaf852-b6e0-4844-a78f-ce52409d32d7)

![dreamseeker_RbOXD2ZvsZ](https://github.com/user-attachments/assets/2fca53eb-4f1f-4091-992f-20c02f9f89de)
## Changelog
:cl: sushi
add: recyclers will now deconstruct non-item objects that they eat
instead of just deleting them
/:cl:
## About The Pull Request

Does what it says, taking the slot machine from 6 seconds to 2 seconds
to spin.

## Why It's Good For The Game

Was playing a round of tram and was annoyed at how slow it was to
gamble. It also makes sense the slot machine goes quick so you waste
your money faster.

:cl: Webcomicartist
qol: The slot machine spins faster, allowing for more time-efficient
gambling.
/:cl:
…ers by making maploaded movables stay put (#92862)

## About The Pull Request

Ever since tgstation/tgstation#91920 we have
been getting a very persistent CI failure downstream, and upon
investigating the transitions of this map seem weird and cut off, almost
like it's taking pieces of the other side and trying to superimpose them
on itself.

<img width="1988" height="155" alt="image"
src="https://github.com/user-attachments/assets/8533f966-2ccd-4e04-8855-384efc9a6e39"
/>

I looked at what it changed, and this line stuck out to me as
suspicious.

<img width="757" height="263" alt="image"
src="https://github.com/user-attachments/assets/79994a3a-1208-49ca-8bfa-280d0c953c71"
/>

It stuck out to me because it seems like it might not appropriately
handle space maps that have terrain near the borders (we have a map that
is surrounded by an asteroid field, for instance, and that's the one
that's been causing issues).

<details><summary>Asteroid field map shown here</summary>

<img width="873" height="801" alt="StrongDMM_BP2oO3sKtf"
src="https://github.com/user-attachments/assets/d177cc89-de9f-4a93-8844-0aa2447edba6"
/>

</details>

~~@Time-Green Do you have any insights to this?~~

~~I am drafting it for now because I don't think this is the right 'fix'
as it will likely interfere with/break the icebox wilderness stuff.~~

~~The main issue is (possibly?) that `atom/movable`s (including these
rocks) which end up on the border of the map transition are being yeeted
into space, on the opposite end of the map, because of their location.~~

~~Movables that are maploaded probably shouldn't be transitioned, might
be the solution there?~~

EDIT: Fairly certain that the issue has been found out, it's due to
movable rocks which are mapped near the edge of the map getting
instantly teleported upon maploading. Seems like this is something we
should prevent from happening.

## Why It's Good For The Game

Fixes an oversight

## Changelog

Not player-facing
## About The Pull Request

Adds text for when you use a stethoscope on a person having a heart
attack(and removes a doubled check for `body_part ==
BODY_ZONE_PRECISE_GROIN` that's already handled with the `switch`)

## Why It's Good For The Game

Closes #92865

## Changelog
:cl:

qol: You can now hear heart attacks with a stethoscope

/:cl:
… than item vending (#92857)

## About The Pull Request

Previously, the arcade game win experiment succeeded upon the machine
calling `prizevend()`, meaning the experiment completed upon tickets
being inserted into the machine, counter to the experiment's text. This
pr changes the experiment to succeed upon the machine calling the new
`victory_tickets()`, which has replaced each instance of a won game
dispensing tickets.

## Why It's Good For The Game

fixes #80218
Standardized ticket dispensing

## Changelog
:cl:

fix: Arcade machine experiment now succeeds on output rather than input
of tickets

/:cl:
…#92842)

## About The Pull Request

While not used elsewhere, the `ListInputModal` component makes internal
use of `act` that isn't needed given the only (current) usage is in
`ListInputWindow`, which handles all of the relevant logic. This PR
removes that, relying instead on functionality passed in via its usage
in `ListInputWindow`.

## Why It's Good For The Game

A downstream of some of these more core interfaces [is intending
to](goonstation/goonstation#24451) nest a
`ListInputModal` in a different interface, and thus letting the
implementation specific functionality be passed in facilitates this.
Closer parity good.
## About The Pull Request
Nerfs the wizard modsuit shield recharges, it takes 20 seconds (double
the original time) for them to start recharging, and they recharge every
3 seconds (used to be 1 second). can tone it down a bit if its too much
## Why It's Good For The Game
I know wizard is meant to be super busted and all that, but a shield
that blocks 5 attacks and it recharges every 10 seconds is extremely
frustrating if not impossible to play against unless you bring a bomb,
specially if they had any form of teleport (i dont think we should make
all antags be only countered by bombs), wizard modsuit is already
stacked with armour, no slips, anti flashbangs and space proofing, i
think the shields are overkill
## Changelog
:cl:
balance: wizard modsuit shield recharges slower
/:cl:
…g (#92794)

## About The Pull Request

A bit absurd, but we allow for this to happen with other alternate pools
(like mansus rifts or hydroponic trays), so I'd say we should let it
slide. (Plus fishing out a second skeleton from someone sounds both
hilarious and extremely cursed)

Closes #92792

## Changelog
:cl:
fix: Fixed organ fishing blocking alternate material rod loot from
spawning
/:cl:
## About The Pull Request

Fixes #85028

Obscured flags and covered flags are tracked on carbons, updated as
items are equipped and unequipped. It's that shrimple.

Closes #92760

Just removes the species exception checks for not making sense

Also refactors handcuffs / legcuffs removal. In all of these situations
they were hardcoded when they could easily just use an inventory proc to
work.

## Why It's Good For The Game

Stops a million excessive calls to `check_obscured_slots`

Makes obscured behavior more consistent

Makes obscured behavior easier to use

Cleans up human rendering (There was some cursed stuff before with
render item -> updated obscured -> update body -> cause side effects)

## Changelog

:cl: Melbert
del: Golems which somehow manage to grow wings and somehow manage to
equip something that covers their jumpsuit can no longer fly.
(Seriously, this will not affect anyone)
refactor: Refactored clothing obscurity entirely. Items should be a
loooot more consistent and what covers what, and should update a lot
snappier. As always, report any oddities, like mysteriously disappearing
articles of clothing, hair, or species parts
refactored: Refactored handcuffs and legcuffs a bit, report any odd
situations with cuffs like getting stuck restrained
/:cl:
…#92766)

## About The Pull Request

What it says on the tin. If you saw a PR similar to this one. You
didn't.

## Why It's Good For The Game

It's really weird that the X-01 is, for whatever reason, inferior to the
energy gun in terms of lethal capacity but not in terms of nonlethal
capacity. I don't really get it, so let's put in two shots.

## Changelog
:cl:
balance: The Multiphase X-01 has 12 lethal shots to match the capacity
of the standard energy gun.
/:cl:
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
Converts the following into item interaction:
- porta_turret
- porta_turret_cover
- plating/foam (Foam plating)
- plate
~cup (and mortar subtype)~
- Recharger
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
Conversion from afterattack to interaction
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

:cl:
refactor: change some attack procs to use item interaction
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
…from turfs when deleted before Moved is invoked on its source (#92860)

## About The Pull Request

* Fixes tgstation/tgstation#92759
* Fixes tgstation/tgstation#81474

The problem is that things like the recycler and bitrunner goal hole
react to the crate Enter'ing them, and within their
`COMSIG_ATOM_ENTERED` handlers will just outright delete the crate.
However, `COMSIG_ATOM_ENTERED` is raised _after_ the crate's `loc` has
been set, so upon its deletion the `element/elevation` that was attached
to it would `Detach` and attempt to remove the `element/elevation_core`
that it had attached to its turf, but will try to do so at the turf it
was moved to, not where it was moved from. Thus, the
`element/elevation_core` would be left on the tile and would still
elevate mobs that moved onto it even though the crate was no longer
there. The second issue linked above goes into more detail about the
bitrunner crate case showing code and such.

This pr attempts to solve this by introducing a new signal,
`COMSIG_ATOM_EXITING`, which is raised in the same fashion as
`COMSIG_ATOM_ENTERING`. It also splits `element/elevation/on_moved()`
into `on_source_exiting()` and `on_source_entering()` so that
`elevation` removes its `elevation_core` from the turf it was on
immediately, before anything has a chance to delete it upon it entering
something.

I'm not TOTALLY confident in this being the proper way to go about this,
but made sure that overlapping elevation things still interact like they
used to, that the `elevation_core` is properly removed upon falling into
a chasm and when entering wormholes, and most importantly that the two
issues listed above no longer happen. This could still be an issue if
there's anyway in game to get an atom to move w/o it going through
`doMove` and raising the ENTERING and EXITING signals so let me know if
there's anyway this can happen!!!
## Why It's Good For The Game


![dreamseeker_8aiK7O3L10](https://github.com/user-attachments/assets/cd5d9439-2851-4d07-9ad8-090edbb533df)

vs


![dreamseeker_SpX6NtHtQG](https://github.com/user-attachments/assets/f15e5572-82a2-4dea-aa9f-7d1a1b455fb3)
## Changelog
:cl: sushi
fix: crates and other objects causing elevation will no longer leave
behind magic elevating turfs upon destruction
/:cl:
## About The Pull Request

<img width="1348" height="569" alt="91YPV6s2tG"
src="https://github.com/user-attachments/assets/4c86243e-ac0d-4d39-8646-f55c314bb9d3"
/>

Saw this amusing runtime-dead bodies spawned in the morgue with
randomized injuries have a chance to spawn with eyes that were damaged
so much as to be qdeleted.

The `check_damage_threshold()` proc occurs before the actual damage gets
dealt, so it is possible to enter the blinking procs with eyelids that
have become null. This just adds a safety check for that.

## Why It's Good For The Game

silly bugfix

## Changelog

:cl:
fix: dead bodies in the morgue will no longer try to blink
/:cl:
## About The Pull Request

yeah

## Changelog

:cl:
fix: Fixed oversight from "Material tab for the autolathe" PR. You can
now eject BS crystals, allien alloy and mythril from autolathe.
/:cl:
## About The Pull Request

https://github.com/user-attachments/assets/57930c18-3001-45d1-9023-58d9fd9f23b4

## Changelog
:cl:
fix: Chemmaster highlights selected icon & has its window scaled up
/:cl:
## About The Pull Request

Toilets no longer act as infinite instant water sources, instead working
like showers and sinks - requiring either plumbing, or water reclaimers
to restore their cistern's supply. If a toilet has a large enough fish
inside, or if someone accidentally drops a small item into it, when
flushing it'll spew out all of its cistern's contents around itself
(Dropped items can be removed using a plunger after a small delay).
Also fixed plunger act code on some plumbing objects, and converted
toilets to use item interactions.

### This is a commission for ImprovedName/Ezel

## Why It's Good For The Game

Makes toilets more intresting with plumbing, and brings them more inline
with other plumbing appliances so that way you can't just make a toilet
with 1 material sheet and conjure a infinite water resouce anywhere you
please without a water recycler.
Also you can get up to some silly stuff with foam production.

## Changelog
:cl:
add: Toilets now require plumbing or water reclaimers to function, and
can get clogged by small items.
fix: Trying to use plungers on plumbing objects will no longer hit them
after finishing the interaction.
code: Updated toilet item interaction code
/:cl:
tgstation-ci Bot and others added 16 commits September 17, 2025 00:28
## About The Pull Request

Fixes the name of XL shotgun darts

## Why It's Good For The Game

"A box full of shotgun darts with increased chemical storage capacity"
barely fits on the screen as a tooltip

## Changelog

:cl: LT3
fix: 'a box full of shotgun darts with increased chemical storage
capacity' now has a shorter name
/:cl:
## About The Pull Request
Caches individual gases for gas reactions.

## Why It's Good For The Game
Makes the lines shorter and more readable.

## Changelog

:cl:
code: Caches individual gases for gas reactions.
/:cl:
## About The Pull Request

Fixes #92374 

<img width="1816" height="169" alt="image"
src="https://github.com/user-attachments/assets/ffd5388b-7844-4ff1-9a35-2a99c6e55e89"
/>

Fixes this, one of the modules makes a door in the rec room which was
missing a firelock sanity marker.

## Why It's Good For The Game

Less flaky CI

## Changelog

Not player facing
…material boulders (#92996)

## About The Pull Request
- Fixes #92972

There were multiple problems with code that I can't be asked to explain
but here is the intended output(`ore_vent_minerals` contains the copy of
the list `ore_vent_minerals_lavaland` which we actually modify & not the
global list itself)

<img width="481" height="241" alt="Screenshot (512)"
src="https://github.com/user-attachments/assets/ed4d2659-b78c-4b99-ae68-e6fad4f116e4"
/>

All ore vents will now have at most 4 minerals but because we use an
associative list it is possible for a mineral to get picked more than
once in the same iteration resulting in old values getting replaced
which isn't a problem but just a point to be known so you don't always
get vents with 4 minerals

Another problem i ran into debugging is that some vents churn out 0
material boulders. That had to do with rounding down of the logarithmic
function which returned 0. We now ensure that never happens

## Changelog
:cl:
fix: ore vents have unique distribution of at most 4 minerals without
rare ones being repeated
fix: ore vents should no longer be produce 0 material boulders
/:cl:
…008)

## About The Pull Request

Currently, for detecting issue-closing fixes, the labeler regex matches
strictly things like:

`Fixes #some_number_here`

but sometimes people will paste the full issues url, which github
renders as the issue number. Problem is the raw text still has the url,
so it will not match when passed through the rest api.

This PR just makes it a bit less restrictive, so that something like
this:

``Fixes https://github.com/tgstation/tgstation/issues/some_number_here`

will correctly get registered as a fix.

## Why It's Good For The Game

More PRs getting autolabeled more correctly

## Changelog

Not player-facing
@Bruh-24 Bruh-24 changed the title upstream, I suppose? upstream, I suppose? && Adds some of spy unique items to an regular uplink. Sep 18, 2025
@Bruh-24 Bruh-24 merged commit 43e31e3 into Alliance-codeBase:master Sep 18, 2025
11 of 23 checks passed
Bruh-24 pushed a commit that referenced this pull request Apr 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.