diff --git a/code/_helpers/area_movement.dm b/code/_helpers/area_movement.dm index b903acb93cc..25c21e512a4 100644 --- a/code/_helpers/area_movement.dm +++ b/code/_helpers/area_movement.dm @@ -17,10 +17,10 @@ if (T.x > xmax) xmax = T.x - + if (T.x < xmin) xmin = T.x - + if (T.y > ymax) ymax = T.y @@ -62,12 +62,12 @@ continue var/turf/TT = ST.copy_turf(target_turfs[i]) - + for (var/thing in ST) var/atom/movable/AM = thing AM.shuttle_move(TT) - ST.ChangeTurf(get_base_turf_by_area(ST)) + ST.ChangeTurf(ST.baseturf) if (istype(TT, /turf/simulated)) simulated_turfs += TT @@ -106,7 +106,7 @@ T = target_turfs[idex] - baseturf = get_base_turf(T.z) + baseturf = T.baseturf for (var/i = 1; i <= source_turfs.len; i++) var/turf/ST = source_turfs[i] @@ -115,7 +115,7 @@ continue var/turf/TT = ST.copy_turf(TTi, ignore_air = TRUE) - + for (var/thing in ST) var/atom/movable/AM = thing var/atom/movable/copy = DuplicateObject(AM, 1) diff --git a/code/game/gamemodes/cult/narsie.dm b/code/game/gamemodes/cult/narsie.dm index a916129d8cf..dc4fa58e568 100644 --- a/code/game/gamemodes/cult/narsie.dm +++ b/code/game/gamemodes/cult/narsie.dm @@ -236,9 +236,10 @@ var/global/list/narsie_list = list() if (A) qdel(A) else if (isturf(A)) - var/dist = get_dist(A, src) + var/turf/T2 = A + var/dist = get_dist(T2, src) - for (var/atom/movable/AM2 in A.contents) + for (var/atom/movable/AM2 in T2.contents) if (AM2 == src) // This is the snowflake. continue @@ -246,9 +247,8 @@ var/global/list/narsie_list = list() consume(AM2) continue - if (dist <= consume_range && !istype(A, get_base_turf_by_area(A))) - var/turf/T2 = A - T2.ChangeTurf(get_base_turf_by_area(A)) + if (dist <= consume_range && !istype(T2, T2.baseturf)) + T2.ChangeTurf(T2.baseturf) /obj/singularity/narsie/consume(const/atom/A) //This one is for the small ones. if(!(A.singuloCanEat())) @@ -270,9 +270,10 @@ var/global/list/narsie_list = list() if (A) qdel(A) else if (isturf(A)) - var/dist = get_dist(A, src) + var/turf/T2 = A + var/dist = get_dist(T2, src) - for (var/atom/movable/AM2 in A.contents) + for (var/atom/movable/AM2 in T2.contents) if (AM2 == src) // This is the snowflake. continue @@ -290,9 +291,8 @@ var/global/list/narsie_list = list() spawn (0) AM2.singularity_pull(src, src.current_size) - if (dist <= consume_range && !istype(A, get_base_turf_by_area(A))) - var/turf/T2 = A - T2.ChangeTurf(get_base_turf_by_area(A)) + if (dist <= consume_range && !istype(T2, T2.baseturf)) + T2.ChangeTurf(T2.baseturf) /obj/singularity/narsie/ex_act(severity) //No throwing bombs at it either. --NEO return diff --git a/code/game/gamemodes/events/black_hole.dm b/code/game/gamemodes/events/black_hole.dm index a8b0071f657..1ff7a338c9e 100644 --- a/code/game/gamemodes/events/black_hole.dm +++ b/code/game/gamemodes/events/black_hole.dm @@ -24,7 +24,8 @@ qdel(M) for(var/obj/O in orange(1,src)) qdel(O) - var/base_turf = get_base_turf_by_area(src) + var/turf/T = loc + var/base_turf = T.baseturf for(var/turf/simulated/ST in orange(1,src)) if(ST.type == base_turf) continue diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 4c4cee7b915..dff97b271d6 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -279,13 +279,14 @@ playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) chassis.use_power(energy_drain) else if (istype(target, /turf/simulated/floor)) - occupant_message("Deconstructing [target]...") + var/turf/T = target + occupant_message("Deconstructing [T]...") set_ready_state(0) - if(do_after_cooldown(target)) + if(do_after_cooldown(T)) if(disabled) return chassis.spark_system.queue() - target:ChangeTurf(get_base_turf_by_area(target)) - playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) + T.ChangeTurf(T.baseturf) + playsound(T, 'sound/items/Deconstruct.ogg', 50, 1) chassis.use_power(energy_drain) else if (istype(target, /obj/machinery/door/airlock)) occupant_message("Deconstructing [target]...") diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index c0773fdd389..5022dbdf1d1 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -98,7 +98,7 @@ build_delay = 50 build_type = "airlock" build_other = /obj/machinery/door/airlock - else if(!deconstruct && (istype(T,/turf/space) || istype(T,get_base_turf_by_area(T)))) + else if(!deconstruct && (istype(T,/turf/space) || istype(T,T.baseturf))) build_cost = 1 build_type = "floor" build_turf = /turf/simulated/floor/airless @@ -112,7 +112,7 @@ build_delay = deconstruct ? 50 : 20 build_cost = deconstruct ? 10 : 3 build_type = deconstruct ? "floor" : "wall" - build_turf = deconstruct ? get_base_turf(T.z) : /turf/simulated/wall + build_turf = deconstruct ? T.baseturf : /turf/simulated/wall else return 0 diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index e076430fd90..07142289dfa 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -202,7 +202,10 @@ footstep_sound = "gravelstep" /turf/simulated/floor/plating/snow footstep_sound = "gravelstep" + /turf/simulated/floor/airless/ceiling + icon_state = "asteroidplating" + baseturf = /turf/space /turf/simulated/floor/beach name = "beach" diff --git a/code/game/turfs/simulated/floor_acts.dm b/code/game/turfs/simulated/floor_acts.dm index ee42c625fe5..a1b9785616d 100644 --- a/code/game/turfs/simulated/floor_acts.dm +++ b/code/game/turfs/simulated/floor_acts.dm @@ -2,14 +2,14 @@ //set src in oview(1) switch(severity) if(1.0) - src.ChangeTurf(get_base_turf_by_area(src)) + src.ChangeTurf(baseturf) if(2.0) switch(pick(40;1,40;2,3)) if (1) if(prob(33)) new /obj/item/stack/material/steel(src) src.ReplaceWithLattice() if(2) - src.ChangeTurf(get_base_turf_by_area(src)) + src.ChangeTurf(baseturf) if(3) if(prob(33)) new /obj/item/stack/material/steel(src) if(prob(80)) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 159865778a8..e8b3fb10e34 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -160,7 +160,7 @@ /turf/simulated/wall/proc/dismantle_wall(var/devastated, var/explode, var/no_product, var/no_change = FALSE) if (!no_change) // No change is TRUE when this is called by destroy. playsound(src, 'sound/items/Welder.ogg', 100, 1) - + if(!no_product) if(reinf_material) reinf_material.place_dismantled_girder(src, reinf_material) @@ -186,7 +186,7 @@ /turf/simulated/wall/ex_act(severity) switch(severity) if(1.0) - src.ChangeTurf(get_base_turf(src.z)) + src.ChangeTurf(baseturf) return if(2.0) if(prob(75)) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index b0a5ae9d411..95d1ae7dff2 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -27,7 +27,7 @@ var/list/decals var/is_hole // If true, turf will be treated as space or a hole - var/turf/baseturf = /turf/space + var/tmp/turf/baseturf var/roof_type = null // The turf type we spawn as a roof. var/tmp/roof_flags = 0 @@ -58,6 +58,9 @@ if (opacity) has_opaque_atom = TRUE + if(!baseturf) + baseturf = get_base_turf_by_area(src) + spawn_roof() return INITIALIZE_HINT_NORMAL diff --git a/code/game/turfs/turf_changing.dm b/code/game/turfs/turf_changing.dm index 438400ed516..27fbcf8956e 100644 --- a/code/game/turfs/turf_changing.dm +++ b/code/game/turfs/turf_changing.dm @@ -2,7 +2,7 @@ var/tmp/changing_turf /turf/proc/ReplaceWithLattice() - src.ChangeTurf(get_base_turf_by_area(src)) + src.ChangeTurf(baseturf) spawn() new /obj/structure/lattice( locate(src.x, src.y, src.z) ) @@ -61,7 +61,8 @@ SSair.mark_for_update(src) //handle the addition of the new turf. - W.baseturf = old_baseturf + if(!W.baseturf) + W.baseturf = old_baseturf W.post_change()