diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index e70e3159b67..750f2c62896 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -860,7 +860,7 @@ proc/GaussRandRound(var/sigma,var/roundto) if(turftoleave) fromupdate += T.ChangeTurf(turftoleave) else - T.ChangeTurf(get_base_turf(T.z)) + T.ChangeTurf(get_base_turf_by_area(T)) refined_src -= T refined_trg -= B diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 87e54a9adaf..5a8d353015c 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -53,6 +53,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/list/ambience = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg') var/list/forced_ambience = null var/sound_env = STANDARD_STATION + var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf + /*Adding a wizard area teleport list because motherfucking lag -- Urist*/ /*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/ var/list/teleportlocs = list() diff --git a/code/game/base_turf.dm b/code/game/base_turf.dm index d2556031c74..d214220f32d 100644 --- a/code/game/base_turf.dm +++ b/code/game/base_turf.dm @@ -1,4 +1,4 @@ -// Returns the lowest turf available on a given Z-level, defaults to space. +// Returns the lowest turf available on a given Z-level, defaults to asteroid for Polaris. var/global/list/base_turf_by_z = list( "5" = /turf/simulated/floor/asteroid // Moonbase. ) @@ -8,6 +8,13 @@ proc/get_base_turf(var/z) base_turf_by_z["[z]"] = /turf/space return base_turf_by_z["[z]"] +//An area can override the z-level base turf, so our solar array areas etc. can be space-based. +proc/get_base_turf_by_area(var/turf/T) + var/area/A = T.loc + if(A.base_turf) + return A.base_turf + return get_base_turf(T.z) + /client/proc/set_base_turf() set category = "Debug" set name = "Set Base Turf"