From 58bc7fbb405c8efa2552757ceb0ac29a402781e3 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 11 Jul 2015 11:14:20 -0400 Subject: [PATCH] Cleans up dynamic member lookup --- code/ZAS/Airflow.dm | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index e5c9af7f73..7136175519 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -62,6 +62,19 @@ obj/item/check_airflow_movable(n) /atom/movable/var/tmp/airflow_time = 0 /atom/movable/var/tmp/last_airflow = 0 +/atom/movable/proc/AirflowCanMove(n) + return 1 + +/mob/AirflowCanMove(n) + if(status_flags & GODMODE) + return 0 + if(buckled) + return 0 + var/obj/item/shoes = get_equipped_item(slot_shoes) + if(istype(shoes) && (shoes.item_flags & NOSLIP)) + return 0 + return 1 + /atom/movable/proc/GotoAirflowDest(n) if(!airflow_dest) return if(airflow_speed < 0) return @@ -69,18 +82,13 @@ obj/item/check_airflow_movable(n) if(airflow_speed) airflow_speed = n/max(get_dist(src,airflow_dest),1) return - last_airflow = world.time if(airflow_dest == loc) step_away(src,loc) + if(!src.AirflowCanMove(n)) + return if(ismob(src)) - if(src:status_flags & GODMODE) - return - if(istype(src, /mob/living/carbon/human)) - if(src:buckled) - return - if(src:shoes && src:shoes.item_flags & NOSLIP) - return src << "You are sucked away by airflow!" + last_airflow = world.time var/airflow_falloff = 9 - sqrt((x - airflow_dest.x) ** 2 + (y - airflow_dest.y) ** 2) if(airflow_falloff < 1) airflow_dest = null @@ -116,8 +124,9 @@ obj/item/check_airflow_movable(n) if(!istype(loc, /turf)) break step_towards(src, src.airflow_dest) - if(ismob(src) && src:client) - src:client:move_delay = world.time + vsc.airflow_mob_slowdown + var/mob/M = src + if(istype(M) && M.client) + M.client.move_delay = world.time + vsc.airflow_mob_slowdown airflow_dest = null airflow_speed = 0 airflow_time = 0 @@ -134,18 +143,11 @@ obj/item/check_airflow_movable(n) return if(airflow_dest == loc) step_away(src,loc) + if(!src.AirflowCanMove(n)) + return if(ismob(src)) - if(src:status_flags & GODMODE) - return - if(istype(src, /mob/living/carbon/human)) - if(src:buckled) - return - if(src:shoes) - if(istype(src:shoes, /obj/item/clothing/shoes/magboots)) - if(src:shoes.item_flags & NOSLIP) - return src << "You are pushed away by airflow!" - last_airflow = world.time + last_airflow = world.time var/airflow_falloff = 9 - sqrt((x - airflow_dest.x) ** 2 + (y - airflow_dest.y) ** 2) if(airflow_falloff < 1) airflow_dest = null