Fix space wind

This commit is contained in:
Lohikar
2018-02-20 16:52:25 -06:00
parent 9496204aca
commit f7a4d1bdeb
3 changed files with 29 additions and 13 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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