From 013dd622004efc59537cefa7ada0fe2ee9b79f3b Mon Sep 17 00:00:00 2001
From: Bloop <13398309+vinylspiders@users.noreply.github.com>
Date: Sun, 7 Sep 2025 03:03:40 -0400
Subject: [PATCH] Fixes flaky runtime issue for maps with space terrain near
their borders by making maploaded movables stay put (#92862)
## About The Pull Request
Ever since https://github.com/tgstation/tgstation/pull/91920 we have
been getting a very persistent CI failure downstream, and upon
investigating the transitions of this map seem weird and cut off, almost
like it's taking pieces of the other side and trying to superimpose them
on itself.
I looked at what it changed, and this line stuck out to me as
suspicious.
It stuck out to me because it seems like it might not appropriately
handle space maps that have terrain near the borders (we have a map that
is surrounded by an asteroid field, for instance, and that's the one
that's been causing issues).
Asteroid field map shown here
~~@Time-Green Do you have any insights to this?~~
~~I am drafting it for now because I don't think this is the right 'fix'
as it will likely interfere with/break the icebox wilderness stuff.~~
~~The main issue is (possibly?) that `atom/movable`s (including these
rocks) which end up on the border of the map transition are being yeeted
into space, on the opposite end of the map, because of their location.~~
~~Movables that are maploaded probably shouldn't be transitioned, might
be the solution there?~~
EDIT: Fairly certain that the issue has been found out, it's due to
movable rocks which are mapped near the edge of the map getting
instantly teleported upon maploading. Seems like this is something we
should prevent from happening.
## Why It's Good For The Game
Fixes an oversight
## Changelog
Not player-facing
---
code/game/turfs/open/_open.dm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm
index 2dd779a7f1f..78af79d750f 100644
--- a/code/game/turfs/open/_open.dm
+++ b/code/game/turfs/open/_open.dm
@@ -137,6 +137,9 @@
if(!destination_z || !destination_x || !destination_y || arrived.pulledby || arrived.currently_z_moving)
return
+ if(SSatoms.initialized == INITIALIZATION_INNEW_MAPLOAD) // we don't want to be transitioning atoms to another z-level while we are still in mapload
+ return
+
var/tx = destination_x
var/ty = destination_y
var/turf/DT = locate(tx, ty, destination_z)