shiptest-ss13 / Shiptest

The Shiptest Codebase
https://shiptest.net
GNU Affero General Public License v3.0
108 stars 527 forks source link

[BUG] Player-placed pipes go under tiles when ships move #746

Open pitaden opened 2 years ago

pitaden commented 2 years ago

Round ID:

NA, tested locally

Testmerges:

None

Reproduction:

Using a rapid pipe dispenser, place pipes on top of tiles. Then, land on a planet or launch to space. After the ship launches, any pipes that were on top of tiles will be moved under the tiles. Pipes that were on top of tiles before the ship launched will be unaffected.

swifterjack commented 2 years ago

This also happens with pipes placed during mapping with the /visible subtype, upon ship move they get put under the floorboards

IndusRobot commented 2 years ago

Going to look at this issue sometime this week to verify it still occurs, and come up with a fix

Edit: it still occurs

IndusRobot commented 2 years ago

Beyond a solution to add an RPD mode "set visible" on newly placed pipes, or an arguably worse solution involving disabling pipe visibility updates on turf changes, I don't personally have a good fix for this. Someone else might though!

What I've discovered during testing is, by default RPD placed pipes don't use the pipe's visible subtype. When shuttle code updates all atoms icon and visibility when they're moved, we see the behavior of pipes that aren't visible moved underneath tiles, since that's technically supposed to be their default behavior on roundstart. Pipes on plating aren't affected since there's no tile to cover them up.

Also adding a new RPD mode wouldn't work on atmos devices, since gas pumps, vents, scrubbers etc don't actually have a visible subtype (atmos devices still use the hide var though, it just happens to be slightly inconsistently used per device). Their default behavior would be to move underneath tiles. But if pipe visibility is all we care about then a new RPD mode might be the way to go to solve this issue. Locking the RPD to always dispense pipes as visible also isn't suitable, since I wouldn't want all my builds and breach repairs to show pipes. Alternatively just brush this issue under the rug 😄

This also happens with pipes placed during mapping with the /visible subtype, upon ship move they get put under the floorboards

Unable to reproduce, maps using visible pipes persist on top of their tiles after shuttle transits

IndusRobot commented 2 years ago

Also I wasn't able to pin down exactly when pipes start flipping under tiles, but I believe it starts in the proc /obj/machinery/atmospherics/afterShuttleMove