mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 08:29:57 +01:00
Fixes #2803 Fixes #2553 Fixes #2597 (Couldn't find a cleaner way to make this work, unfortunately. Not all procs-as-verbs can be used as procs.) Fixes #2498 Fixes #2912
This commit is contained in:
@@ -43,7 +43,7 @@
|
||||
field.Remove(D)
|
||||
D.loc = null
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/shield_gen/emag_act(var/remaining_charges, var/mob/user)
|
||||
if(prob(75))
|
||||
src.locked = !src.locked
|
||||
@@ -237,25 +237,9 @@
|
||||
//TODO MAKE THIS MULTIZ COMPATIBLE
|
||||
//grab the border tiles in a circle around this machine
|
||||
/obj/machinery/shield_gen/proc/get_shielded_turfs()
|
||||
var/list/out = list()
|
||||
|
||||
var/turf/gen_turf = get_turf(src)
|
||||
|
||||
if (!gen_turf)
|
||||
return
|
||||
|
||||
var/turf/T
|
||||
for (var/x_offset = -field_radius; x_offset <= field_radius; x_offset++)
|
||||
T = locate(gen_turf.x + x_offset, gen_turf.y - field_radius, gen_turf.z)
|
||||
if (T) out += T
|
||||
|
||||
T = locate(gen_turf.x + x_offset, gen_turf.y + field_radius, gen_turf.z)
|
||||
if (T) out += T
|
||||
|
||||
for (var/y_offset = -field_radius+1; y_offset < field_radius; y_offset++)
|
||||
T = locate(gen_turf.x - field_radius, gen_turf.y + y_offset, gen_turf.z)
|
||||
if (T) out += T
|
||||
|
||||
T = locate(gen_turf.x + field_radius, gen_turf.y + y_offset, gen_turf.z)
|
||||
if (T) out += T
|
||||
|
||||
return out
|
||||
. = RANGE_TURFS(field_radius, gen_turf)
|
||||
|
||||
@@ -11,17 +11,27 @@
|
||||
//Search for space turfs within range that are adjacent to a simulated turf.
|
||||
/obj/machinery/shield_gen/external/get_shielded_turfs()
|
||||
var/list/out = list()
|
||||
|
||||
|
||||
var/turf/gen_turf = get_turf(src)
|
||||
if (!gen_turf)
|
||||
return
|
||||
|
||||
|
||||
var/turf/U
|
||||
var/turf/T
|
||||
for (var/x_offset = -field_radius; x_offset <= field_radius; x_offset++)
|
||||
for (var/y_offset = -field_radius; y_offset <= field_radius; y_offset++)
|
||||
T = locate(gen_turf.x + x_offset, gen_turf.y + y_offset, gen_turf.z)
|
||||
if (istype(T, /turf/space))
|
||||
//check neighbors of T
|
||||
if (locate(/turf/simulated/) in orange(1, T))
|
||||
out += T
|
||||
|
||||
for (var/tt in RANGE_TURFS(field_radius, gen_turf))
|
||||
T = tt
|
||||
// Ignore station areas.
|
||||
if (the_station_areas[T.loc])
|
||||
continue
|
||||
else if (istype(T, /turf/space) || istype(T, /turf/simulated/floor/asteroid) || isopenturf(T))
|
||||
for (var/uu in RANGE_TURFS(1, T))
|
||||
U = uu
|
||||
if (T == U)
|
||||
continue
|
||||
|
||||
if (the_station_areas[U.loc])
|
||||
out += U
|
||||
break
|
||||
|
||||
return out
|
||||
|
||||
Reference in New Issue
Block a user