Skip to content

[IDB IGNORE] [MDB IGNORE] Upstream Merge 2026-03-25#803

Open
XeonMations wants to merge 157 commits intoDarkPack13:masterfrom
XeonMations:tg-upstream
Open

[IDB IGNORE] [MDB IGNORE] Upstream Merge 2026-03-25#803
XeonMations wants to merge 157 commits intoDarkPack13:masterfrom
XeonMations:tg-upstream

Conversation

@XeonMations
Copy link
Copy Markdown
Collaborator

@XeonMations XeonMations commented Mar 25, 2026

About The Pull Request

Why It's Good For The Game

Changelog

🆑
/:cl:

timothymtorres and others added 30 commits March 15, 2026 09:57
## About The Pull Request
This changes spiderwebs to drain stamina from mobs whenever they enter a
turf filled with spiderwebs.

## Why It's Good For The Game
The old movement code was very janky and buggy. Because it used the
`CanAllowThrough` proc, a mob could spam several dozens of movement
attempts per second, resulting in a massive amount of shaking and `stuck
in the web` messages. This had the effect of not really slowing or
stopping movement, since the RNG was being rolled so fast that it was a
minor inconvenience.

I feel like the stamina drain effect makes more sense and feels more
natural.

## Changelog
:cl:
balance: Sticky spider webs now drain stamina when mobs enter the turf
/:cl:
## About The Pull Request

Chem scanning a maint pill now removes the achievement for eating it.

## Why It's Good For The Game

cheater.

You can still scour maints for pills with stuff you'd like, but you lose
the achievement for doing so.

## Changelog

:cl:
fix: Chem scanning a maintenance pill removes the achievement value.
/:cl:
## About The Pull Request
This lets people ride and tame spiders by feeding them mouse, lizard,
moth, fly, and worm meat. You can only do this when a spider is a
spiderling or young; once it's fully grown, it's no longer possible.

This also refactors some tameable code to use `TRAIT_TAMED` instead of
setting variables on mobs individually.

## Why It's Good For The Game
It looks cool.

<img width="1920" height="1080" alt="dreamseeker_97k7fgzdhv"
src="https://github.com/user-attachments/assets/87d53102-468d-4dd7-b0a7-004f9a98df17"
/>


