mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-03 22:12:38 +00:00
Fix space wind
This commit is contained in:
@@ -141,13 +141,28 @@ mob/living/carbon/human/airflow_hit(atom/A)
|
||||
Stun(round(airflow_speed * vsc.airflow_stun/2))
|
||||
. = ..()
|
||||
|
||||
zone/proc/movables()
|
||||
zone/proc/movables(list/origins)
|
||||
. = list()
|
||||
for(var/turf/T in contents)
|
||||
CHECK_TICK
|
||||
if (!origins || !origins.len)
|
||||
return
|
||||
|
||||
for(var/aa in T)
|
||||
var/atom/movable/A = aa
|
||||
if(!A.simulated || A.anchored || istype(A, /obj/effect) || istype(A, /mob/abstract/eye))
|
||||
continue
|
||||
. += A
|
||||
var/list/A // this should be the longer list
|
||||
var/list/B
|
||||
if (contents.len > origins)
|
||||
A = contents
|
||||
B = origins
|
||||
else
|
||||
A = origins
|
||||
B = contents
|
||||
|
||||
for (var/t in A)
|
||||
var/turf/T = t
|
||||
for (var/tt in B)
|
||||
var/turf/TT = tt
|
||||
if (T.contents.len > !!T.lighting_overlay && get_dist(T, TT) <= EDGE_KNOCKDOWN_MAX_DISTANCE)
|
||||
for (var/am in T)
|
||||
var/atom/movable/AM = am
|
||||
if (AM.simulated && !AM.anchored && !istype(AM, /obj/effect) && !istype(AM, /mob/abstract))
|
||||
.[AM] = TRUE
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
@@ -169,11 +169,11 @@ Class Procs:
|
||||
var/list/attracted
|
||||
var/list/repelled
|
||||
if(differential > 0)
|
||||
attracted = A.movables()
|
||||
repelled = B.movables()
|
||||
attracted = A.movables(connecting_turfs)
|
||||
repelled = B.movables(connecting_turfs)
|
||||
else
|
||||
attracted = B.movables()
|
||||
repelled = A.movables()
|
||||
attracted = B.movables(connecting_turfs)
|
||||
repelled = A.movables(connecting_turfs)
|
||||
|
||||
// These are async, with waitfor = FALSE
|
||||
flow(attracted, abs(differential), 0)
|
||||
@@ -239,7 +239,7 @@ Class Procs:
|
||||
|
||||
var/differential = A.air.return_pressure() - air.return_pressure()
|
||||
if(abs(differential) >= vsc.airflow_lightest_pressure)
|
||||
var/list/attracted = A.movables()
|
||||
var/list/attracted = A.movables(connecting_turfs)
|
||||
// This call is async, with waitfor = FALSE
|
||||
flow(attracted, abs(differential), differential < 0)
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define BLOCKED 3
|
||||
|
||||
#define ZONE_MIN_SIZE 14 //zones with less than this many turfs will always merge, even if the connection is not direct
|
||||
#define EDGE_KNOCKDOWN_MAX_DISTANCE 16 // Maximum distance between an airflow origin and a movable before knockdown no longer applies.
|
||||
|
||||
#define CANPASS_ALWAYS 1
|
||||
#define CANPASS_DENSITY 2
|
||||
|
||||
Reference in New Issue
Block a user