From 783e0deea30d2c3b57b2be297be1cfca909670eb Mon Sep 17 00:00:00 2001 From: evilew Date: Tue, 25 Feb 2025 14:48:53 +0100 Subject: [PATCH] modular colored airlocks - moved over the system from oldcode that kept most airlocks the same type, but recolored them according to the department --- code/game/machinery/doors/airlock.dm | 49 ++++++++++++++++-- code/game/machinery/doors/airlock_types.dm | 57 ++++++++++++++++----- hyperstation/icons/obj/doors/base.dmi | Bin 0 -> 6199 bytes hyperstation/icons/obj/doors/color.dmi | Bin 0 -> 2483 bytes hyperstation/icons/obj/doors/overlays.dmi | Bin 0 -> 22266 bytes hyperstation/icons/obj/doors/strip.dmi | Bin 0 -> 981 bytes 6 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 hyperstation/icons/obj/doors/base.dmi create mode 100644 hyperstation/icons/obj/doors/color.dmi create mode 100644 hyperstation/icons/obj/doors/overlays.dmi create mode 100644 hyperstation/icons/obj/doors/strip.dmi diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 8b6ac964d0..1683fe5575 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -43,7 +43,7 @@ /obj/machinery/door/airlock name = "airlock" - icon = 'GainStation13/icons/obj/doors/airlocks/station/public.dmi' //GS13 Edit: perspective sprites + icon = 'hyperstation/icons/obj/doors/base.dmi' //GS13 Edit: perspective sprites icon_state = "closed" max_integrity = 300 var/normal_integrity = AIRLOCK_INTEGRITY_N @@ -88,8 +88,13 @@ var/wiretypepath = /datum/wires/airlock // which set of per round randomized wires this airlock type has. var/airlock_material //material of inner filling; if its an airlock with glass, this should be set to "glass" //GS13 Edit Start: perspective sprites - var/overlays_file = 'GainStation13/icons/obj/doors/airlocks/station/overlays.dmi' - var/note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/station/overlays.dmi' //Used for papers and photos pinned to the airlock + var/overlays_file = 'hyperstation/icons/obj/doors/overlays.dmi' + var/note_overlay_file = 'hyperstation/icons/obj/doors/overlays.dmi' //Used for papers and photos pinned to the airlock + var/color_overlay_file = 'hyperstation/icons/obj/doors/color.dmi' + var/strip_overlay_file = 'hyperstation/icons/obj/doors/strip.dmi' + //colours! modular wow! + var/basecolor = "" + var/stripcolor = rgb(130,160,90) //GS13 End var/cyclelinkeddir = 0 @@ -462,6 +467,8 @@ var/mutable_appearance/panel_overlay var/mutable_appearance/weld_overlay var/mutable_appearance/damag_overlay + var/mutable_appearance/strip_overlay //gs13 - new airlocks + var/mutable_appearance/color_overlay //gs13 - new airlocks var/mutable_appearance/sparks_overlay var/mutable_appearance/note_overlay var/notetype = note_type() @@ -469,6 +476,12 @@ switch(state) if(AIRLOCK_CLOSED) frame_overlay = get_airlock_overlay("closed", icon) + //gs13 edit start - colored airlocks + color_overlay = get_airlock_overlay("closed", color_overlay_file) + strip_overlay = get_airlock_overlay("closed", strip_overlay_file) + color_overlay.color = basecolor + strip_overlay.color = stripcolor + //gs13 edit end if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file) else @@ -497,6 +510,12 @@ if(!hasPower()) return frame_overlay = get_airlock_overlay("closed", icon) + //gs13 edit start - colored airlocks + color_overlay = get_airlock_overlay("closed", color_overlay_file) + strip_overlay = get_airlock_overlay("closed", strip_overlay_file) + color_overlay.color = basecolor + strip_overlay.color = stripcolor + //gs13 edit end if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file) else @@ -539,6 +558,12 @@ if(AIRLOCK_CLOSING) frame_overlay = get_airlock_overlay("closing", icon) + //gs13 edit start - colored airlocks + color_overlay = get_airlock_overlay("closing", color_overlay_file) + strip_overlay = get_airlock_overlay("closing", strip_overlay_file) + color_overlay.color = basecolor + strip_overlay.color = stripcolor + //gs13 edit end if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_closing", overlays_file) else @@ -555,6 +580,12 @@ if(AIRLOCK_OPEN) frame_overlay = get_airlock_overlay("open", icon) + //gs13 edit start - colored airlocks + color_overlay = get_airlock_overlay("open", color_overlay_file) + strip_overlay = get_airlock_overlay("open", strip_overlay_file) + color_overlay.color = basecolor + strip_overlay.color = stripcolor + //gs13 edit end if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_open", overlays_file) else @@ -571,6 +602,12 @@ if(AIRLOCK_OPENING) frame_overlay = get_airlock_overlay("opening", icon) + //gs13 edit start - colored airlocks + color_overlay = get_airlock_overlay("opening", color_overlay_file) + strip_overlay = get_airlock_overlay("opening", strip_overlay_file) + color_overlay.color = basecolor + strip_overlay.color = stripcolor + //gs13 edit end if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_opening", overlays_file) else @@ -587,6 +624,12 @@ cut_overlays() add_overlay(frame_overlay) + //gs13 edit start - colored airlocks + if (basecolor) + add_overlay(color_overlay) + if (stripcolor) + add_overlay(strip_overlay) + //gs13 edit end add_overlay(filling_overlay) if(lights_overlay) add_overlay(lights_overlay) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 2222ea5cf1..984c5f2186 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -6,19 +6,22 @@ abandoned = TRUE /obj/machinery/door/airlock/command - icon = 'GainStation13/icons/obj/doors/airlocks/station/command.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(0,110,200) + stripcolor = rgb(115,200,255) assemblytype = /obj/structure/door_assembly/door_assembly_com wiretypepath = /datum/wires/airlock/command normal_integrity = 450 /obj/machinery/door/airlock/security - icon = 'GainStation13/icons/obj/doors/airlocks/station/security.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(235,50,50) //gs13 - modular colored airlocks + stripcolor = rgb(255, 213, 25) //gs13 - modular colored airlocks assemblytype = /obj/structure/door_assembly/door_assembly_sec wiretypepath = /datum/wires/airlock/security normal_integrity = 450 /obj/machinery/door/airlock/engineering - icon = 'GainStation13/icons/obj/doors/airlocks/station/engineering.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(235,190,0) //gs13 - modular colored airlocks + stripcolor = rgb(50,50,50) //gs13 - modular colored airlocks assemblytype = /obj/structure/door_assembly/door_assembly_eng wiretypepath = /datum/wires/airlock/engineering @@ -26,13 +29,12 @@ abandoned = TRUE /obj/machinery/door/airlock/medical - icon = 'GainStation13/icons/obj/doors/airlocks/station/medical.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(250,250,250) //gs13 - modular colored airlocks + stripcolor = rgb(0,255,255)//gs13 - modular colored airlocks assemblytype = /obj/structure/door_assembly/door_assembly_med wiretypepath = /datum/wires/airlock/medical /obj/machinery/door/airlock/maintenance - name = "maintenance access" - icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenance.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_mai normal_integrity = 250 @@ -41,18 +43,19 @@ /obj/machinery/door/airlock/maintenance/external name = "external airlock access" - icon = 'GainStation13/icons/obj/doors/airlocks/station/maintenanceexternal.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_extmai /obj/machinery/door/airlock/mining name = "mining airlock" - icon = 'GainStation13/icons/obj/doors/airlocks/station/mining.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(222, 150, 50) //gs13 - modular colored airlocks + stripcolor = rgb(162, 95, 28) //gs13 - modular colored airlocks assemblytype = /obj/structure/door_assembly/door_assembly_min wiretypepath = /datum/wires/airlock/cargo /obj/machinery/door/airlock/atmos name = "atmospherics airlock" - icon = 'GainStation13/icons/obj/doors/airlocks/station/atmos.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(131,163,93) + stripcolor = "" assemblytype = /obj/structure/door_assembly/door_assembly_atmo wiretypepath = /datum/wires/airlock/engineering @@ -60,22 +63,24 @@ abandoned = TRUE /obj/machinery/door/airlock/research - icon = 'GainStation13/icons/obj/doors/airlocks/station/research.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(250,250,250) //gs13 - modular colored airlocks + stripcolor = rgb(150,30,255) //gs13 - modular colored airlocks assemblytype = /obj/structure/door_assembly/door_assembly_research wiretypepath = /datum/wires/airlock/science /obj/machinery/door/airlock/freezer name = "freezer airlock" - icon = 'GainStation13/icons/obj/doors/airlocks/station/freezer.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_fre /obj/machinery/door/airlock/science - icon = 'GainStation13/icons/obj/doors/airlocks/station/science.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(250,250,250) //gs13 - modular colored airlocks + stripcolor = rgb(150,30,255) //gs13 - modular colored airlocks assemblytype = /obj/structure/door_assembly/door_assembly_science wiretypepath = /datum/wires/airlock/science /obj/machinery/door/airlock/virology - icon = 'GainStation13/icons/obj/doors/airlocks/station/virology.dmi' //GS13 Edit: perspective sprites + basecolor = rgb(250,250,250) //gs13 - modular colored airlocks + stripcolor = rgb(0,255,255) //gs13 - modular colored airlocks assemblytype = /obj/structure/door_assembly/door_assembly_viro wiretypepath = /datum/wires/airlock/medical @@ -87,6 +92,8 @@ /obj/machinery/door/airlock/glass opacity = 0 glass = TRUE + basecolor = "" + stripcolor = "" /obj/machinery/door/airlock/glass/incinerator autoclose = FALSE @@ -181,6 +188,7 @@ name = "gold airlock" icon = 'GainStation13/icons/obj/doors/airlocks/station/gold.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_gold + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/gold/glass opacity = 0 @@ -190,6 +198,7 @@ name = "silver airlock" icon = 'GainStation13/icons/obj/doors/airlocks/station/silver.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_silver + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/silver/glass opacity = 0 @@ -201,6 +210,7 @@ assemblytype = /obj/structure/door_assembly/door_assembly_diamond normal_integrity = 1000 explosion_block = 2 + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/diamond/glass normal_integrity = 950 @@ -212,6 +222,7 @@ icon = 'GainStation13/icons/obj/doors/airlocks/station/uranium.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_uranium var/last_event = 0 + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/uranium/process() if(world.time > last_event+20) @@ -233,6 +244,7 @@ desc = "No way this can end badly." icon = 'GainStation13/icons/obj/doors/airlocks/station/plasma.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_plasma + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) @@ -275,6 +287,7 @@ icon = 'GainStation13/icons/obj/doors/airlocks/station/bananium.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_bananium doorOpen = 'sound/items/bikehorn.ogg' + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/bananium/glass opacity = 0 @@ -284,6 +297,7 @@ name = "sandstone airlock" icon = 'GainStation13/icons/obj/doors/airlocks/station/sandstone.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_sandstone + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/sandstone/glass opacity = 0 @@ -293,6 +307,7 @@ name = "wooden airlock" icon = 'GainStation13/icons/obj/doors/airlocks/station/wood.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_wood + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/wood/glass opacity = 0 @@ -304,6 +319,7 @@ icon = 'GainStation13/icons/obj/doors/airlocks/shuttle/shuttle.dmi' //GS13 Edit: perspective sprites overlays_file = 'GainStation13/icons/obj/doors/airlocks/shuttle/overlays.dmi' //GS13 Edit: perspective sprites normal_integrity = 400 + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/titanium/glass normal_integrity = 350 @@ -315,6 +331,7 @@ icon = 'GainStation13/icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi' //GS13 Edit: perspective sprites overlays_file = 'GainStation13/icons/obj/doors/airlocks/clockwork/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_bronze + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/bronze/seethru assemblytype = /obj/structure/door_assembly/door_assembly_bronze/seethru @@ -330,6 +347,7 @@ icon = 'GainStation13/icons/obj/doors/airlocks/station2/glass.dmi' //GS13 Edit: perspective sprites overlays_file = 'GainStation13/icons/obj/doors/airlocks/station2/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_public + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/public/glass opacity = 0 @@ -360,6 +378,7 @@ overlays_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi' //GS13 Edit: perspective sprites note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/external/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_ext + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/external/glass opacity = 0 @@ -377,11 +396,13 @@ normal_integrity = 1000 security_level = 6 explosion_block = 2 + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/grunge icon = 'GainStation13/icons/obj/doors/airlocks/centcom/centcom.dmi' //GS13 Edit: perspective sprites overlays_file = 'GainStation13/icons/obj/doors/airlocks/centcom/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_grunge + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/grunge/abandoned abandoned = TRUE @@ -400,6 +421,7 @@ explosion_block = 2 normal_integrity = 400 // reverse engieneerd: 400 * 1.5 (sec lvl 6) = 600 = original security_level = 6 + stripcolor = 0 //gs13 - modular airlocks ////////////////////////////////// /* @@ -412,6 +434,7 @@ overlays_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_hatch + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/maintenance_hatch name = "maintenance hatch" @@ -419,6 +442,7 @@ overlays_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites note_overlay_file = 'GainStation13/icons/obj/doors/airlocks/hatch/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_mhatch + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/maintenance_hatch/abandoned abandoned = TRUE @@ -437,6 +461,7 @@ normal_integrity = 500 security_level = 1 damage_deflection = 30 + stripcolor = 0 //gs13 - modular airlocks ////////////////////////////////// /* @@ -448,6 +473,7 @@ icon = 'GainStation13/icons/obj/doors/airlocks/shuttle/shuttle.dmi' //GS13 Edit: perspective sprites overlays_file = 'GainStation13/icons/obj/doors/airlocks/shuttle/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_shuttle + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/shuttle/glass opacity = 0 @@ -466,6 +492,7 @@ aiControlDisabled = 1 normal_integrity = 700 security_level = 1 + stripcolor = 0 //gs13 - modular airlocks ////////////////////////////////// /* @@ -484,6 +511,7 @@ var/openingoverlaytype = /obj/effect/temp_visual/cult/door var/friendly = FALSE var/stealthy = FALSE + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/cult/Initialize(mapload) . = ..() @@ -560,6 +588,7 @@ overlays_file = 'GainStation13/icons/obj/doors/airlocks/cult/unruned/overlays.dmi' //GS13 Edit: perspective sprites assemblytype = /obj/structure/door_assembly/door_assembly_cult/unruned openingoverlaytype = /obj/effect/temp_visual/cult/door/unruned + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/cult/unruned/friendly friendly = TRUE @@ -592,6 +621,7 @@ damage_deflection = 30 normal_integrity = 240 var/construction_state = GEAR_SECURE //Pinion airlocks have custom deconstruction + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/clockwork/Initialize(mapload) . = ..() @@ -705,6 +735,7 @@ assemblytype = null glass = TRUE bound_width = 64 // 2x1 + stripcolor = 0 //gs13 - modular airlocks /obj/machinery/door/airlock/glass_large/narsie_act() return diff --git a/hyperstation/icons/obj/doors/base.dmi b/hyperstation/icons/obj/doors/base.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4d62d12fbac8170de5c9b1eb909088420e632ae2 GIT binary patch literal 6199 zcmZWt3p~^7|KD7~I1TASY;w&dtB~8;=yH&bTPlUfC6rKZquFLDa+^z0xy%X4=|U$b zir6Sp7|E@PG1uHSbJ^JD|D|(&xBs)(w(s+P-p}Xrc|OnQ`8=Q3_l~2z^)C=52nYoF z#n$GSGYAAG0ADXjQ2@E+aRCbaML3>xIZmNa&YnH%?d|RA>gwa>rlO*PKpgrlrTCOP$20ogaIf`0O6qj+5p$DvwT(_GG{B^`S$)e-7p6!d#TC~^KuuE5Z^U`*8Q=WdS z+wD^(es+uIPBldQL5fJquHL3{ZzWk8@ExwglwTrhdF9@01HhvbWG@1S&3wl&*!RkwN2YlQ3d7%?(suMy~|KqIyx zDVKh;d{`e5YYuDj$#82f!kH#)^!iFcuW_3az+&^dnuh}T&!=Av4{24q83}uq`XvWS z&2l%MrX-QNJ>yej?ted<|3tmWB7Ljj0oGx&MSjy=RC|ycd28ebRI!cHQz~jlY2ZlOi-5+-S3XA)Ydjb}R4f&BzvRnog&V%q`nb%g-(^G5UaX|wDN&USW%~CdI zB1VdQ);*|)`}9fq-6nr4N(3XQliNBn7nxe0w%QPgtdmG~^v-IU*bya}N>e2d{AHp8 z>LSCj_OCUJV8`@V9~H7$TTjL%3i$!W4>~X|C^=sjM+`>dvE`V8!f90xQG=0?v+fQf z5#9SToC&em*ZF(J`n6{O@05p-+9{!nr>&Sn5+XN?>*B2`!5v;deY)oIwXqfIsdPS1lS4&)698ZtGNLeds^s=tw#K(mxA;w$y-v1T_-${I)q#^^Lni z$%B1{6@~xR7`GhuA`f-*H^^uYA z@{Nk%9`2PHVqYQqez-1`s>d~3N7PAtj!dP2(06N&GdY)Q2D+tXPv4hHr4cMO{Ii;l zN**pbr<>Z;Xd#QWcYoAtP6mUew5yvMN1WQzA*6ZBlNYs&P@*CkdA}(^lX6bUE-4g? zf5Ma{OBX9FsQg$PxaCX$KA?EopQ0t8HJ-jjXqPxB)~cl@@8{ z9z*MY;hyakeCF2$ckz7q6s+9D_c&EpWloZ>mvy8qPe8_3s zCqKcY}y{IJo^L z@&%i7g7xJ7IGsJ&im>NL(_IM~_1a94J{?JfrGG<&peyW^vKNQ{^(Q$BdqT^VS#`>n zzH*8`ywag#)asc%tydUvEvSpd3r^}#3#b)SUFQKyix-~eGs-t-&D4EZzN%~a&?Lt@?3D$@ z{K>V;tvfNP+Kn@xIh+_f!?qt%w9n_XT5gI5kUSQV$b8}#Y=OS)fq^6w2SGx)XFYC` zj7nYMO?&1pvvWTo&iZ69#+073m)JT547QnSo2Ry3NaCLQ>3vjxUg1(%>{ra9Z6)eZ z%c+#6%^~)KO1N_;$$!a=%DKJAPq$vdXCiAdoiTd+46{7zp2;yocemz*N5f?STqfI8 z>&l>)K@Eh2y0cY|DRsyjLROcESj?Y}M(U!9!?;JI4z3(39aLTn9O!6c8nqNTJks(G z8oFItah}O3R?TLtD#KjRCwazF!A*uAGQF~fFShC-S2ZrHH7#GQ7XQN-b##lf)QbpM zHu+Dpv``aj-YM7HO;r8?w$-} zPp^$N_uNTu=q0FnmKKCJ(>siy+NuT3o^|+jVRC!p0#z)kF%_4ym-4Bc7U-~?HFrI? zzfx&EO`0X3SA`4##zM8K*B7QqC?~?bDp=(+F$ws4A`-8oR>0`(?ezs~!Lmsj+^V6~ zsdmFQy4^3+I$D1!$c^yq#I^*5ly!+Lg)7u zZ?_oHJ?u?TpyX4Ii6J#{Q%z&zvj+a|!H062$0jvso=K`}oZUC#O@y&^O;9P}!kE$X z6}o!uANHPgC&g_R=Dl=8mL_~$vtvXY-g3MhAHwDNYvrXKdd*$s^$q}G()m3OIMb2M8NyPK>AnBu>C5g-21#jU}L1k&%^Co|r zJ(t>JgJ!$OcnYtA_al72VBMmaEw%WV!L6Z{`QhUyIxi#ND#W4g%(qm7&Ja4yt7|O~x_be0Tb3u18QlxI*o+RYa_rkkU=?|dN4?fK$61%7x7XPOVAD_@7BQOJ+ZlT* z1Uxm2aXkdOL-qZ{$2gUDnGk=LY@ZNo!o}oH0o1LYX+Obp(ySgKR-5~Ip>R9kQrht6 zmqllthh>CH;uu3b4oUq!MMA$l2G&9)Ahff+ihv4A#&?YaB+*FX8hU+oe%(CP+85lCNDvHOrjTH^%(P1T6VZp5IcQEfE`HX5PRw>`49FKmZo=G`RNL?7Q?k zES8KyX9=;X$S@sVQ0JeP4z*Ssx7$e9#rv7DOp5jJ`E zLz__ecF*W(t1Dzf1G-G#VG*h#D9v(pMHIMj`xV?zXhetpO`hm`Dt=+OQ*IaJXVgp$ zL0PTybDbtiq%?|S=$?$xpCZEbEkHtJgCnKgmpv3t2B*ZJ*5E1 zYl?1I9z4giiYL;6s(HE#A3!#$cjz0mxPnY{40Sugyci4kVRZL|S)>n*pa4}<7|8Cx zxRV6}P#})%(;EyP`A=doFSg-QTrWoUcgE}ZrpDD_MlP|TXti!7ChdE&$g$}E!Os&d z?nzJ)ptUvd7hoy7MJqntl>BL(KjJuMJj#x4V3}fVaqI~7s#K~qlw7AU{9tI`)l!fg zY*toklX)1s>KyM6*n-%BNlmEtR*>BAGEy`oR!3x3)+$Ghp~!`0tI0Uq$?3p^NlvQO z`+f%wN--V{a!;zb@RmMkjog|`YDcMCGaN&8 zGDfM2n~~y_{Zi8#`E8FpWN!8d(b}J3!NpnDsq{_Q-wfF0p7 zlDaC|ARp2LkE0R%c1Fb<9ac>D*)o0~T!Y6R?uXOnpk6E1EH5{tX7-0zv6s zQ=hbxV|L1|ZOr1ABtE2X5E+Q$Uk5g=!s`$RHjrvwiR3_j>nw?oqjr5U@xUgZ<$Np+ zc3@MD$b}?|g-i8@VTnnz|5izP_j^DBqz0|3&%Pv(+fIi&%tJd?;YKh4aSI&| QZ zFOM9A%id)LfAdBP#Zw8l@w8nN^cbwYA$)J&)=<7>T)#PvqS~?skz0}si7lkQ`3%8Q z_I%X-+AhikCy%Xx+gmO?WS-(*uAd`U$q5J6mS-gA_2RpIkbJ3ad-lAKzzN^CHxFN~ zQXUE&TQhx0(k0Od%AOrIDWRz}bI~YJe%$GgB8YeWI zH3J#%%($8Dd4@?CR&b8lxiw=du=h+w5ea`{Aru@RFWVbkZTH2}m9a03ubm1UqVeu6 zc2-aHfU|Kc-ZVVlI(M<4_vxFZ&eg~obPuNTXmM;dB<*ecO~VdKcIeG2bJ7m4MT)dE z|5Dm|$CcV1@FR9xmPrGD2^nai^j~w-`XZ)5KA%y$WN`Z?(l9K3{NT z)Jngh$dGl-V_%*|9)sN4e6kC;Ce83Kx?fU4#<@#jFPvcWotcox@M)+V;0UH+ndWd3 zJRGOfG-%LrO-)j|)-P?|2sW2FQ$kdES8fb&+N^9$M;iUk0{P$d!BeY|qNV(%A{DiF zrHm&lN+cTPyp1b$;$`kgr=qDx@-6WT4~L9lRNuK*+h-=3%61DZ8RX)T2FM`P2gt>W z)f&~2@&g#4(sKkO#kFHf*^@E@YWw8Ru)2Ql!BpE_Pu_<O3^~#+7)Zs7W63Uj>t*moE=1~dUx<* z%`xy9SY*?=m!5u`w|O~G%~WufDQUubd*CSTvJG7y>xIWY0_lYu4mc-OM^W_uu*2?` zU&rR_jbSQr`Bf5;i*;QXzW-Tkc|JWv5I*r>{GxweET$eKB@~qYBh5gX!I_jy(drXJ z8~@eR*j{b++9%GlZN4%13Ua1x5zrUxA*zO)OR;z(9~pWL0%2De2I~a-mRXH;%JoG< z(l%Tt88jm|$X($nK`ofC`|r6YB`!=#x|2C)Z+&z=7N3BRjQB1srN^yQ${oGv@4oW{ zYq?@55V%xtI8dGDjbXz6?q%=XEQU_K?$Bv8{yuk3#)J(N*Na*FKb1Y!?0#v#9)35$ z+6w_}WzY3+pnzle=xGLB;~ddytBNpz*{m5{;>W=(0Y1)JOj>p2ibWU7xk>)L^kc6oc2 zwV~*jTED{s7pm{C`wU#p_UNj;+WJjid07Lfd&FWOQa)!AC9De*$CtzdYRgEx{%p9L z1#XSKzwYLPOO8pjiw+6D7M9C8kyw+GC!gd?d@b0jO_;HN5v;O&2bY7!tFDk{h=vkT!d##?l1m4 z&XBIdS8T;Tp#&);y@U6NN|J)};Tn_T|Q4@g}AW-`_$G+0Gc< zQJ5{x!kRrnsie&ZC!pcoJNqvXn;{I|#>~7T`Y_FU$qyV;0{TKG{pgZ&VEM-Na+Otd z<3#diY1$?G;CV%1f|c^}^4L#g^n#hWi-@=>o$PSJ4P|OQu{xiSyHt$EkA{Um5t9ym zj3(cGjSby4!<|p?@A+Tcl@wf#MjuW1^j&F@8~luWRpdW z@Iv~fX$V2U3r+a+TH)o_K)0k_RT=_bN}iwi9Bt^r+xgZ0wq@_UQv?p5SKI1$WD6ek z6;9ancm|cc{^hn{efF~p!3es_dDH(H)JLw@=v!H@5l>`2L6aZU=!d#HFteovJUe3S zdc7M#lC;Ws@aD6~(9{nEy_ow<0JfmCdTiyxMS2}*w`1(?0q@>Hw#V&{y*T1U{67$p BKUV+% literal 0 HcmV?d00001 diff --git a/hyperstation/icons/obj/doors/color.dmi b/hyperstation/icons/obj/doors/color.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fd4de10aae0987651910326306832f7229ec76a3 GIT binary patch literal 2483 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 Tk=v&DP63DA{oLwY@j3qiKUc>y literal 0 HcmV?d00001 diff --git a/hyperstation/icons/obj/doors/overlays.dmi b/hyperstation/icons/obj/doors/overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0d128d91ba58796ac635d7f6c8c190a53aa7d52f GIT binary patch literal 22266 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 Dd$G{! literal 0 HcmV?d00001