From b8a7957a2294d565a9e1b00804e98e1840cc1a3e Mon Sep 17 00:00:00 2001 From: Perakp Date: Sat, 7 Dec 2013 08:55:07 +0200 Subject: [PATCH] Adds deconstruction for DNA scanner and cloning pod. Adding wires to a machine frame uses one unit of wire. Wires returned from deconstructing return 1 unit of wire. Fixes issue #1001 --- code/game/dna.dm | 51 ++++++++++++++---- code/game/machinery/autolathe.dm | 10 +--- code/game/machinery/camera/camera.dm | 1 - code/game/machinery/cloning.dm | 30 ++++++++++- code/game/machinery/constructable_frame.dm | 10 ++-- code/game/machinery/machinery.dm | 21 ++++++++ .../telecomms/machine_interactions.dm | 18 ++++--- code/game/machinery/vending.dm | 1 - code/game/mecha/mech_fabricator.dm | 23 ++------ code/modules/power/port_gen.dm | 20 +++---- code/modules/research/circuitprinter.dm | 17 ++---- code/modules/research/destructive_analyzer.dm | 25 +++------ code/modules/research/protolathe.dm | 29 +++------- code/modules/research/rdconsole.dm | 2 +- code/modules/research/rdmachines.dm | 3 +- code/modules/research/server.dm | 25 ++------- icons/obj/Cryogenic2.dmi | Bin 43374 -> 45632 bytes icons/obj/cloning.dmi | Bin 8298 -> 9878 bytes 18 files changed, 143 insertions(+), 143 deletions(-) diff --git a/code/game/dna.dm b/code/game/dna.dm index 2e980b50ad0..ada6aab647f 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -339,16 +339,15 @@ /obj/machinery/dna_scannernew/New() ..() - component_parts = newlist( - /obj/item/weapon/circuitboard/clonescanner, - /obj/item/weapon/stock_parts/scanning_module, - /obj/item/weapon/stock_parts/manipulator, - /obj/item/weapon/stock_parts/micro_laser, - /obj/item/weapon/stock_parts/console_screen, - /obj/item/weapon/cable_coil, - /obj/item/weapon/cable_coil - ) - RefreshParts() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/clonescanner(null) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(null) + component_parts += new /obj/item/weapon/stock_parts/manipulator(null) + component_parts += new /obj/item/weapon/stock_parts/micro_laser(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + component_parts += new /obj/item/weapon/cable_coil(null, 1) + /obj/machinery/dna_scannernew/proc/toggle_open() if(open) return close() @@ -378,6 +377,9 @@ /obj/machinery/dna_scannernew/proc/close() if(open) + if(panel_open) + usr << "Close the maintenance panel first." + return 0 open = 0 density = 1 for(var/mob/living/carbon/C in loc) @@ -409,6 +411,9 @@ /obj/machinery/dna_scannernew/proc/open() if(!open) + if(panel_open) + usr << "Close the maintenance panel first." + return if(locked) usr << "The bolts are locked down, securing the door shut." return @@ -432,6 +437,31 @@ return /obj/machinery/dna_scannernew/attackby(obj/item/weapon/grab/G, mob/user) + + if(istype(G, /obj/item/weapon/screwdriver)) + if(occupant) + user << "The maintenance panel is locked." + return + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + panel_open = !panel_open + if(panel_open) + icon_state = "[icon_state]_maintenance" + user << "You open the maintenance panel of [src]." + else + if(open) + icon_state = "[initial(icon_state)]_open" + else + icon_state = "[initial(icon_state)]" + user << "You close the maintenance panel of [src]." + return + + if(istype(G, /obj/item/weapon/crowbar)) + if(panel_open) + for(var/obj/I in contents) // in case there is something in the scanner + I.loc = src.loc + default_deconstruction_crowbar() + return + if(!istype(G, /obj/item/weapon/grab) || !ismob(G.affecting)) return if(!open) @@ -482,6 +512,7 @@ del(src) +//DNA COMPUTER /obj/machinery/computer/scan_consolenew name = "\improper DNA scanner access console" desc = "Scan DNA." diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 16cd92e782f..6a31eb60051 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -176,21 +176,13 @@ var/global/list/autolathe_recipes_hidden = list( \ return 1 if (opened) if(istype(O, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc if(m_amount >= 3750) var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) G.amount = round(m_amount / 3750) if(g_amount >= 3750) var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) G.amount = round(g_amount / 3750) - del(src) + default_deconstruction_crowbar() return 1 else user.set_machine(src) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 6f6db8ad4ec..7577a2ddbe7 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -14,7 +14,6 @@ var/c_tag_order = 999 var/status = 1.0 anchored = 1.0 - var/panel_open = 0 // 0 = Closed / 1 = Open var/invuln = null var/obj/item/device/camera_bug/bug = null var/obj/item/weapon/camera_assembly/assembly = null diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 958bd693066..3e6de01e367 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -19,6 +19,19 @@ var/attempting = 0 //One clone attempt at a time thanks var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk +/obj/machinery/clonepod/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/clonepod(src) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) + component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator(src) + component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + + //The return of data disks?? Just for transferring between genetics machine/cloning machine. //TO-DO: Make the genetics machine accept them. /obj/item/weapon/disk/data @@ -98,6 +111,8 @@ //Start growing a human clone in the pod! /obj/machinery/clonepod/proc/growclone(var/ckey, var/clonename, var/ui, var/se, var/mindref, var/mrace) + if(panel_open) + return 0 if(mess || attempting) return 0 var/datum/mind/clonemind = locate(mindref) @@ -217,7 +232,7 @@ src.occupant = null if (src.locked) src.locked = 0 - if (!src.mess) + if (!src.mess && !panel_open) icon_state = "pod_0" use_power(200) return @@ -226,6 +241,19 @@ //Let's unlock this early I guess. Might be too early, needs tweaking. /obj/machinery/clonepod/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/screwdriver)) + if(occupant || mess || locked) + user << "The maintenance panel is locked." + return + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]") + return + + if(istype(W, /obj/item/weapon/crowbar)) + if(panel_open) + default_deconstruction_crowbar() + return + if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (!src.check_access(W)) user << "\red Access Denied." diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a41d002efe0..029063c0d51 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -125,9 +125,9 @@ del(O) new_machine.component_parts = list() for(var/obj/O in src) - O.loc = new_machine + O.loc = null new_machine.component_parts += O - circuit.loc = new_machine + circuit.loc = null new_machine.RefreshParts() del(src) @@ -137,8 +137,10 @@ if(istype(P, /obj/item/weapon/cable_coil)) var/obj/item/weapon/cable_coil/CP = P if(CP.amount > 1) - var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src) - CC.amount = 1 + var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src, 1) + CP.amount-- + if(!CP.amount) del(CP) + else CP.update_icon() components += CC req_components[I]-- update_req_desc() diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 2ea74cf174e..fd3c869d85b 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -108,6 +108,7 @@ Class Procs: var/uid var/manual = 0 var/global/gl_uid = 1 + var/panel_open = 0 /obj/machinery/New() ..() @@ -238,3 +239,23 @@ Class Procs: uid = gl_uid gl_uid++ +/obj/machinery/proc/default_deconstruction_crowbar() + playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) + var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) + M.state = 2 + M.icon_state = "box_1" + for(var/obj/I in component_parts) + if(I.reliability != 100 && crit_fail) + I.crit_fail = 1 + I.loc = src.loc + del(src) + +/obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/icon_state_open, var/icon_state_closed) + if (!panel_open) + panel_open = 1 + icon_state = icon_state_open + user << "You open the maintenance hatch of [src]." + else + panel_open = 0 + icon_state = icon_state_closed + user << "You close the maintenance hatch of [src]." diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index a3c1ee3f340..a22750aa3dd 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -68,9 +68,12 @@ user << "You finish prying out the components." // Drop all the component stuff - if(contents.len > 0) - for(var/obj/x in src) - x.loc = user.loc + if(component_parts) + for(var/obj/I in component_parts) + if(I.reliability != 100 && crit_fail) + I.crit_fail = 1 + I.loc = src.loc + else // If the machine wasn't made during runtime, probably doesn't have components: @@ -81,13 +84,14 @@ for(var/i = 1, i <= C.req_components[I], i++) newpath = text2path(I) var/obj/item/s = new newpath - s.loc = user.loc - if(istype(P, /obj/item/weapon/cable_coil)) - var/obj/item/weapon/cable_coil/A = P + s.loc = src.loc + if(istype(s, /obj/item/weapon/cable_coil)) + var/obj/item/weapon/cable_coil/A = s A.amount = 1 + A.update_icon() // Drop a circuit board too - C.loc = user.loc + C.loc = src.loc // Create a machine frame and delete the current machine var/obj/machinery/constructable_frame/machine_frame/F = new diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 661c885b4d7..d7b3aa81b6a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -40,7 +40,6 @@ var/shoot_inventory = 0 //Fire items at customers! We're broken! var/shut_up = 0 //Stop spouting those godawful pitches! var/extended_inventory = 0 //can we access the hidden inventory? - var/panel_open = 0 //Hacking that vending machine. Gonna get a free candy bar. var/scan_id = 1 var/obj/item/weapon/coin/coin var/datum/wires/vending/wires = null diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 9bf3da5d6ff..864ff0f51d2 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -34,7 +34,6 @@ var/list/queue = list() var/processing_queue = 0 var/screen = "main" - var/opened = 0 var/temp var/list/part_sets = list( //set names must be unique "Cyborg"=list( @@ -701,25 +700,11 @@ /obj/machinery/mecha_part_fabricator/attackby(obj/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - icon_state = "fab-o" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "fab-idle" - user << "You close the maintenance hatch of [src]." + default_deconstruction_screwdriver(user, "fab-o", "fab-idle") + return - if (opened) + if (panel_open) if(istype(W, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc if(src.resources["metal"] >= 3750) var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) G.amount = round(src.resources["metal"] / G.perunit) @@ -744,7 +729,7 @@ if(src.resources["bananium"] >= 2000) var/obj/item/stack/sheet/mineral/clown/G = new /obj/item/stack/sheet/mineral/clown(src.loc) G.amount = round(src.resources["bananium"] / G.perunit) - del(src) + default_deconstruction_crowbar() return 1 else user << "\red You can't load the [src.name] while it's opened." diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 628956fa68a..0568744f67f 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -53,7 +53,6 @@ display round(lastgen) and plasmatank amount var/active = 0 var/power_gen = 5000 - var/open = 0 var/recent_fault = 0 var/power_output = 1 @@ -115,8 +114,8 @@ display round(lastgen) and plasmatank amount component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/cable_coil(src) - component_parts += new /obj/item/weapon/cable_coil(src) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/cable_coil(src, 1) component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new board_path(src) var/obj/sheet = new sheet_path(null) @@ -231,21 +230,14 @@ display round(lastgen) and plasmatank amount playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) else if(istype(O, /obj/item/weapon/screwdriver)) - open = !open + panel_open = !panel_open playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(open) + if(panel_open) user << "\blue You open the access panel." else user << "\blue You close the access panel." - else if(istype(O, /obj/item/weapon/crowbar) && !open) - var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc) - for(var/obj/item/I in component_parts) - if(I.reliability < 100) - I.crit_fail = 1 - I.loc = src.loc - new_frame.state = 2 - new_frame.icon_state = "box_1" - del(src) + else if(istype(O, /obj/item/weapon/crowbar) && !panel_open) + default_deconstruction_crowbar() /obj/machinery/power/port_gen/pacman/attack_hand(mob/user as mob) ..() diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 5da8dbf3688..5ac1762d266 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -52,19 +52,12 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). if (shocked) shock(user,50) if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - if(linked_console) - linked_console.linked_imprinter = null - linked_console = null - icon_state = "circuit_imprinter_t" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "circuit_imprinter" - user << "You close the maintenance hatch of [src]." + if(linked_console) + linked_console.linked_imprinter = null + linked_console = null + default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index a6501553fad..bee0c198916 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -44,27 +44,14 @@ Note: Must be placed within 3 tiles of the R&D Console if (shocked) shock(user,50) if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - if(linked_console) - linked_console.linked_destroy = null - linked_console = null - icon_state = "d_analyzer_t" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "d_analyzer" - user << "You close the maintenance hatch of [src]." + if(linked_console) + linked_console.linked_destroy = null + linked_console = null + default_deconstruction_screwdriver(user, "d_analyzer_t", "d_analyzer") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - I.loc = src.loc - del(src) + default_deconstruction_crowbar() return 1 else user << "\red You can't load the [src.name] while it's opened." diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index de1a92ec018..ec908f22d73 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -57,30 +57,13 @@ Note: Must be placed west/left of and R&D console to function. if (O.is_open_container()) return 1 if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - if(linked_console) - linked_console.linked_lathe = null - linked_console = null - icon_state = "protolathe_t" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "protolathe" - user << "You close the maintenance hatch of [src]." + if(linked_console) + linked_console.linked_lathe = null + linked_console = null + default_deconstruction_screwdriver(user, "protolathe_t", "protolathe") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(istype(I, /obj/item/weapon/reagent_containers/glass/beaker)) - reagents.trans_to(I, reagents.total_volume) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc if(m_amount >= 3750) var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) G.amount = round(m_amount / G.perunit) @@ -108,7 +91,7 @@ Note: Must be placed west/left of and R&D console to function. if(adamantine_amount >= 2000) var/obj/item/stack/sheet/mineral/adamantine/G = new /obj/item/stack/sheet/mineral/adamantine(src.loc) G.amount = round(adamantine_amount / G.perunit) - del(src) + default_deconstruction_crowbar() return 1 else user << "\red You can't load the [src.name] while it's opened." diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index cb1bd68ca44..b77802f59b8 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -99,7 +99,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any). for(var/obj/machinery/r_n_d/D in oview(3,src)) - if(D.linked_console != null || D.disabled || D.opened) + if(D.linked_console != null || D.disabled || D.panel_open) continue if(istype(D, /obj/machinery/r_n_d/destructive_analyzer)) if(linked_destroy == null) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 68def8bd39c..ee922a055a6 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -17,7 +17,6 @@ var/hack_wire var/disable_wire var/shock_wire - var/opened = 0 var/obj/machinery/computer/rdconsole/linked_console /obj/machinery/r_n_d/New() @@ -53,7 +52,7 @@ /obj/machinery/r_n_d/attack_hand(mob/user as mob) if (shocked) shock(user,50) - if(opened) + if(panel_open) var/dat as text dat += "[src.name] Wires:
" for(var/wire in src.wires) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 06aa463f2b0..b90917b53e1 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -19,8 +19,8 @@ component_parts = list() component_parts += new /obj/item/weapon/circuitboard/rdserver(src) component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) - component_parts += new /obj/item/weapon/cable_coil(src) - component_parts += new /obj/item/weapon/cable_coil(src) + component_parts += new /obj/item/weapon/cable_coil(src, 1) + component_parts += new /obj/item/weapon/cable_coil(src, 1) RefreshParts() src.initialize(); //Agouri @@ -131,27 +131,12 @@ if (shocked) shock(user,50) if (istype(O, /obj/item/weapon/screwdriver)) - if (!opened) - opened = 1 - icon_state = "server_o" - user << "You open the maintenance hatch of [src]." - else - opened = 0 - icon_state = "server" - user << "You close the maintenance hatch of [src]." + default_deconstruction_screwdriver(user, "server_o", "server") return - if (opened) + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) griefProtection() - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc) - M.state = 2 - M.icon_state = "box_1" - for(var/obj/I in component_parts) - if(I.reliability != 100 && crit_fail) - I.crit_fail = 1 - I.loc = src.loc - del(src) + default_deconstruction_crowbar() return 1 /obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves. diff --git a/icons/obj/Cryogenic2.dmi b/icons/obj/Cryogenic2.dmi index 7314ac709af8ca33c79e0da77e071b78347cd95c..91e301beded81f4f8134bc6c54076060ad248b42 100644 GIT binary patch delta 12220 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 delta 9940 zcmchdc{o)6|MzWKin8yKohU*G8DtrImaN%AvZd@X9I})>``%=avLs8kp@i(A>O?7bSK8@v*}l-S!(winxuS|#Oyvad{m`&D2{0F4_ptnUHPij zQ2N{{Z(2k24cHzkpJC_L zO=y)it2g4e&s3cfg9Y4?O=f0KPW9B9}B~|Bz|Nj;I2GJd|!J972=e37e#tB z!-uR)n+!o6YwZ}V6(`MtQkv>V16`3uLi)E>VKU^AqPG;UHEDiHguVQ5ExR;U**tN` zpfoCTNK?`NMm-7Cl{_f|BR&?hfxf+OwcOS_vyUMqaqQT)0u*A}d#zfQ#|I_`UIS(U z8;)+S1%S;n1j0hZ!nm#8)A8_o1s++@dHl@;KYDl+LdNKUo`1B|m!*#CPz(A2u}*R3 zm6u44!t?(iBP|ldWmVDQmzM6%z$9v>wJ%V&ZXFbJXk69#adZ@^mjBW2iqF=J&W#(y zhlhuhXU`g#m~_rG2M~_60FY!&)wv0IaygjLBSWr#huq`U%k>o zzx@dB#sGYiLwb^T>L<^v1jUwM=Z2 zE;Gqfd<=lERyzQElU(ATDlshX5b1oT%pLxbmNE4%m+Chj<vY0(#GrMO&~Q9b~+;bV(!>^W3`0f{}Z*ogDHQG%CeP z-tY4ujrKa~`SpN>AK%vmu)*{3i+Y9h)@TO6ADu(99Z3fW*c%$sonaLDgfX+VO`zAv zQ&}DTv6>P{nNS+Cnxt^r;n@qyM1ftgf)J_quOp}*KalASAtoDp_Yjqy^a6w0RqqMn zIJPRpL{(shP6XgtsjCh zjI=Qf&zJ_<0I}FFdT5&b)?2TPxx!jeXql`jRc;y<)UfA!4~1^KIPM8%BNow!7$k*1;t8QX(C;MeNt7rOZS9uV)(Bn z);)mV*5`mNf}73vXyBisXHV^h_tvV_mSH5aAPxBQ>k6~mT3VXCtqhk#&iN^!9WNp^ zS`9RdYYRJ3gclkVP6y+|IC-3?#dd|ha?Va=ctVBH=^Xd@6*}SDsH@G)Ll2CJ##%Eo zSqqZyWkw`>e4u-Qu{+F1rWwrd9vy0F^}GX+3p|s?*o*F_ngAu?B55ek zXP`oA4@F7FaD)c4%qG2pZ#^8>E96`X(^10b~{0nk2> zWK|vYF1=_l=}gjpD*ND~CL=iCO!ePn9|A2ONna?fFc;9q9}lEnHvBrr8MKm{e8VY} zUyg8mzGZJni-0A<6^RI(ID{CS(bA$(-v0j0IfhLdLt5#R2sexZ@aTaWJkJq)-VuTu z-v&odnf%Th<_OytYqBO$qFlp(lzCBm>?dz|zwIB(w49X&8CLv}bb5V{oMn}tUJ2kj z^;k)J*ej;8g=Y=6e7YY)wGc$fPzoVVSBs$_DJ2rGDP-bRi8Bic9>33U0bW` zf{z{wFV-3Eoh6Qfhhql#@zecqU9>N4Wlru!hqvXxJt+B{tFAQt`Ml=loZ(_!!pco_ zXGv+PM@&r%m22oFVIZYCDk|!!TK>Y(@t&9OjjnBqPyG1V_n~$~m3P{sSWti@>n$vM z2T*jh<%9EzY9TCHx3;k8nQMFU2zR)g;Nj=1XVInd`1yl$Q<09YB!PO^Dy^RMRl)}g zq38T|N{UUZ@6o8Ls`@q0T#*(Jqh23>`=l>RdiRO1ftJ6Rp(rrERJbeCX&q=h$x|q?+?x>cqnFh0)P9UC8HM}h0zPgv-AL;Dcfw&^X*qc}eI;7nrEkw(=!`p0{NnA~B*!{8)Q7`e5y4BRhI~&E<~m*A+g%zc&d;~wjf;pN z74F3P#T_0j0`At%7MuOoqTtbgoXo6s;P5*Qb_S$FN20=hMTa%;Z$mB`9~b9dgo8ZT@x>82FM#OVC!9 zuVJ@Kp49tnuyVwAX6%Bq*-u_qJY(TOCsHQKROf(?^W53YXZ>@{$Au!=9Lrq{NNqMT z?9IncnaL?BX!Es?(Uo8w2Vc`b#{d*ulS|dOWU?df6&y^(Kg!gc-`JI0Sm7g`xm^3M zmY=KHsav;XiHS=l-fe7H_6`GDs)Dyl^<%^oGx^_NJ};QFMVR7Zc(LhA7G-&!HiLQ{^9JX zuRI~RiGi>CbMYFj6~4)In`h~^1GfDP&88&z246lgomxm5%NG$5zM;^R8WnZA`0>qv z0J#upMq=5shEezVOR{Q`}+Et4(~cQ z<|tkWM#4);+%x%)kB?RI_2=I(pFe*dM5WKe!zlL2uU}8K;*O6(zKByc3Wg^qK7S5y zWM*Y`dRw8lVp{?Z?z6J8ei|5XeDL5|Lxb%8=JXot&*cff4s*2lk(!#?#ncsh)5K9g z0UqDfB)?SDQ+?QE^(XPAYj#8d2iU-){lT#@sGHlRva&MvYaU^ia=s0}ii_hpaFJ_D zs9V(CPstZ;^+f`KzVka+&9|Btac|Wn#0lM}8*WKSN><*VmiR<3zHcpLa$qC+Y;MCkqj%sPV z$~F(-p{r~j8@KW-UbuXMly8M_cK1Kz0J7fS%G2zoUX7Gn26RSx{90sn+Y%ffWghJm zzz!GFS}rOC?5`()Kn36C{XNmQVuJOuWw^33GfgXP-WRm_A3a(LNcpdLb}|pQq!5JE zktzkriQm3Cms_`N2CK2&!Jm)sbaHWFI{>b&psSs~UJRr5ljm?uYJ~D~hrWMd7k09o zgb{3q;LSaC>Qs7B*Z5nFoLCOB z?CnweM^~=`SD`|Kl2k&AVFHTiVot~}rm{v`e&Rd^G5b2ij)Xl@g<3gAj>3)Y0eW7Q z6@d@bU0y`b3EKfX6E1s_|AKws3b3+!ev$8t3%KMMkUH2w4-5PNBZP-gJzw9;vbZ$w zP7L86v;zEvD|1c13CHM(CY$6q#e*~W!Za(QPh$2*`y0dk_}2R1dEgYbF%~F4<`inj zJI`913wN8=uD#mz`L_H6<s|BnHT(cdTJ(p#2JAbo-s*ZoF`Nn)o42`@mhS=LS%Igmhhsj{($(q;%+X zhPMxoSu7k)Q&sgFwkw@7d6T**iP!6?;yXiand4}b$tl||BtUJ<7*ib*puCvfH+H?E zmzP575PT5)p#Gc`ZfCKFrEFxxcoehcg8i5($^WYzCfRcb#di;KOPxa|78@&_Ef-YeaIJ$kNuzksVonT%A9QiPy3l1ITRS@*&L+HquyOf< z53jO3W1HmgOxG9fC`p|H2O4q`%tRs|Fong~S&?5a+VbE6z^(qv=xB6~oUgy{#sq`A zlT*U|9pnZKtU|l$9sdEIY&Ct?BIwV-kv(G#Vj>Ntrj+e0c73)Ip=4pf2BHlC%=gIW zAr|wnuM8GU#U}Mk7zY?(@NeHb5@KdjFa4cQ>QL}Elzn29jG|WB%S_g@T962VVJb>0 zs@yY5zP{4C(a{v=&JIncO{CU)>Iw|ppX>cQJ}#uZ|6{*ERn6OPnKB>$?G*)2<)3}xn*NS zC+gvnyhsl>M|_et|FtQ!bU&~0a9~$wXehsF3BUi5mRY)df08hO$dIzZXmAWm3JD9N zYDOZNlzvve`NmifnZl`iosNah?W=x1J|w^Xy|!BW^%%7=?5RMtPtF(o!!{ z(g=ck?pt@B<18*JGa0zW{&%rGj`0=W= z74(;HlBf6ssOQ0YNhhHDsi=sbQN&biwQ?eeB* z(u;(MF#uf7AW(D!p7ob6Gp{+#MFKV+;|rH*BR|=QtuW`FV0+Y-T2KeQijopxk(0;% zx*6`#Ci|n+*i{iBv)z?^5zB_;o-|QIGqY7@YXbxE2rTr$CGooeI;qb3JqlgvIxY@2 z`jqL=-9I0i@kz6p+H`5~Ui*)?B*IF~E#kU*Gscy&!pc*y;de zMM;U0W@M2QR7gOc5QWZP%O}9-VHl9%*ugDfL?fnt6BwU$j0xsRAXk3+P$1Wh_#aYb zkpc8mspx9~vDrmVAg5(WIGVn_OVv;=*R~xgnOMOW}OkgA}`DxHc z5Vt-XKk^CZxC;%l}NTiXJ0x%o9$3!Nr@h7m{*<2eGa7t?yvV z0*Znk&27r&k#xUdrs7-Bj=y+W=i!pOrI zZOcsBP`*3fqM%x2XP?2yg%(mK$A%CD5)=1BJ5w!TetTBX5F6@Y$@4txsNaHSxlQ>g zB`#%ND+Bv+rx-7MZm5B1YnPlUIdOm28)X+lMw02 z6SVXjlhjGSJ81p;B?*NVfE#SbkdWwM4<^YtetC$9y5qbFG7 z0J2Mg(uXuR&}&VN#bx%~N_sNdB8;eouB6)tugK!8Oahsm_hj;iUkpXe ztDolOaW`3QrANZJNWgZ&c6X@{JD2kXNM!8&qUGWu3^G#`oG-}#tk?}uXwSXE=y4*@ z`;+d`pe11;C#lpX=$Evw7FGPv=SL!BV`&wp#AxH=Sq`R#oLPGq0)~+A@n+HKq59B3jdeDD{fim|0nsnI3O$-Un|r9S3_s zooLM^&*g00=hL;ZXO;)vzNn^$A{j`+ib9fmvmo%exVQuvu!DVlG{-6DBhtQQgca?I zUrqD6d#id~_1r^K5Nw zTI($Y3m1y&SaTVQsKlsQFBo(pV-{#ANi($nR;MgS59bWed2UQx1rsERWm_{wv|qNp zc-LH9%R~M*nVVV)9PE-@Ic)*Ispl8;(1Oqd{9mZ&=^p)?|NqqU7xV!C)G_}<)bkhg z0RPl6|3lRC7xV!CurdFjp8una@vgw?WJ$g8|L*+l+c%F7pya;4{0h^U1+kciUpX~6 zHPxHtj-V(Q`FMC-qPbn0fKd83n%naTV=EX zRA_Z|HMhS0(e34}lz(MovaSY|AN$H#wi3Zwz)y;D zG{nZDaS}`oOgKc~QAhUc%oO3R9$dyk%j6+gjg|(Az>dqNFeAUrqOKd1og-xy%P|Bq zfd|vsR*Dk0z!sxkN~x=TXcJ3QxXRyxj2~Td=t|`K^5x6Tn>U}iBqb*&Bf^Y`p1&XR zp04M4RZt+gTR^)_ncBP#sA_09-PPoqWf2T`Q`fw7^W>v*ug*KeV%_QQ9x(x5C!UNE zH4_k!(`u+F8P&LK`Q<~=43I3CH=V9fTDKqdNxj`!OtZ#y+x)3%xQ$@#1ANvRLX#e9 ztpd8)&vbNjL_kq91h3iO{d_=4`)7;>fH_*UB6vV1*i|Cq?n267(7+TX8=07R9{=#Z z@O4n#ihLglF6Y|X+K2E^4!u{#Wne%6;*eB*vt3$h>gS9N=K+nF^{EpP^QVVlYV}%(53)u(ih|?E z)Xhw&&P@|Wz0we8EZL-DDm?Tor{v7+e0#K!k&#UEyLa!#>S?2#on>;;I-gWDeE?xd zOeaagvA^SJ44WUIMkE^4rT_`S`GbND z<%YKsCX9I=T%K*JtE{HyBC)P0f4(hnA(z@Eq$c=JFQfcba+%0)wJ?o9ygY1Uvd%FU zlAyM${;eFtvyO>K#%4J@Jno=s$0wo(YVn$yQm-sSYx%0(44J=Nr@ zfB6~U5o^!iK_(}OA&pgVsWW{3EWtbc8S&sD&Uo^XGu( ziZf7+)u095*_|Da`|8|A#>RK}llmJpg!sV0F%^jzUGv_ru{OWeKG6UC)NFu7EkOwY z2g2W9APMb9KP$IzVXm&J(YLbNY?XE$Q!K|IrxBLykf7U*oH*Z^AAAJMy7(JtPilP0 zHogM5MPVxB+ie=41{Vs}Y?gA-esvmn)ZL!Np24mrF9lK{IcHIHHWcded}QB=0=PyCc!iv5Bp;xD~=QL5=^V?!RizkhjY zwWW~Ti|gyi(=)%LBj5{jy9xI8PD*lB*%b=Roz?h+Gxi+@9724NDvwpT-@iErw5M8- zy~M7>)2m*jC?I2)u?S=rZ_&~JKCEj|E7CKsCVv*|Z(s*LRN>iWV$faN!8@{^%}k9WV1Abv7#MUe z0n2rw!D_APhp5R^bm(84``(%)%1obFEkpH~Y zE}TElb$RbBO-PrKrhN`Ygxw6gU{{@~HIPw4h diff --git a/icons/obj/cloning.dmi b/icons/obj/cloning.dmi index af0bb42e60207c87625f376ee0d15285e07a04d1..ada68297367a8373b90abe6ef42754f82085d751 100644 GIT binary patch literal 9878 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