Skip to content

Upstream 2026-06-04#137

Merged
Bruh-24 merged 48 commits into
masterfrom
upstream
Jun 5, 2026
Merged

Upstream 2026-06-04#137
Bruh-24 merged 48 commits into
masterfrom
upstream

Conversation

@mass-bot

@mass-bot mass-bot Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

🆑 MassMeta
add: Upstream 2026-06-04
/:cl:

Fghj240 and others added 30 commits June 2, 2026 17:43
…96263)

Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
## About The Pull Request
-Log outcomes of random recipe init
* Whether recipe failed to load, and why
* Whether recipe failed to generate, and why
* Whether recipe regenerated due to conflicts, and how many attempts it
took

-Stop saving random recipe results to the persistence file
* They aren't randomized anyway

-Split recipe loading and recipe generation into separate procs
* It was kind of a mess
* This way, you can regenerate recipe without qdel'ing it and then
reinitializing

-Generate recipe if it failed to load
* We used to qdel it instead

-Consider recipe generation to be a failure if there aren't enough valid
ingredients or catalysts
* We used to only check whether possible ingredient list is empty
* Since the possible ingredient/catalyst lists don't change from round
to round, this could probably be made into a unit test in the future

-Reorganize random recipe conflict checks to make them more streamlined
* I had to do it in order to log regeneration outcomes

-Fix bugs which won't ever matter anyway
* optimal_ph_max no longer rolls above 14
* optimal_ph_max can no longer be below optimal_ph_min + 1 (we used to
check for CHEMICAL_MIN_PH + 1, which is just 1)
## Why It's Good For The Game

Logs help spot&diagnose issues which might not come up when testing
locally, like the issue where timestamps wouldn't update which was fixed
by #95895
## Changelog
:cl:
fix: random recipes can no longer have upper pH bound above 14
/:cl:

---------

Co-authored-by: l0 <-->
## About The Pull Request
Just made it acctually check if we even have a seethrough map before we
bother assigning it so we dont make stumps see through which seems
rather silly.
## Why It's Good For The Game
Its not even a tile tall. Why would we need that.
## Changelog
:cl:
fix: Stumps aren't see through
/:cl:
## About The Pull Request
I originally just wanted to change the logging for this so that it's
more helpful for mappers, but I realized that this test doesn't cover
the case where a mapper mistakenly connects a illegal area into the air
loop, so I implemented that.

I had to remap Catwalk so that the actual server room was isolated from
everything else. I tried to keep everything intact to the best of my
ability but there simply wasn't much room.

Also, I added a new subtype for the supermatter engine's area, and
included an UpdatePaths file for it. Behaviour should be identical
across the board.
## Why It's Good For The Game
So we can be 100% absolutely definitely sure we didn't attach the waste
loop inside the supermatter engine.

## Mold Spore

<img width="400" height="400" alt="image"
src="https://github.com/user-attachments/assets/f231ba77-097d-4365-b467-17580aceae14"
/>
## About The Pull Request

Stasis bags now properly become not dense when closed like every other
body bag.

Also makes the names for body bags consistently two words (bodybag ->
body bag), and fixes a typo (sinched -> cinched) in both icon states and
descriptions.

## Why It's Good For The Game

Stasis bags should probably stop being dense like every other body bag
when closed, actually. The grammar thing was just because I noticed it
and the inconsistency bugged me - from what I've seen, body bag is
generally two words and not just one, especially on the base type, so I
carried that down to every other body bag type. (Even if it is easier to
just type bodybag, all one word...)

## Changelog