## Changelog
:cl:
add: Spiders can now be tamed and ridden. They eat mouse, lizard, moth,
fly, and worm meat and can only be tamed when they are spiderlings or
young.
code: Refactored tameable code to use TRAIT_TAMED instead of setting
individual variables on each mob.
/:cl:
…angry (#95342)

## About The Pull Request

Cannabis will slowly calm monkies down, removing enemies from their
enemies list over time and eventually making them docile while it is in
their system

Nicotine does similar, but does not make them docile

Booze on the other hand makes monkeys see enemies as greater enemies
depending on strength of the drink

## Why It's Good For The Game

Adding interactions between reagents that modify "player behavior" and
actual "ai behavior" seems like fun to me,

## Changelog

:cl: Melbert
add: Cannabis will calm down an angry monkey, eventually even turning
them docile (not pacifist!) temporarily
add: Nicotine will also calm down an angry monkey, albiet slower than
Cannabis and will never turn them entirely docile
add: Booze on the other hand will make a monkey even angrier (though
only if they are already upset with someone)
/:cl:
## About The Pull Request
Cleans up the code, swing combat will be real one day
## Changelog
:cl:
refactor: Rewrote dispenser bots to use item_interaction
/:cl:
## About The Pull Request

One more refactor, one less attackby

## Changelog
:cl:
refactor: Rewrote BCI implanters to use item_interaction
/:cl:
## About The Pull Request

Moving Pun Pun's name handling in #94463 broke their name assignment as
it used `var/name_to_use = name`

Prior, it would save `var/name_to_use = "Pun Pun"`. But after moving it,
it would use `var/name_to_use = "monkey (842)"`, as name is randomized
in human init.

I will note that I think `use_random_name` var is broken... that may
require future investigation.

## Changelog

:cl: Melbert
fix: Pun Pun is Pun Pun again
/:cl:
…act (#95378)

## About The Pull Request

Another attackby() gone

## Changelog
:cl:
refactor: Rewrote integrated circuits to use item_interaction and
screwdriver_act
/:cl:

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Another one bites the dust

## Changelog
:cl:
refactor: Converted circuit printers/duplicators to item_interaction
/:cl:
## About The Pull Request

Converts basicmob bot construction to use item_interaction instead of
attackby()

## Changelog
:cl:
refactor: Converted bot construction to item_interaction
/:cl:
…(#95380)

## About The Pull Request

Refactors Revenant abilities into a component 

Revenant abilities now indicate if they are locked

<img width="419" height="185" alt="image"
src="https://github.com/user-attachments/assets/7223f025-d99c-4c09-883b-b53f29947c36"
/>

<img width="337" height="97" alt="image"
src="https://github.com/user-attachments/assets/321bf64f-df57-4da5-9951-a2795637cea3"
/>

They also more accurately update if they are un/usable (ie, if you enter
a wall, they turn red.)

Also, Revenants are no longer affected by gravity. They already weren't
affected by gravity (as far as I could tell) this just prevents them
from getting the no-grav alert.

## Why It's Good For The Game

- Not all future Revenant abilities need to be an AOE spell

- It makes them easier to parse at a glance (what powers you have /
don't have / can use)

## Changelog

:cl: Melbert
qol: Revenant abilities indicate if they are locked, and better indicate
if they are currently usable
qol: Revenants are no longer alerted that they have no gravity (they
always have gravity)
refactor: Refactored Revenant abilities, report any oddities with them.
/:cl:
## About The Pull Request

More attackby()s gone

## Changelog
:cl:
refactor: Converted vehicles to use item_interaction/tool_acts
/:cl:
tgstation-ci bot and others added 18 commits March 24, 2026 03:07
## About The Pull Request

1. Mappers and admins can now VV RTG power without it breaking

2. Replace attackby usage

3. `base_icon_state` usage

4. Rewriting power in terms of watts

5. Grammar updates

## Why It's Good For The Game

These are mostly meant for events and mappers but they were relatively
difficult to use for events and mappers, requiring you made a subtype.

This just brings the code up to snuff to make them more usable.

## Changelog

:cl: Melbert
code: Cleaned up RTG code. Admins can now VV them easier. If you come
across a ruin on Lavaland or in space that uses them and see any odd
behavior, report it as an issue.
/:cl:
…ompletion when drank (#95466)

## About The Pull Request

Previously, when one drank out of a glass of booze that the virtual
bartender graciously offered, one would not get any closer to domain
completion, because said bartender got his glasses new out of a vending
machine. These glasses never were registered on domain creation, due to
not existing on domain creation. This pr registers the vending machines
within the domain with a new signal that allows newly created glasses to
also be registered, and count towards domain completion.

## Why It's Good For The Game

A bitrunner dying of liver failure due to the obtuse distinction between
glasses that were in a vending machine and glasses that were on the
table sounds very annoying. Also, you could very easily make the domain
not completable within seconds by spawning as a ghostrole and breaking
the table glasses. You can still do that, but you have to break an
entire vending machine's worth of glasses too.

## Changelog
:cl:

fix: Glasses that were in the vending machine now still count for the
completion of the Beach Bar virtual domain

/:cl:
…hery balls being disabled on shuttle transit (#95407)

## About The Pull Request

When something that is orbiting something travels on a shuttle with that
thing, its orbit is temporarily removed and then put back right after.
To make this happen, the orbiting component calls `stop_orbit()` (on the
orbiting object) & then `begin_orbit()` (on itself, the component). This
means that effects that begin in `orbit()` & delete their effects in
`stop_orbit()` simply lose their effect without putting them back,
because `orbit()` is never called again.

The solution presented is to pass the `refreshing` argument given in the
component's `end_orbit()` into the atom's `stop_orbit()`, and condition
actual deletion on that. The `refreshing` argument is `TRUE` only during
shuttle movements and re-orbits of the same thing.

## Why It's Good For The Game

fixes #95331 & wizard grav anoms & tesla periphery balls

## Changelog
:cl:

fix: Friendly wisps, wizard gravity balls, & tesla periphery balls are
no longer disabled due to shuttle transit

/:cl:

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request

The barcode scanner has a check-in mode, but to checkout you have to
scroll through a (potentially) large list of books. This aims to fix
that by letting you skip the UI using the same item you use to check-in.



https://github.com/user-attachments/assets/916b743e-d974-4e7d-a9f2-a407562c5123


Also limits library book borrowing time to 2 hours, cause the UI looked
really weird with it uncapped (also any round that goes more than 2
hours you should bring your books back)

## Why It's Good For The Game

Better UX I think.
## About The Pull Request
Not sure if it is oversight or because of some valid balancing concern,
but this PR just enables display's design to be able to be printed in
golems and charlie station lathes

## Why It's Good For The Game
Existence of this item in ghostroles' hands wont impact balancing in any
way, as opposed to other locked items such as shuttle parts crew
pointers (which, gonna be honest, wont impact said balance either, but
whatever). Vitals display is just too cool of a thing to make it limited
just for station's people.
@XeonMations XeonMations added the Upstream Merge Copy and paste TG code. If it compiles, it ships! label Mar 25, 2026
@XeonMations XeonMations requested review from a team as code owners March 25, 2026 00:30
@XeonMations XeonMations changed the title TG Pulll 2026-03-25 [IDB IGNORE] [MDB IGNORE] Upstream Merge 2026-03-25 Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

GitHub Sprites Tools UI Upstream Merge Copy and paste TG code. If it compiles, it ships!

Projects

None yet

Development

Successfully merging this pull request may close these issues.