Commit Graph

18 Commits

Author SHA1 Message Date
Alexis 21b4095dfd [MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026

fixes https://github.com/Bubberstation/Bubberstation/issues/5549

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: loganuk <fakeemail123@aol.com>
Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com>
Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: Lucy <lucy@absolucy.moe>
Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com>
Co-authored-by: Isratosh <Isratosh@hotmail.com>
Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com>
Co-authored-by: Alexander V. <volas@ya.ru>
Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com>
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com>
Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com>
Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com>
Co-authored-by: Josh <josh.adam.powell@gmail.com>
Co-authored-by: Josh Powell <josh.powell@softwire.com>
Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com>
Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com>
Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-05-16 00:56:00 +02:00
Bloop ad57d69436 Fixes another spammy elevation runtime (#93708)
## About The Pull Request

An even more spammy signal override runtime that's been annoying me.

<img width="1933" height="479" alt="image"
src="https://github.com/user-attachments/assets/9d73a01b-858e-46a8-9449-7bb60680c977"
/>

This bug most frequently appears near cargo, triggered by mail crates
moving around on conveyors.
Seems to be caused by another elevation element being mid-attach and
also trying to register on the same turf simultaneously, which results
in a recursive register_turf() call essentially.

## Why It's Good For The Game

Fixes a spammy runtime, and improves performance a bit.

<details><summary>still works</summary>


![dreamseeker_Nz6BUoU11X](https://github.com/user-attachments/assets/446b6ba8-510e-4a5c-b02f-db5781a8e296)

</details>

## Changelog

Not player-facing
2025-11-01 13:06:27 +01:00
sushi d19856e2b7 Fix element/elevation failing to clean up its element/elevation_core from turfs when deleted before Moved is invoked on its source (#92860)
## About The Pull Request

* Fixes https://github.com/tgstation/tgstation/issues/92759
* Fixes https://github.com/tgstation/tgstation/issues/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
🆑 sushi
fix: crates and other objects causing elevation will no longer leave
behind magic elevating turfs upon destruction
/🆑
2025-09-07 09:39:16 +02:00
Jacquerel 7146a6bb10 Platforms (#91559)
## About The Pull Request


![image](https://github.com/user-attachments/assets/32a5f39a-59b8-46c3-8418-1a089379d6a4)

This PR adds "platforms" to the game, a port of the window frames from
the Wallening branch but with no windows attached.
You can craft them with two stacks of many kinds of materials.
Functionally they're basically just tables for standing on and act as a
decorative tool allowing you to make raised areas like stages.
Largely as far as I can tell I _think_ these were sprited by @Krysonism
although it's a little hard to check if there's any that were done by
someone else.

You can walk directly from tables to platforms (and crates) and vice
versa. You can also tableslam people onto them.

This PR also comes with "steps" (AKA small stairs)
You can use steps to walk onto platforms (or tables, or crates) without
needing to do the climbing action first.

![dreamseeker_umhbakZ4lE](https://github.com/user-attachments/assets/675e815b-8901-49d2-81b1-64ef7a56cd31)
If you try to run through them the wrong way you will trip.
Right now they only come in "Iron" flavour. Maybe one day someone will
sprite some wooden ones, or other varieties.

Basically the intention is to use them to build a little stage or altar
or maze or something. They don't have a lot of non-decorative purpose.

Don't be alarmed by the touched files list. It's mostly sprites and
there's barely even any code in this PR. It's almost entirely elements
and boilerplate.

## Why It's Good For The Game

Mappers keep asking me to add these.
Salvages some sprites from the Wallening project which we can still use.
You can make a really really big multitile pizza.

## Changelog

🆑 Jacquerel, Smartkar, sprites by Kryson
add: Added "platforms", or "half-walls" which are a kind of decorative
block similar to tables which you can walk around on.
add: You can walk freely between tables, platforms, and crates that
happen to be near tables or platforms.
add: You can construct iron steps to traverse tables and platforms
without needing to climb on, but try not to trip over them.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2025-07-11 07:21:02 +00:00
_0Steven 9314b73c2c Fixes critter crate elevation issues. (#91609)
## About The Pull Request

Very simply put, we weren't actually unregistering the
`COMSIG_MOVABLE_MOVED` signal on detaching.
This was making it so that when you open a critter crate it doesn't
actually unregister the signal, meaning that it re-attaches a lot of its
effects to the turf the next time the crate moves. However, because it
wasn't actually *properly* attached anymore, breaking the crate wouldn't
unregister the turf.
So this was making it so that if you were to open a critter crate and
then move it immediately after, it would regain its ability to elevate
you as if it were closed, and this would linger even after it breaking.

This fixes that.
## Why It's Good For The Game

Fixes https://github.com/tgstation/tgstation/issues/91204.
## Changelog
🆑
fix: Critter crates no longer re-attain their ability to lift you
despite being open if you move one after opening it, and neither does
this lifting field stay after you destroy it.
/🆑
2025-06-14 10:57:37 -06:00
Ghom 4f6727024d Crafting refactor, implementing materials (#89465)
## About The Pull Request
My original plan was to just implement materials into crafting so that
items would inherit the materials of their components, allowing for some
interesting stuff if the material flags of the item allow it. However to
my dismay crafting is a pile of old tech debt, starting from the old
`del_reqs` and `CheckParts` which still contain lines about old janky
bandaids that are no longer in use nor reachable, up to the
`customizable_reagent_holder` component which has some harddel issues
when your custom food is sliced, and items used in food recipes not
being deleted and instead stored inside the result with no purpose as
well as other inconsistencies like stack recipes that transfer materials
having counterparts in the UI that don't do that.

EDIT: Several things have come up while working on this, so I apologise
that it ended up changing over 100+ files. I managed to atomize some of
the changes, but it's a bit tedious.

EDIT: TLDR because I was told this section is too vague and there's too
much going on. This PR:
- Improves the dated crafting code (not the UI).
- replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion`
with `atom/on_craft_completion`.
- Reqs used in food recipes are now deleted by default and not stored
inside the result (they did nothing).
- Renames the customizable_reagent_holder comp and improves it (No
harddels/ref issues).
- Adds a unit test that tries to craft all recipes to see what's wrong
(it skips some of the much more specific reqs for now).
- In the unit test is also the code to make sure materials of the
crafted item and a non-crafted item of the same type are roughly the
same, so far only applied to food.
- Some mild material/food refactoring around the fact that food item
code has been changed to support materials.

## Why It's Good For The Game
Improving the backbone of the crafting system. Also materials and food
code.

## Changelog

🆑
refactor: Refactored crafting backend. Report possible pesky bugs.
balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge
different because of code standardization.
/🆑
2025-06-01 16:37:43 -07:00
Jacquerel 20fdcea5c8 Foam can pass through tables and computers and grilles (#89636) 2025-02-24 13:12:31 +01:00
MrMelbert 008f727cd4 Fixes vehicle elevation (#89489)
## About The Pull Request

Fixes #89481

I removed the code which de-elevated vehicles

Also `TRAIT_NO_FLOATING_ANIMATION` continues to be a burden, causing the
offset to reset. I fixed that as well.

## Changelog

🆑 Melbert
fix: Fixed offset during vehicle traversal over boxes and tables, as
well as while floating
/🆑
2025-02-16 06:55:52 +01:00
MrMelbert ffd97819c1 Pixel adjustments to mobs are now sourced / Refactors riding (#89320)
## About The Pull Request

Fixes #85980

- Pixel adjustments are now sourced

When tweaking a mob's pixel w, x, y, z, is is now done via `add_offsets`
and must have a source string associated

- Refactors riding

Refactors how riding component selects the offsets to use. It's now all
done via the getter rather than a weird mix of a var, a cache, and a
getter.

- Moves a bunch of animations to use `pixel_w` / `pixel_z`

Largely to prevent conflicts with adjustments to a mob's pixel position,
but also as many animations are not actual movements, but visual
movements. Floating is one such example.

## Why It's Good For The Game

It just works

## Changelog

🆑 Melbert
fix: Fixed grab offsets not showing for anything but passive grab
fix: Fix jank with mob offsets when riding things
refactor: Refactored riding component, particularly how it selects layer
and offsets. Report any oddities
refactor: Refactored pixel offsets of mobs. Report any oddities
/🆑
2025-02-12 17:16:13 -07:00
jimmyl f2e93b63b1 fixes elevation being permanent if you spawn on it (#85952)
## About The Pull Request

1 line change that makes spawning on stuff such as table not offset you
forever

## Why It's Good For The Game

fixes #84121

## Changelog
🆑
fix: spawning on a table or other elevated object does not offset you
forever
/🆑
2024-08-19 11:06:58 +00:00
Lucy a2f8875986 Fix issues resulting from an elevated object being created inside of a non-turf atom (#83498)
## About The Pull Request

If an elevated object is initialized inside of a non-turf atom, it'll
still make the turf it is on elevated. Permanently. Which is weird.

## Why It's Good For The Game

Randomly elevated turfs are bad. Bugs bad.

## Changelog
🆑
fix: Fix a rare issue where a turf would remain permanently "elevated"
if an elevated object was initialized inside of a non-turf object.
/🆑
2024-05-28 14:05:31 -06:00
Ghom 5d77f75ca4 [NO GBP] Fixes the larva "hide" ability not properly hiding larvas under tables. (#81921)
## About The Pull Request
This PR fixes yet another small issue with elevation.

## Why It's Good For The Game
This PR fixes yet another small issue with elevation.

## Changelog

🆑
fix: Fixed the larva "hide" ability not properly hiding larvas under
tables.
/🆑
2024-03-13 23:18:30 +00:00
_0Steven 99fcc070ee Fixes crashing through tables from a table giving you a negative offset (#80701)
## About The Pull Request

While failing to reproduce #80675, given no amount of slamming this poor
little moth creature through glass tables in any order and then
rebuilding it under them seemed to be doing anything, I found that it
_does_ cause a negative offset if the moth-to-be-slammed in question was
already on a table before being slammed into a glass table. (Don't worry
they have health insurance.)

After some debugging, this seemed to be because `Detach()` is called for
the new turf with the smashed table _before_ `on_exited()` is called for
the previous turf, causing it to first reduce one's offset by 12, and
then reduce it by 12 _again_ upon calling `on_exited()`. This seemed to
be true for whichever method was used, whether walking, dragging, or
being smashed.

![image](https://github.com/tgstation/tgstation/assets/42909981/3782776f-7153-4235-b377-8f8bd8904110)
So I introduced the same check for `TRAIT_ON_ELEVATED_SURFACE` that
`Detach()` has to `on_exited()`, making it only attempt to shift down
the movable if it still has the trait, and this seems to fix it fine!
It doesn't seem to cause issues with moving from beds onto tables or
tables onto beds, or smashing through glass tables from tables or beds.
So this should fix #80675, or at least I can't find what they would've
meant if not this.

And yes I did test this on Tramstation just in case.

![image](https://github.com/tgstation/tgstation/assets/42909981/e3d8e755-c288-4ed7-93cb-8948c6012c56)
## Why It's Good For The Game

Fixes #80675.
## Changelog
🆑
fix: slamming through a glass table while previously on a table no
longer gives you a negative offset.
/🆑
2024-01-01 21:38:20 +01:00
Ghom 1b882991ca Updating elevation.dm to fix a recursion issue. (#80341)
## About The Pull Request
I thought `ADD_TRAIT`, like `REMOVE_TRAIT`, supported using a list of
trait sources, but I was wrong.

## Why It's Good For The Game

![immagine](https://github.com/tgstation/tgstation/assets/42542238/c992d19b-816c-4f8e-b05c-651ce12d158d)

Should fix #80338.


## Changelog
N/A
2023-12-16 17:21:34 -08:00
Ghom 87bd1cfcd1 Prevents something fucky with elevation and glass tables (#80187)
## About The Pull Request
Objects can be destroyed during a movement loop before the abstract
entered signal can be sent, so we need to make sure only mobs that have
been elevated are dropped down.

## Why It's Good For The Game
Fixes #80169

## Changelog

🆑
fix: climbing or being shoved into a glass table won't cause elevation
issues.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-12-11 20:03:36 -07:00
Ghom 349adbb438 [NO GBP] Fixing elevation furthermore (#80099)
## About The Pull Request
fixes #80059
fixes #80085.

The tram transportation doesn't use `forceMove()`, instead it just
changes the location of the objects directly. What's more, it doesn't
call `oldloc.Exited()` or `loc.Entered()` but only for areas. The
abstract exited/entered signals are from `Moved()` though, which is
called.

https://github.com/tgstation/tgstation/blob/df4bc6d948576a2ec32a90c23c93ec90e54e3933/code/modules/transport/transport_module.dm#L519-L527

About beds, well, I just happened to put a minus symbol where it
shouldn't be.

## Why It's Good For The Game
Truly one of the fuckups of the year. Now tested. I'll make a unit test
later.


## Changelog

🆑
fix: Fixed some oopsie whoopsie with elevation, trams and beds causing
people to visually ascend or descend to heaven or hell.
/🆑
2023-12-03 15:44:33 -07:00
Ghom bb76600b95 Fixes riding vehicles on tables and lying on beds (#80053)
## About The Pull Request
Fixes #80027. My bad.
EDIT: Also fixes #80050.

## Why It's Good For The Game
See the issues above.

## Changelog
🆑
fix: Fixed an issue with the offsets of ridden vehicles on tables, and
another when buckled to a bed.
/🆑
2023-12-01 14:55:21 -07:00
Ghom 837ddf7d00 Standing on structures such as crates, tables and bed will now look like it. (#79797)
## About The Pull Request
From the creator of 'cosmetic' elements such as footstep_override and
immerse...

I've made an element called elevation that nudges mobs a few pixels up
while standing on things like tables, crates and beds.

Screenshots of many clones of the same character standing on different
objects:
![the clone
army](https://github.com/tgstation/tgstation/assets/42542238/43ecdc25-f0d2-47fd-96dc-acafcf63483c)

## Why It's Good For The Game
It makes it look like the mob is actually standing on an elevated
surface.

## Changelog

🆑
add: Standing on structures such as crates, tables and bed will now look
like it.
/🆑
2023-11-28 15:44:54 -07:00