vgstation-coders / vgstation13

Butts
GNU Affero General Public License v3.0
266 stars 545 forks source link

"Deck" turfs cause massive ZAS slam locking #19345

Open D3athrow-Issues opened 6 years ago

D3athrow-Issues commented 6 years ago

(WEB REPORT BY: sarahjohnson REMOTE: 172.93.109.202:7777)

Revision

f8bbf25cb78664cca724fddb6a2c9f9fa1b29cad

Description

The deck's air is different than the snow away mission so it slams the shit out of you until you're dead if you don't have magboots on.

Steps to Reproduce

Use wood planks on snow to make wooden foundation

Use wood floor tiles to make a "deck" turf.

You and all the stuff on it gets thrown endlessly as it tries to equalize.

What you Expected

Not being way off

What Actually Happened

Slammed into a wall until dead.

Why should anyone care As a side effect of the air getting fucked, there's no pressure which means no campfires, which means you can't solely wood a hut up to temp then grow diona to replace casualties.

Exxion commented 6 years ago

Does it eventually equalize, or does this just happen forever?

jknpj commented 6 years ago

forever

Exxion commented 6 years ago

Now that shouldn't be happening.

The difference shouldn't be enough to ZAS you at all, which is one bug (that I'm about to open a PR to fix), but even if it were it should only happen until the tile has drained.

Exxion commented 6 years ago

In this particular case it isn't See #19346

ghost commented 6 years ago

Well the insert code thing ain't formatting it for shit but if I'm reading this right, tile_types.dm just needs an update with whatever turf the already frozen snow turf is since airless would take air from the nearby turfs and air would equalize and chill causing pressure drop equalizations pending the system being overhauled to just take the air that was existing previously. /*

/obj/item/stack/tile/wood/proc/build(turf/S as turf) if(istype(S,/turf/unsimulated/floor/asteroid)) S.ChangeTurf(/turf/simulated/floor/plating/deck/airless) else S.ChangeTurf(/turf/simulated/floor/plating/deck)

/obj/item/stack/tile/wood/afterattack(atom/target, mob/user, adjacent, params) if(adjacent) if(isturf(target) || istype(target, /obj/structure/lattice/wood)) var/turf/T = get_turf(target) var/obj/structure/lattice/L L = locate(/obj/structure/lattice/wood) in T if(!istype(L)) return var/obj/item/stack/tile/wood/S = src if(!(T.canBuildPlating(S))) to_chat(user, "You can't get that deck up without some support!") return if(S.use(1)) playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) S.build(T) if(T.canBuildPlating(S) == BUILD_SUCCESS) qdel(L)