mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 05:51:56 +01:00
Refactors baseturf (#2778)
Modifies baseturf to be used instead of not used. Now all functions that used to call "get_base_turf_by_area(T)" will now call "T.baseturf". Turfs that do not have a baseturf defined will set their baseturf to be the result of "get_base_turf_by_area()", which will descend into "get_base_turf_by_z" and ultimately into "turf/space", if none of the previous stages catch. ChangeTurf will now only keep baseturf persistent from father to child if the child has no baseturf set by code. This allows for special turfs, such as ceilings, to have their own base turf, such as open space, to be used instead of the area/z baseturf. Fixes #2763
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]...")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user