From 7ccca32db06c52fa49801d35cf6cea680a4ba526 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Tue, 31 Mar 2020 20:20:35 -0400 Subject: [PATCH] Add a few more features to airlock helpers --- .../embedded_controller/mapping_helpers.dm | 58 ++++++++++++++---- icons/misc/map_helpers.dmi | Bin 766 -> 840 bytes 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/embedded_controller/mapping_helpers.dm b/code/game/machinery/embedded_controller/mapping_helpers.dm index c4db355ab6..cd48226ced 100644 --- a/code/game/machinery/embedded_controller/mapping_helpers.dm +++ b/code/game/machinery/embedded_controller/mapping_helpers.dm @@ -10,12 +10,11 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 name = "use a subtype!" icon = 'icons/misc/map_helpers.dmi' plane = 20 //I dunno just high. - alpha = 200 + alpha = 170 - var/area/my_area //The controller we're wanting our device to use var/obj/machinery/embedded_controller/radio/my_controller - var/my_controller_type = /obj/machinery/embedded_controller/radio/airlock/ + var/my_controller_type = /obj/machinery/embedded_controller/radio/airlock //The device we're setting up var/my_device var/my_device_type @@ -24,8 +23,7 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 /obj/effect/map_helper/airlock/Initialize() ..() - my_area = get_area(src) - my_controller = locate() in my_area + my_controller = get_controller(get_area(src)) my_device = locate(my_device_type) in get_turf(src) if(!my_device) to_world("WARNING:Airlock helper '[name]' couldn't find what it wanted at: X:[x] Y:[y] Z:[z]") @@ -39,10 +37,40 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 /obj/effect/map_helper/airlock/Destroy() my_controller = null - my_area = null my_device = null return ..() +/obj/effect/map_helper/airlock/proc/get_controller(var/area/A) + if(!A) + return null + + var/list/potentials = list() + for(var/obj/O in A) + if(istype(O, my_controller_type)) + potentials += O + + //Couldn't find one + if(!potentials.len) + return null + + //Only found one + if(potentials.len == 1) + return potentials[1] + + //Gotta find closest + var/closest = potentials[potentials.len] + var/closest_dist = get_dist(src, closest) + potentials.len-- + while(potentials.len) + var/C = potentials[potentials.len] + potentials.len-- + var/dist = get_dist(src, C) + if(dist < closest_dist) + closest_dist = dist + closest = C + + return closest + /obj/effect/map_helper/airlock/proc/setup() return //Stub for subtypes @@ -57,10 +85,9 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 /obj/effect/map_helper/airlock/door/setup() var/obj/machinery/door/airlock/my_airlock = my_device my_airlock.lock() - my_airlock.frequency = my_controller.frequency my_airlock.id_tag = my_controller.id_tag + tag_addon - if(my_airlock.radio_connection) //Initialized before us - my_airlock.set_frequency(my_controller.frequency) + my_airlock.frequency = my_controller.frequency + my_airlock.set_frequency(my_controller.frequency) /obj/effect/map_helper/airlock/door/ext_door name = "exterior airlock door" @@ -96,6 +123,16 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 icon_state = "pump" tag_addon = "_pump" +/obj/effect/map_helper/airlock/atmos/pump_out_internal + name = "air dump intake" + icon_state = "pumpdin" + tag_addon = "_pump_out_internal" + +/obj/effect/map_helper/airlock/atmos/pump_out_external + name = "air dump output" + icon_state = "pumpdout" + tag_addon = "_pump_out_external" + /* Sensors - did you know they function as buttons? You don't also need a button. @@ -109,8 +146,7 @@ Any frequency works, it's self-setting, but it seems like people have decided 13 var/obj/machinery/airlock_sensor/my_sensor = my_device my_sensor.id_tag = my_controller.id_tag + tag_addon my_sensor.frequency = my_controller.frequency - if(my_sensor.radio_connection) //Initialized before us - my_sensor.set_frequency(my_controller.frequency) + my_sensor.set_frequency(my_controller.frequency) if(command) my_sensor.command = command diff --git a/icons/misc/map_helpers.dmi b/icons/misc/map_helpers.dmi index b59020c3b81476901b70c7a22ad9e4195e0b47ec..da565a67c083dbf4b7b493e8496cd3b31aaf34ad 100644 GIT binary patch delta 802 zcmV+-1Ks@o1;_>=iBL{Q4GJ0x0000DNk~Le0001h0001B1Oos704G#udXXVCf2w*^ zSad{Xb7OL8aCB*JZU6vyoQ=`J3c@f92H(ah)E$$cF6T-eJ&a3$`gur?2li z1@WNk?GJoE38WOq?$i&WJ@@<$febov5WCHmvxiYp&qE_Q(_pSTz6Oe8ggF)kXUYVc zW6jwmj27NmV%Y7xAs{V8ce;gV2tNF!nidk+IDa4SmGqIeV$&s=C2CLLh)@LD= zao^(p99W8OXqQJm0Z;;i`>1(xc>n+cC`m*?R9J=Wm+NtZFc5_84hU4hBq@Mo;tpuQ zMrt5)*MA8)JwYcK36aOd!zTH$8S`=IbSrZ@?bi9psS?n>TfH@P1-uBWf2pqne2f+_ z4wZn(79eT?!jv%9113{IJwTT*?g32tcL#uOKkfredKq>AOe6lX0=@=*zM8b>0N#c3 zvm3BJ=_3H&2d$egacxqb1EQVSNwgQ-nv~~&XcjsU0tH=#7Qj3M#M4N3ln7Ev@D&7} z0pdL9gp@-4Nef^;=t?S)e>$XU)g9d?!>%M!nJ%Ck3YY=fB0@n| zEP$RDW`I-+0Q6JPl_J1eS7v~`58z!%0Mre_HK51#0M?aAxmj494W-;Pu1=>`E)Ul7 z;Xmrkc5==~YS}F1d{n@z>uF!)W5C5t)==aV00FdVX}E?Wp9Fv!e-#*t{7(R=I#nVJ zMP4b`$mVojELz5&7PHjb574Mng~FX!qX!H1cteK{J(hSxZH+7*lAA-5$Mojd?${d;_jy2Y+Qz;NFdvqY{{;XB zr)}i(0Cw7LK7IX*ssre+Z4&RjlcfOWJ<|cyHxT+yc^kh6AnO6Gdr@^;S-n;R0ZO;> g?qS+J&W8?t0m<&rJehnoQUCw|07*qoM6N<$f}?j=I{*Lx delta 728 zcmV;}0w?{*2L1&hiBL{Q4GJ0x0000DNk~Le0001B0001B1Oos701&on3y~o-f1-L+ zSad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1* z5qgSK^NKU`aOp%*mS0*zlsbZne^T=Ei-@ojq>LClLF$S#a|?1(2`Vip%`L#CNLj(v z&jlRr0M~>K|)*AIgZ>%-`XCtt!QOEU;-TfWY zBkgL?)BUn5$zfZAslgZUe+><-Kq#GyYs$m`KQFC-^$Q^WI~K4iz;DWa4Sd)Sfnt`B zifM%^^}{phERrJYOc#+wS!V|CY0s~)&VhUC-vQPDFvOwY79L;?0rF9!0oF$V?Cu|d z23Y67&FmK~Y6NifxrG-X^>e|2pI`;O|%wCekzN!qDU zpF2X;$tES=nsq?DHCr5ZZ_PR&-kNnlyfv#*?~?i)o^Jk2sq9KFzf-Kox}1G3EK%c^p0u(f8uQcVmV9h=ON&v z!z>KsS>iEO06