diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 53e2c09a04af..442ee9c6b44a 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -103,7 +103,7 @@ if(TURF_WET_PERMAFROST) // Permafrost M.slip("the frosted floor", 10 SECONDS, tilesSlipped = 1, walkSafely = 0, slipAny = 1) -/turf/simulated/ChangeTurf(path, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE) +/turf/simulated/ChangeTurf(path, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE, copy_existing_baseturf = TRUE) . = ..() QUEUE_SMOOTH_NEIGHBORS(src) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index e7d578eec75d..53e69545351f 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -134,7 +134,7 @@ GLOBAL_LIST_INIT(icons_to_ignore_at_floor_init, list("damaged1","damaged2","dama /turf/simulated/floor/proc/make_plating() return ChangeTurf(/turf/simulated/floor/plating) -/turf/simulated/floor/ChangeTurf(turf/simulated/floor/T, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE) +/turf/simulated/floor/ChangeTurf(turf/simulated/floor/T, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE, copy_existing_baseturf = TRUE) if(!istype(src, /turf/simulated/floor)) return ..() //fucking turfs switch the fucking src of the fucking running procs if(!ispath(T, /turf/simulated/floor)) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d90b03fd5ea2..53f67693e8db 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -207,7 +207,7 @@ return ChangeTurf(path, defer_change, keep_icon, ignore_air) //Creates a new turf -/turf/proc/ChangeTurf(path, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE) +/turf/proc/ChangeTurf(path, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE, copy_existing_baseturf = TRUE) if(!path) return if(!GLOB.use_preloader && path == type) // Don't no-op if the map loader requires it to be reconstructed @@ -228,7 +228,8 @@ changing_turf = TRUE qdel(src) //Just get the side effects and call Destroy var/turf/W = new path(src) - W.baseturf = old_baseturf + if(copy_existing_baseturf) + W.baseturf = old_baseturf if(!defer_change) W.AfterChange(ignore_air) diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index 48aa90651a5e..795b697bc4d5 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -319,7 +319,7 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) var/turf/T = locate(x, y, z) if(T) if(ispath(path, /turf)) - T.ChangeTurf(path, defer_change = TRUE, keep_icon = FALSE) + T.ChangeTurf(path, defer_change = TRUE, keep_icon = FALSE, copy_existing_baseturf = FALSE) instance = T else if(ispath(path, /area)) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 619a6a519770..b69b9d92622e 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -137,7 +137,7 @@ if(prob(50)) ChangeTurf(baseturf) -/turf/simulated/floor/vines/ChangeTurf(turf/simulated/floor/T, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE) +/turf/simulated/floor/vines/ChangeTurf(turf/simulated/floor/T, defer_change = FALSE, keep_icon = TRUE, ignore_air = FALSE, copy_existing_baseturf = TRUE) . = ..() //Do this *after* the turf has changed as qdel in spacevines will call changeturf again if it hasn't for(var/obj/structure/spacevine/SV in src)