:cl:
fix: Stasis body bags are no longer dense when closed.
spellcheck: Fixed a typo relating to the spelling of "cinched" in body
bags with buckles (prisoner bags, et cetera).
/:cl:

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
…ils to spawn said lava (#96324)

## About The Pull Request

If drake swoop (the one where it creates a box of fire around you) fails
to spawn lava underneath it instead creates a fire visual (not an actual
hotspot, does not set you on fire) and gives a separate text instead of
claiming you fell into nonexistent lava

## Why It's Good For The Game

Consistency

## Changelog
:cl:
fix: Drake swoop no longer misleadingly claims you fall into lava if it
fails to spawn said lava
/:cl:
## About The Pull Request

Change var when changing to not null

## Why It's Good For The Game

14 damage weapon that attacks two tiles away:

## Changelog
:cl:

fix: Material spears no longer partially avoid the force malus from
being unwielded

/:cl:
## About The Pull Request

Lack of KEEP_TOGETHER on some mobs (unlike objects and blood overlays,
we operate under the assumption that all mobs have KEEP_TOGETHER and
thus all of our code is designed to support it) caused brimdust overlay
to leak through onto other objects

## Changelog
:cl:
fix: Fixed brimdust overlay on wide mobs leaking onto other objects
/:cl:
tgstation-ci Bot and others added 16 commits June 3, 2026 22:14
## About The Pull Request
Changes the apprentice ghost poll to use the mid-round wizard pref
instead of the round-start one.
## Why It's Good For The Game
Same reasons as #96061, you can't roll this round-start, so it really
shouldn't use the round-start pref.
## Changelog
:cl:
code: Wizard Apprentices now use the mid-round wizard pref, instead of
the round start wizard pref.
/:cl:
## About The Pull Request

Fixed infiniti printing via NT shop app

Closed tgstation/tgstation#96154
## Why It's Good For The Game

So I would made a 10 PDA at maints, at different places with integrated
circuits, and also these PDAs on looped conveyrs, so they are moving at
the circle, so then when TIME HAS COME, I would send via one button
circuit-transmitter the signal to 10 PDAs to buy one cheap goodie for 28
credits, then cancel the purchase, than buy again, than I spam that
button, or better, I would use clock, so its only one click for 5
purchasing at 1 tick on 1 PDA, so 1 PDA is 5 papers, so 10 PDAs are 50
papers, so 2 ticks are 100 papers, 3 is more and more, and all that shit
on conveyers, so its 1000 papers, which are moving at circles with
insane speed at only 20 ticks,

but now its not possible
## Changelog
:cl:
fix: fixed NT shop printing infiniti papers, now its linked to
computer's(laptop, pda, any) paper storage
/:cl:
…y certain mobs unless broken (#96223)

## About The Pull Request

Smartfridges update their `pass_flags_self` & `can_atmos_pass` when
they're broken. Currently, they are always `PASSMACHINE` & atmos can
only pass when unanchored, and with this change, they are
`PASSCLOSEDTURF` until broken into `PASSMACHINE`, & they stop blocking
atmos when broken.

## Why It's Good For The Game

Smartfridges are placed inline with walls, take up a wall's worth of
icon size, block atmos like a wall, and yet can be flown over like
they're a little computer. They also continue to block atmos when
they've had their perfectly sealed glass broken open. Neither should be
the case.

## Changelog
:cl:
balance: Smartfridges no longer block atmos when broken & no longer let
creatures pass until broken
/:cl:
## About The Pull Request
fixes tgstation/tgstation#96158
and fixes tgstation/tgstation#95099

basically, fixes duplicate abilities on slimepeople if they are a
moonatic, and fixes lock path not having their well-deserved discounts
for the shop

## Why It's Good For The Game

## Changelog

:cl:
fix: moonatics switching bodies (including slimeperson swap) giving you
duplicate action buttons
fix: lock path not having 1 point discounts
/:cl:
## About The Pull Request
Fixes #68995

Hello! This is my third-first SS13 PR. Accordingly, I thought I'd go for
a simple bugfix. It turned out to be a slight bit more difficult than
expected, but as a whole it's relatively short.

Essentially, the discounts gained from toxins papers do not show up on
research consoles. They still apply in code, but a zero-cost node will
sometimes appear at its regular price in UI. After a substantial amount
of confusion, I determined that this was due to the discount data simply
not being passed to UIs at all.

For both ease of handling the discounts and their passing as static
data, I have refactored discounts from a singular nested list on
techwebs (`boosted_nodes`) to a less complex list per tech node
(`discount_boosts`). While coding, I have attempted to preserve the
(presumably unused) capacity for discounts to vary by research point
type. It does seem that discounts were only ever applied as general
research points, but it should be easier if anyone ever intends to
implement other point types.
## Why It's Good For The Game
Visual bugs cause confusion, and this PR fixes one. It's also a bit odd
that toxins discounts weren't passed to UIs in the first place.
## Changelog
:cl:
fix: Made discounts from toxins papers show up in research UIs properly.
refactor: Refactored research techwebs such that toxins discounts are
now stored per techweb node rather than per techweb.
/:cl:
## About The Pull Request

Thanks to Absolucy for finding this one

## Changelog

Not player facing

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
@Bruh-24 Bruh-24 merged commit 1b1dcf5 into master Jun 5, 2026
28 of 32 checks passed
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.