diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm index faefa64883..11777e51d2 100644 --- a/code/ATMOSPHERICS/components/unary/cold_sink.dm +++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm @@ -24,6 +24,7 @@ /obj/machinery/atmospherics/unary/freezer/New() ..() initialize_directions = dir + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src) diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm index c2daa2b6d1..8ee9600606 100644 --- a/code/ATMOSPHERICS/components/unary/heat_source.dm +++ b/code/ATMOSPHERICS/components/unary/heat_source.dm @@ -24,6 +24,7 @@ /obj/machinery/atmospherics/unary/heater/New() ..() initialize_directions = dir + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 00268c6aa3..c0ef428f99 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -2,7 +2,7 @@ name = "Sleeper Console" icon = 'icons/obj/Cryogenic2.dmi' icon_state = "sleeperconsole" - var/obj/machinery/sleeper/sleeper + var/obj/machinery/sleeper/connected = null anchored = 1 //About time someone fixed this. density = 0 dir = 8 @@ -11,19 +11,21 @@ interact_offline = 1 circuit = /obj/item/weapon/circuitboard/sleeper_console +//obj/machinery/sleep_console/New() + //..() + //spawn( 5 ) + //src.connected = locate(/obj/machinery/sleeper, get_step(src, WEST)) //We assume dir = 8 so sleeper is WEST. Other sprites do exist. + //return + //return + /obj/machinery/sleep_console/New() ..() - findsleeper() - -/obj/machinery/sleep_console/proc/findsleeper() - spawn( 5 ) - var/obj/machinery/sleeper/sleepernew = null - for(dir in list(NORTH,EAST,SOUTH,WEST)) // Loop through every direction - sleepernew = locate(/obj/machinery/sleeper, get_step(src, dir)) // Try to find a scanner in that direction - if(sleepernew) - sleeper = sleepernew - sleepernew.console = src + spawn(5) + //src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir)) + src.connected = locate(/obj/machinery/sleeper) in range(2,src) return + return + /obj/machinery/sleep_console/attack_ai(var/mob/user) return attack_hand(user) @@ -31,18 +33,39 @@ /obj/machinery/sleep_console/attack_hand(var/mob/user) if(..()) return 1 - if(!sleeper) - findsleeper() - if(sleeper) - return sleeper.ui_interact(user) - else - user << "Sleeper not found!" + if(connected) + connected.ui_interact(user) /obj/machinery/sleep_console/attackby(var/obj/item/I, var/mob/user) - if(computer_deconstruction_screwdriver(user, I)) - return + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + user << "You start disconnecting the monitor." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.circuit = M + A.anchored = 1 + A.density = 1 + A.frame_type = M.board_type + for (var/obj/C in src) + C.forceMove(loc) + if (src.stat & BROKEN) + user << "The broken glass falls out." + new /obj/item/weapon/material/shard( src.loc ) + A.state = 3 + A.icon_state = "[A.frame_type]_3" + else + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "[A.frame_type]_4" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.dir = dir + M.deconstruct(src) + qdel(src) else - return attack_hand(user) + src.attack_hand(user) + return /obj/machinery/sleep_console/power_change() ..() @@ -63,7 +86,6 @@ var/list/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin") var/obj/item/weapon/reagent_containers/glass/beaker = null var/filtering = 0 - var/obj/machinery/sleep_console/console use_power = 1 idle_power_usage = 15 @@ -72,6 +94,7 @@ /obj/machinery/sleeper/New() ..() beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src) + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src) @@ -81,6 +104,14 @@ component_parts += new /obj/item/weapon/reagent_containers/syringe(src) component_parts += new /obj/item/weapon/reagent_containers/syringe(src) component_parts += new /obj/item/stack/material/glass/reinforced(src, 2) + + spawn(5) + //src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir)) + var/obj/machinery/sleep_console/C = locate(/obj/machinery/sleep_console) in range(2,src) + if(C) + C.connected = src + return + RefreshParts() /obj/machinery/sleeper/initialize() @@ -177,12 +208,12 @@ return 1 /obj/machinery/sleeper/attackby(var/obj/item/I, var/mob/user) - add_fingerprint(user) if(default_deconstruction_screwdriver(user, I)) return - else if(default_deconstruction_crowbar(user, I)) + if(default_deconstruction_crowbar(user, I)) return - else if(istype(I, /obj/item/weapon/reagent_containers/glass)) + add_fingerprint(user) + if(istype(I, /obj/item/weapon/reagent_containers/glass)) if(!beaker) beaker = I user.drop_item() @@ -252,21 +283,21 @@ if(occupant.client) occupant.client.eye = occupant.client.mob occupant.client.perspective = MOB_PERSPECTIVE - occupant.loc = src.loc + occupant.loc = loc occupant = null for(var/atom/movable/A in src) // In case an object was dropped inside or something if(A == beaker || A == circuit) continue if(A in component_parts) continue - A.loc = src.loc + A.loc = loc update_use_power(1) update_icon() toggle_filter() /obj/machinery/sleeper/proc/remove_beaker() if(beaker) - beaker.loc = src.loc + beaker.loc = loc beaker = null toggle_filter() diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 8e4fbb58a6..43ca9d2fc3 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -1,5 +1,6 @@ // Pretty much everything here is stolen from the dna scanner FYI + /obj/machinery/bodyscanner var/mob/living/carbon/occupant var/locked @@ -8,15 +9,25 @@ icon_state = "body_scanner_0" density = 1 anchored = 1 + circuit = /obj/item/weapon/circuitboard/body_scanner + use_power = 1 idle_power_usage = 60 active_power_usage = 10000 //10 kW. It's a big all-body scanner. + light_color = "#00FF00" - var/obj/machinery/body_scanconsole/console /obj/machinery/bodyscanner/New() ..() + spawn( 5 ) + var/obj/machinery/body_scanconsole/C = locate(/obj/machinery/body_scanconsole) in range(2,src) + if(C) + C.connected = src + +/obj/machinery/bodyscanner/map/New() + ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) @@ -34,9 +45,10 @@ /obj/machinery/bodyscanner/attackby(var/obj/item/G, user as mob) if(default_deconstruction_screwdriver(user, G)) return - else if(default_deconstruction_crowbar(user, G)) + if(default_deconstruction_crowbar(user, G)) return - else if(istype(G, /obj/item/weapon/grab)) + + if(istype(G, /obj/item/weapon/grab)) var/obj/item/weapon/grab/H = G if(panel_open) user << "Close the maintenance panel first." @@ -59,8 +71,6 @@ icon_state = "body_scanner_1" add_fingerprint(user) qdel(G) - else - return /obj/machinery/bodyscanner/MouseDrop_T(mob/living/carbon/O, mob/user as mob) if(!istype(O)) @@ -159,6 +169,7 @@ //Body Scan Console /obj/machinery/body_scanconsole + var/obj/machinery/bodyscanner/connected var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/loyalty, /obj/item/weapon/implant/tracking) var/delete var/temphtml @@ -171,30 +182,41 @@ circuit = /obj/item/weapon/circuitboard/scanner_console var/printing = null var/printing_text = null - var/obj/machinery/bodyscanner/scanner /obj/machinery/body_scanconsole/New() ..() findscanner() /obj/machinery/body_scanconsole/attackby(var/obj/item/I, var/mob/user) - if(computer_deconstruction_screwdriver(user, I)) - return - else if(istype(I, /obj/item/device/multitool)) //Did you want to link it? - var/obj/item/device/multitool/P = I - if(P.connectable) - if(istype(P.connectable, /obj/machinery/bodyscanner)) - var/obj/machinery/bodyscanner/C = P.connectable - scanner = C - C.console = src - user << " You link the [src] to the [P.connectable]!" - else - user << " You store the [src] in the [P]'s buffer!" - P.connectable = src - return + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + user << "You start disconnecting the monitor." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.circuit = M + A.anchored = 1 + A.density = 1 + A.frame_type = M.board_type + for (var/obj/C in src) + C.forceMove(loc) + if (src.stat & BROKEN) + user << "The broken glass falls out." + new /obj/item/weapon/material/shard( src.loc ) + A.state = 3 + A.icon_state = "[A.frame_type]_3" + else + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "[A.frame_type]_4" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.dir = dir + M.deconstruct(src) + qdel(src) else src.attack_hand(user) - return + return /obj/machinery/body_scanconsole/power_change() if(stat & BROKEN) @@ -204,7 +226,7 @@ stat &= ~NOPOWER else spawn(rand(0, 15)) - icon_state = "body_scannerconsole-p" + src.icon_state = "body_scannerconsole-p" stat |= NOPOWER /obj/machinery/body_scanconsole/ex_act(severity) @@ -224,11 +246,11 @@ /obj/machinery/body_scanconsole/proc/findscanner() spawn( 5 ) var/obj/machinery/bodyscanner/bodyscannernew = null - for(dir in list(NORTH,EAST,SOUTH,WEST)) // Loop through every direction - bodyscannernew = locate(/obj/machinery/bodyscanner, get_step(src, dir)) // Try to find a scanner in that direction - if(bodyscannernew) - scanner = bodyscannernew - bodyscannernew.console = src + // Loop through every direction + for(dir in list(NORTH,EAST,SOUTH,WEST)) + // Try to find a scanner in that direction + bodyscannernew = locate(/obj/machinery/bodyscanner, get_step(src, dir)) + src.connected = bodyscannernew return /obj/machinery/body_scanconsole/attack_ai(user as mob) @@ -245,22 +267,22 @@ user << "Close the maintenance panel first." return - if(!scanner) - user << "Scanner not found!" + if(!src.connected) + findscanner() ui_interact(user) /obj/machinery/body_scanconsole/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) var/data[0] - data["connected"] = scanner ? 1 : 0 + data["connected"] = connected ? 1 : 0 - if(scanner) - data["occupied"] = scanner.occupant ? 1 : 0 + if(connected) + data["occupied"] = connected.occupant ? 1 : 0 var/occupantData[0] - if(scanner.occupant && ishuman(scanner.occupant)) - var/mob/living/carbon/human/H = scanner.occupant + if(connected.occupant && ishuman(connected.occupant)) + var/mob/living/carbon/human/H = connected.occupant occupantData["name"] = H.name occupantData["stat"] = H.stat occupantData["health"] = H.health @@ -398,8 +420,8 @@ /obj/machinery/body_scanconsole/proc/generate_printing_text() var/dat = "" - if(scanner) - var/mob/living/carbon/human/occupant = scanner.occupant + if(connected) + var/mob/living/carbon/human/occupant = connected.occupant dat = "Occupant Statistics:
" //Blah obvious if(istype(occupant)) //is there REALLY someone in there? var/t1 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index dd79632053..699898fde0 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -54,7 +54,7 @@ var/wiresexposed = 0 // If it's been screwdrivered open. var/aidisabled = 0 var/shorted = 0 - circuit = /obj/item/weapon/circuitboard/airalarm + circuit = /obj/item/weapon/circuitboard/airalarm var/datum/wires/alarm/wires @@ -745,10 +745,31 @@ /obj/machinery/alarm/attackby(obj/item/W as obj, mob/user as mob) src.add_fingerprint(user) - - if(alarm_deconstruction_screwdriver(user, W, wiresexposed)) + if(istype(W, /obj/item/weapon/screwdriver)) // Opening that Air Alarm up. + //user << "You pop the Air Alarm's maintence panel open." + wiresexposed = !wiresexposed + user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]" + update_icon() return - if(alarm_deconstruction_wirecutters(user, W, wiresexposed)) + + if (wiresexposed && istype(W, /obj/item/weapon/wirecutters)) + user.visible_message("[user] has cut the wires inside \the [src]!", "You have cut the wires inside \the [src].") + playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) + new/obj/item/stack/cable_coil(get_turf(src), 5) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "airalarm" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.set_dir(dir) + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + A.state = 2 + A.icon_state = "airalarm_2" + M.deconstruct(src) + qdel(src) return if (istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))// trying to unlock the interface with an ID card @@ -803,7 +824,7 @@ FIRE ALARM var/last_process = 0 var/wiresexposed = 0 var/seclevel - circuit = /obj/item/weapon/circuitboard/firealarm + circuit = /obj/item/weapon/circuitboard/firealarm /obj/machinery/firealarm/update_icon() overlays.Cut() @@ -852,9 +873,9 @@ FIRE ALARM /obj/machinery/firealarm/attackby(obj/item/W as obj, mob/user as mob) src.add_fingerprint(user) - if(alarm_deconstruction_screwdriver(user, W, wiresexposed)) - return - if(alarm_deconstruction_wirecutters(user, W, wiresexposed)) + if (istype(W, /obj/item/weapon/screwdriver)) + wiresexposed = !wiresexposed + update_icon() return if(wiresexposed) @@ -864,6 +885,24 @@ FIRE ALARM user.visible_message("\The [user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.") else user.visible_message("\The [user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.") + else if (istype(W, /obj/item/weapon/wirecutters)) + user.visible_message("\The [user] has cut the wires inside \the [src]!", "You have cut the wires inside \the [src].") + new/obj/item/stack/cable_coil(get_turf(src), 5) + playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "firealarm" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.set_dir(dir) + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + A.state = 2 + A.icon_state = "firealarm_2" + M.deconstruct(src) + qdel(src) return src.alarm() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index a9f8e1ac55..236079f8e3 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -26,6 +26,7 @@ /obj/machinery/autolathe/New() ..() wires = new(src) + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 2aa9df1e9d..986d20e3b9 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -23,6 +23,7 @@ R.my_atom = src beaker = new /obj/item/weapon/reagent_containers/glass/bottle(src) + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index b592738c95..19d187ade4 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -47,6 +47,7 @@ /obj/machinery/clonepod/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 801aca262b..6f380739cc 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -7,6 +7,7 @@ use_power = 1 idle_power_usage = 300 active_power_usage = 300 + frame_type = "computer" var/processing = 0 var/icon_keyboard = "generic_key" @@ -96,8 +97,37 @@ return text /obj/machinery/computer/attackby(I as obj, user as mob) - if(computer_deconstruction_screwdriver(user, I)) - return + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + user << "You start disconnecting the monitor." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.circuit = M + A.anchored = 1 + A.density = 1 + A.frame_type = M.board_type + for (var/obj/C in src) + C.forceMove(loc) + if (src.stat & BROKEN) + user << "The broken glass falls out." + new /obj/item/weapon/material/shard( src.loc ) + A.state = 3 + A.icon_state = "[A.frame_type]_3" + else + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "[A.frame_type]_4" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + M.deconstruct(src) + qdel(src) else src.attack_hand(user) - return \ No newline at end of file + return + + + + + + diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index 333c12cd44..b3f9765746 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -65,6 +65,25 @@ /obj/machinery/computer/guestpass/attackby(obj/I, mob/user) + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + user << "You start disconnecting the monitor." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "guestpass" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "guestpass_4" + M.deconstruct(src) + qdel(src) + return if(istype(I, /obj/item/weapon/card/id)) if(!giver && user.unEquip(I)) I.forceMove(src) diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index 305b1af357..1dddcedea0 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -1,177 +1,3 @@ -/var/global/list/construction_frame_wall -/var/global/list/construction_frame_floor - -/proc/populate_frame_types() - //Create global frame type list if it hasn't been made already. - construction_frame_wall = list() - construction_frame_floor = list() - for(var/R in typesof(/datum/frame/frame_types) - /datum/frame/frame_types) - var/datum/frame/frame_types/type = new R - if(type.frame_style == "wall") - construction_frame_wall += type - else - construction_frame_floor += type - - var/datum/frame/frame_types/cancel/cancel = new /datum/frame/frame_types/cancel - construction_frame_wall += cancel - construction_frame_floor += cancel - -/datum/frame/frame_types - var/name - var/frame_size = 5 - var/frame_class - var/circuit - var/frame_style = "floor" - var/x_offset - var/y_offset - -/datum/frame/frame_types/computer - name = "Computer" - frame_class = "computer" - -/datum/frame/frame_types/machine - name = "Machine" - frame_class = "machine" - -/datum/frame/frame_types/conveyor - name = "Conveyor" - frame_class = "machine" - circuit = /obj/item/weapon/circuitboard/conveyor - -/datum/frame/frame_types/photocopier - name = "Photocopier" - frame_class = "machine" - -/datum/frame/frame_types/washing_machine - name = "Washing Machine" - frame_class = "machine" - -/datum/frame/frame_types/medical_console - name = "Medical Console" - frame_class = "computer" - -/datum/frame/frame_types/medical_pod - name = "Medical Pod" - frame_class = "machine" - -/datum/frame/frame_types/dna_analyzer - name = "DNA Analyzer" - frame_class = "machine" - -/datum/frame/frame_types/mass_driver - name = "Mass Driver" - frame_class = "machine" - circuit = /obj/item/weapon/circuitboard/mass_driver - -/datum/frame/frame_types/holopad - name = "Holopad" - frame_class = "computer" - frame_size = 4 - -/datum/frame/frame_types/microwave - name = "Microwave" - frame_class = "machine" - frame_size = 4 - -/datum/frame/frame_types/fax - name = "Fax" - frame_class = "machine" - frame_size = 3 - -/datum/frame/frame_types/recharger - name = "Recharger" - frame_class = "machine" - circuit = /obj/item/weapon/circuitboard/recharger - frame_size = 3 - -/datum/frame/frame_types/grinder - name = "Grinder" - frame_class = "machine" - circuit = /obj/item/weapon/circuitboard/grinder - frame_size = 3 - -/datum/frame/frame_types/display - name = "Display" - frame_class = "display" - frame_style = "wall" - x_offset = 32 - y_offset = 32 - -/datum/frame/frame_types/supply_request_console - name = "Supply Request Console" - frame_class = "display" - frame_style = "wall" - x_offset = 32 - y_offset = 32 - -/datum/frame/frame_types/atm - name = "ATM" - frame_class = "display" - frame_size = 3 - frame_style = "wall" - x_offset = 32 - y_offset = 32 - -/datum/frame/frame_types/newscaster - name = "Newscaster" - frame_class = "display" - frame_size = 3 - frame_style = "wall" - x_offset = 28 - y_offset = 30 - -/datum/frame/frame_types/wall_charger - name = "Wall Charger" - frame_class = "machine" - circuit = /obj/item/weapon/circuitboard/recharger/wrecharger - frame_size = 3 - frame_style = "wall" - x_offset = 32 - y_offset = 32 - -/datum/frame/frame_types/fire_alarm - name = "Fire Alarm" - frame_class = "alarm" - frame_size = 2 - frame_style = "wall" - x_offset = 24 - y_offset = 24 - -/datum/frame/frame_types/air_alarm - name = "Air Alarm" - frame_class = "alarm" - frame_size = 2 - frame_style = "wall" - x_offset = 24 - y_offset = 24 - -/datum/frame/frame_types/guest_pass_console - name = "Guest Pass Console" - frame_class = "display" - frame_size = 2 - frame_style = "wall" - x_offset = 30 - y_offset = 30 - -/datum/frame/frame_types/intercom - name = "Intercom" - frame_class = "alarm" - frame_size = 2 - frame_style = "wall" - x_offset = 28 - y_offset = 28 - -/datum/frame/frame_types/keycard_authenticator - name = "Keycard Authenticator" - frame_class = "alarm" - frame_size = 1 - frame_style = "wall" - x_offset = 24 - y_offset = 24 - -/datum/frame/frame_types/cancel //used to get out of input dialogue - name = "Cancel" - /obj/structure/frame anchored = 0 name = "frame" @@ -180,16 +6,20 @@ var/state = 0 var/obj/item/weapon/circuitboard/circuit = null var/need_circuit = 1 - var/datum/frame/frame_types/frame_type = new /datum/frame/frame_types/machine + var/frame_type = "machine" var/list/components = null var/list/req_components = null var/list/req_component_names = null -/obj/structure/frame/computer //used for maps - frame_type = new /datum/frame/frame_types/computer - anchored = 1 - density = 1 + var/list/alarms = list("firealarm", "airalarm", "intercom", "keycard") + var/list/machines = list( + "machine", "photocopier", "fax", "microwave", "conveyor", "recharger", "wrecharger", + "washing", "grinder", "teleporter_hub", "teleporter_station", "medpod", "dna_analyzer", + "massdriver") + var/list/computers = list("computer", "holopad", "console") + var/list/displays = list("display", "guestpass", "newscaster", "atm", "request") + var/list/no_circuit = list("wrecharger", "recharger", "grinder", "conveyor", "massdriver") /obj/structure/frame/proc/update_desc() var/D @@ -201,12 +31,6 @@ D = "Requires [english_list(component_list)]." desc = D -/obj/structure/frame/update_icon() - ..() - var/type = lowertext(frame_type.name) - type = replacetext(type, " ", "_") - icon_state = "[type]_[state]" - /obj/structure/frame/proc/check_components(mob/user as mob) components = list() req_components = circuit.req_components.Copy() @@ -217,110 +41,175 @@ var/obj/ct = A req_component_names[A] = initial(ct.name) -/obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/datum/frame/frame_types/type, mob/user as mob) +/obj/structure/frame/New(var/loc, var/dir, var/building = 0, var/obj/item/frame/frame_type, mob/user as mob) ..() if(building) - frame_type = type - state = 0 - + src.frame_type = frame_type + icon_state = "[frame_type]_0" if(dir) - set_dir(dir) + src.set_dir(dir) - if(loc) - src.loc = loc + if(frame_type in alarms) + if(loc) + src.loc = loc - if(frame_type.x_offset) - pixel_x = (dir & 3)? 0 : (dir == 4 ? -frame_type.x_offset : frame_type.x_offset) + state = 0 + if(frame_type == "airalarm" || frame_type == "firealarm" || frame_type == "keycard") + if(dir) + src.set_dir(dir) + pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) + pixel_y = (dir & 3)? (dir == 1 ? -24 : 24) : 0 - if(frame_type.y_offset) - pixel_y = (dir & 3)? (dir == 1 ? -frame_type.y_offset : frame_type.y_offset) : 0 + if(frame_type == "intercom") + if(dir) + src.set_dir(dir) + pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28) + pixel_y = (dir & 3)? (dir == 1 ? -28 : 28) : 0 - if(frame_type.circuit) + update_icon() + return + + if(frame_type in displays) + if(loc) + src.loc = loc + + if(frame_type == "display" || frame_type == "atm" || frame_type == "request") + pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32) + pixel_y = (dir & 3)? (dir == 1 ? -32 : 32) : 0 + + if(frame_type == "newscaster") + pixel_x = (dir & 3)? 0 : (dir == 4 ? -28 : 28) + pixel_y = (dir & 3)? (dir == 1 ? -30 : 30) : 0 + + if(frame_type == "guestpass") + pixel_x = (dir & 3)? 0 : (dir == 4 ? -30 : 30) + pixel_y = (dir & 3)? (dir == 1 ? -30 : 30) : 0 + + update_icon() + return + + if(frame_type in no_circuit) need_circuit = 0 - circuit = new frame_type.circuit(src) + if(frame_type == "wrecharger") + circuit = new /obj/item/weapon/circuitboard/recharger/wrecharger(src) + if(loc) + src.loc = loc - if(frame_type.name == "Computer") + state = 0 + + pixel_x = (dir & 3)? 0 : (dir == 4 ? -26 : 32) + pixel_y = (dir & 3)? (dir == 1 ? -32 : 32) : 0 + + update_icon() + return + if(frame_type == "recharger") + circuit = new /obj/item/weapon/circuitboard/recharger(src) + if(frame_type == "grinder") + circuit = new /obj/item/weapon/circuitboard/grinder(src) + if(frame_type == "conveyor") + circuit = new /obj/item/weapon/circuitboard/conveyor(src) + if(frame_type == "massdriver") + circuit = new /obj/item/weapon/circuitboard/mass_driver(src) + + if(frame_type == "computer") density = 1 - - if(frame_type.frame_class == "machine") + if(frame_type in machines) density = 1 - - update_icon() + return /obj/structure/frame/attackby(obj/item/P as obj, mob/user as mob) if(istype(P, /obj/item/weapon/wrench)) - if(state == 0 && !anchored) + if(state == 0) user << "You start to wrench the frame into place." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20)) - anchored = 1 + src.anchored = 1 if(!need_circuit && circuit) - state = 2 + src.state = 2 check_components() update_desc() + src.icon_state = "[frame_type]_2" user << "You wrench the frame into place and set the outer cover." else + src.state = 1 user << "You wrench the frame into place." + return - else if(state == 0 && anchored) + if(state == 1) playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 20)) user << "You unfasten the frame." - anchored = 0 + src.anchored = 0 + src.state = 0 + return - else if(istype(P, /obj/item/weapon/weldingtool)) + if(istype(P, /obj/item/weapon/weldingtool)) if(state == 0) var/obj/item/weapon/weldingtool/WT = P - if(WT.remove_fuel(0, user)) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - if(do_after(user, 20)) - if(src && WT.isOn()) - user << "You deconstruct the frame." - new /obj/item/stack/material/steel(src.loc, frame_type.frame_size) - qdel(src) - return - else if(!WT.remove_fuel(0, user)) + if(!WT.remove_fuel(0, user)) user << "The welding tool must be on to complete this task." return - - else if(istype(P, /obj/item/weapon/circuitboard) && need_circuit && !circuit) - if(state == 0 && anchored) - var/obj/item/weapon/circuitboard/B = P - var/datum/frame/frame_types/board_type = B.board_type - if(board_type.name == frame_type.name) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - user << "You place the circuit board inside the frame." - circuit = P - user.drop_item() - P.loc = src - state = 1 - if(frame_type.frame_class == "machine") - check_components() - update_desc() - else - user << "This frame does not accept circuit boards of this type!" + playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) + if(do_after(user, 20)) + if(!src || !WT.isOn()) return + user << "You deconstruct the frame." + if(frame_type == "holopad" || frame_type == "microwave") + new /obj/item/stack/material/steel( src.loc, 4 ) + else if(frame_type == "fax" || frame_type == "newscaster" || frame_type == "recharger" || frame_type == "wrecharger" || frame_type == "grinder") + new /obj/item/stack/material/steel( src.loc, 3 ) + else if(frame_type == "firealarm" || frame_type == "airalarm" || frame_type == "intercom" || frame_type == "guestpass") + new /obj/item/stack/material/steel( src.loc, 2 ) + else if(frame_type == "keycard") + new /obj/item/stack/material/steel( src.loc, 1 ) + else + new /obj/item/stack/material/steel( src.loc, 5 ) + qdel(src) return - else if(istype(P, /obj/item/weapon/screwdriver)) + if(istype(P, /obj/item/weapon/circuitboard) && need_circuit && !circuit) + if(state == 1) + var/obj/item/weapon/circuitboard/B = P + if(B.board_type == frame_type) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + user << "You place the circuit board inside the frame." + src.icon_state = "[frame_type]_1" + src.circuit = P + user.drop_item() + P.loc = src + if(frame_type in machines) //because machines are assholes + check_components() + update_desc() + return + else + user << "This frame does not accept circuit boards of this type!" + return + + if(istype(P, /obj/item/weapon/screwdriver)) if(state == 1) if(need_circuit && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You screw the circuit board into place." - state = 2 + src.state = 2 + src.icon_state = "[frame_type]_2" + return - else if(state == 2) + if(state == 2) if(need_circuit && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You unfasten the circuit board." - state = 1 + src.state = 1 + src.icon_state = "[frame_type]_1" + return - else if(!need_circuit && circuit) + if(!need_circuit && circuit) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You unfasten the outer cover." - state = 0 + src.state = 1 + src.icon_state = "[frame_type]_0" + return - else if(state == 3) - if(frame_type.frame_class == "machine") + if(state == 3) + if(frame_type in machines) var/component_check = 1 for(var/R in req_components) if(req_components[R] > 0) @@ -328,7 +217,7 @@ break if(component_check) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - var/obj/machinery/new_machine = new circuit.build_path(src.loc, dir) + var/obj/machinery/new_machine = new src.circuit.build_path(src.loc, src.dir) // Handle machines that have allocated default parts in thier constructor. if(new_machine.component_parts) for(var/CP in new_machine.component_parts) @@ -337,9 +226,9 @@ else new_machine.component_parts = list() - circuit.construct(new_machine) + src.circuit.construct(new_machine) - for(var/obj/O in components) + for(var/obj/O in src.components) if(circuit.contain_parts) O.loc = new_machine else @@ -351,158 +240,173 @@ new_machine.RefreshParts() - new_machine.pixel_x = pixel_x - new_machine.pixel_y = pixel_y + new_machine.pixel_x = src.pixel_x + new_machine.pixel_y = src.pixel_y qdel(src) - return + return - else if(frame_type.frame_class == "alarm") + if(frame_type in alarms) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You fasten the cover." - var/obj/machinery/B = new circuit.build_path(src.loc) - B.pixel_x = pixel_x - B.pixel_y = pixel_y + var/obj/machinery/B = new src.circuit.build_path ( src.loc ) + B.pixel_x = src.pixel_x + B.pixel_y = src.pixel_y B.set_dir(dir) - circuit.construct(B) - circuit.loc = null - B.circuit = circuit + src.circuit.construct(B) qdel(src) return - else if(state == 4) - if(frame_type.frame_class == "computer") + if(state == 4) + if(frame_type in computers) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You connect the monitor." - var/obj/machinery/B = new circuit.build_path(src.loc) - B.pixel_x = pixel_x - B.pixel_y = pixel_y + var/obj/machinery/B = new src.circuit.build_path ( src.loc ) + B.pixel_x = src.pixel_x + B.pixel_y = src.pixel_y B.set_dir(dir) - circuit.construct(B) - circuit.loc = null - B.circuit = circuit + src.circuit.construct(B) qdel(src) return - else if(frame_type.frame_class == "display") + if(frame_type in displays) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) user << "You connect the monitor." - var/obj/machinery/B = new circuit.build_path(src.loc) - B.pixel_x = pixel_x - B.pixel_y = pixel_y + var/obj/machinery/B = new src.circuit.build_path ( src.loc ) + B.pixel_x = src.pixel_x + B.pixel_y = src.pixel_y B.set_dir(dir) - circuit.construct(B) - circuit.loc = null - B.circuit = circuit + src.circuit.construct(B) qdel(src) return - else if(istype(P, /obj/item/weapon/crowbar)) + if(istype(P, /obj/item/weapon/crowbar)) if(state == 1) if(need_circuit && circuit) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) user << "You remove the circuit board." - state = 0 - circuit.forceMove(src.loc) - circuit = null - if(frame_type.frame_class == "machine") + src.state = 1 + src.icon_state = "[frame_type]_0" + circuit.loc = src.loc + src.circuit = null + if(frame_type in machines) //becuase machines are assholes req_components = null + return - else if(state == 3) - if(frame_type.frame_class == "machine") + if(state == 3) + if(frame_type in machines) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) if(components.len == 0) user << "There are no components to remove." else user << "You remove the components." for(var/obj/item/weapon/W in components) - W.forceMove(src.loc) + W.forceMove(loc) check_components() update_desc() user << desc + return - else if(state == 4) - if(frame_type.frame_class == "computer") + if(state == 4) + if(frame_type in computers) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) user << "You remove the glass panel." - state = 3 - new /obj/item/stack/material/glass(src.loc, 2) + src.state = 3 + src.icon_state = "[frame_type]_3" + new /obj/item/stack/material/glass( src.loc, 2 ) + return - else if(frame_type.frame_class == "display") + if(frame_type in displays) playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) user << "You remove the glass panel." - state = 3 - new /obj/item/stack/material/glass(src.loc, 2) + src.state = 3 + src.icon_state = "[frame_type]_3" + new /obj/item/stack/material/glass( src.loc, 2 ) + return - else if(istype(P, /obj/item/stack/cable_coil)) + if(istype(P, /obj/item/stack/cable_coil)) if(state == 2) var/obj/item/stack/cable_coil/C = P - if(C.get_amount() < 5) + if (C.get_amount() < 5) user << "You need five coils of wire to add them to the frame." return user << "You start to add cables to the frame." playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) if(do_after(user, 20) && state == 2) - if(C.use(5)) + if (C.use(5)) user << "You add cables to the frame." state = 3 - if(frame_type.frame_class == "machine") + icon_state = "[frame_type]_3" + if(frame_type in machines) user << desc + return - else if(istype(P, /obj/item/weapon/wirecutters)) + if(istype(P, /obj/item/weapon/wirecutters)) if(state == 3) - if(frame_type.frame_class == "computer") + if(frame_type in computers) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) user << "You remove the cables." - state = 2 - new /obj/item/stack/cable_coil(src.loc, 5) + src.state = 2 + src.icon_state = "[frame_type]_2" + new /obj/item/stack/cable_coil( src.loc, 5 ) + return - else if(frame_type.frame_class == "display") + if(frame_type in displays) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) user << "You remove the cables." - state = 2 - new /obj/item/stack/cable_coil(src.loc, 5) + src.state = 2 + src.icon_state = "[frame_type]_2" + new /obj/item/stack/cable_coil( src.loc, 5 ) + return - else if(frame_type.frame_class == "alarm") + if(frame_type in alarms) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) user << "You remove the cables." - state = 2 - new /obj/item/stack/cable_coil(src.loc, 5) + src.state = 2 + src.icon_state = "[frame_type]_2" + new /obj/item/stack/cable_coil( src.loc, 5 ) + return - else if(frame_type.frame_class == "machine") + if(frame_type in machines) playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) user << "You remove the cables." - state = 2 - new /obj/item/stack/cable_coil(src.loc, 5) + src.state = 2 + src.icon_state = "[frame_type]_2" + new /obj/item/stack/cable_coil( src.loc, 5 ) + return - else if(istype(P, /obj/item/stack/material) && P.get_material_name() == "glass") + if(istype(P, /obj/item/stack/material) && P.get_material_name() == "glass") if(state == 3) - if(frame_type.frame_class == "computer") + if(frame_type in computers) var/obj/item/stack/G = P - if(G.get_amount() < 2) + if (G.get_amount() < 2) user << "You need two sheets of glass to put in the glass panel." return playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user << "You start to put in the glass panel." if(do_after(user, 20) && state == 3) - if(G.use(2)) + if (G.use(2)) user << "You put in the glass panel." - state = 4 + src.state = 4 + src.icon_state = "[frame_type]_4" + return - else if(frame_type.frame_class == "display") + if(frame_type in displays) var/obj/item/stack/G = P - if(G.get_amount() < 2) + if (G.get_amount() < 2) user << "You need two sheets of glass to put in the glass panel." return playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) user << "You start to put in the glass panel." if(do_after(user, 20) && state == 3) - if(G.use(2)) + if (G.use(2)) user << "You put in the glass panel." - state = 4 + src.state = 4 + src.icon_state = "[frame_type]_4" + return - else if(istype(P, /obj/item)) + if(istype(P, /obj/item)) if(state == 3) - if(frame_type.frame_class == "machine") + if(frame_type in machines) for(var/I in req_components) if(istype(P, I) && (req_components[I] > 0)) playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) @@ -519,10 +423,10 @@ update_desc() break - else if(istype(P, /obj/item/stack/material/glass/reinforced)) + if(istype(P, /obj/item/stack/material/glass/reinforced)) var/obj/item/stack/material/glass/reinforced/CP = P if(CP.get_amount() > 1) - var/camt = min(CP.amount, req_components[I]) // amount of glass to take, idealy amount required, but limited by amount provided + var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided var/obj/item/stack/material/glass/reinforced/CC = new /obj/item/stack/material/glass/reinforced(src) CC.amount = camt CC.update_icon() @@ -541,6 +445,4 @@ user << desc if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil) && !istype(P, /obj/item/stack/material)) user << "You cannot add that component to the machine!" - return - - update_icon() + return \ No newline at end of file diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 6e853368c5..58c8423a23 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -49,8 +49,25 @@ var/const/HOLOPAD_MODE = RANGE_BASED var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating. /obj/machinery/hologram/holopad/attackby(obj/item/I as obj, user as mob) - if(computer_deconstruction_screwdriver(user, I)) - return + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + user << "You start removing the glass." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.circuit = M + A.anchored = 1 + A.density = 1 + A.frame_type = "holopad" + for (var/obj/C in src) + C.forceMove(loc) + user << "You remove the glass." + A.state = 4 + A.icon_state = "holopad_4" + M.deconstruct(src) + for (var/mob/living/silicon/ai/master in masters) + clear_holo(master) + qdel(src) else src.attack_hand(user) return diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index 57e0e1b55a..3cc537be49 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -38,6 +38,7 @@ datum/track/New(var/title_name, var/audio) /obj/machinery/media/jukebox/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/stock_parts/console_screen(src) diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index a3b0f9fdd4..1be387f35f 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -30,6 +30,7 @@ reagents = new/datum/reagents(100) reagents.my_atom = src + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/stock_parts/motor(src) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 3fa1a81c66..30a9b8548b 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -113,6 +113,7 @@ Class Procs: var/global/gl_uid = 1 var/interact_offline = 0 // Can the machine be interacted with while de-powered. var/circuit = null + var/frame_type = "machine" /obj/machinery/New(l, d=0) ..(l) @@ -123,8 +124,6 @@ Class Procs: else machines += src machinery_sort_required = 1 - if(circuit) - circuit = new circuit(src) /obj/machinery/Destroy() machines -= src @@ -166,11 +165,11 @@ Class Procs: qdel(src) return if(2.0) - if(prob(50)) + if (prob(50)) qdel(src) return if(3.0) - if(prob(25)) + if (prob(25)) qdel(src) return else @@ -183,20 +182,20 @@ Class Procs: /obj/machinery/proc/auto_use_power() if(!powered(power_channel)) return 0 - if(use_power == 1) - use_power(idle_power_usage, power_channel, 1) - else if(use_power >= 2) - use_power(active_power_usage, power_channel, 1) + if(src.use_power == 1) + use_power(idle_power_usage,power_channel, 1) + else if(src.use_power >= 2) + use_power(active_power_usage,power_channel, 1) return 1 /obj/machinery/proc/operable(var/additional_flags = 0) return !inoperable(additional_flags) /obj/machinery/proc/inoperable(var/additional_flags = 0) - return (stat & (NOPOWER | BROKEN | additional_flags)) + return (stat & (NOPOWER|BROKEN|additional_flags)) /obj/machinery/CanUseTopic(var/mob/user) - if(!interact_offline && (stat & (NOPOWER | BROKEN))) + if(!interact_offline && (stat & (NOPOWER|BROKEN))) return STATUS_CLOSE return ..() @@ -224,10 +223,11 @@ Class Procs: return 1 if(user.lying || user.stat) return 1 - if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/living/silicon))) + if ( ! (istype(usr, /mob/living/carbon/human) || \ + istype(usr, /mob/living/silicon))) usr << "You don't have the dexterity to do this!" return 1 - if(ishuman(user)) + if (ishuman(user)) var/mob/living/carbon/human/H = user if(H.getBrainLoss() >= 55) visible_message("[H] stares cluelessly at [src].") @@ -252,7 +252,7 @@ Class Procs: O.show_message("\icon[src] [msg]", 2) /obj/machinery/proc/ping(text=null) - if(!text) + if (!text) text = "\The [src] pings." state(text, "blue") @@ -266,7 +266,7 @@ Class Procs: var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() - if(electrocute_mob(user, get_area(src), src, 0.7)) + if (electrocute_mob(user, get_area(src), src, 0.7)) var/area/temp_area = get_area(src) if(temp_area) var/obj/machinery/power/apc/temp_apc = temp_area.get_apc() @@ -304,7 +304,7 @@ Class Procs: RefreshParts() else user << "Following parts detected in the machine:" - for(var/var/obj/item/C in component_parts) //var/var/obj/item/C? + for(var/var/obj/item/C in component_parts) user << " [C.name]" return 1 @@ -324,76 +324,30 @@ Class Procs: update_icon() return 1 -/obj/machinery/proc/computer_deconstruction_screwdriver(var/mob/user, var/obj/item/weapon/screwdriver/S) - if(!istype(S)) - return 0 - if(!circuit) - return 0 - user << "You start disconnecting the monitor." - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - if(do_after(user, 20)) - if(stat & BROKEN) - user << "The broken glass falls out." - new /obj/item/weapon/material/shard(src.loc) - else - user << "You disconnect the monitor." - . = dismantle() - -/obj/machinery/proc/alarm_deconstruction_screwdriver(var/mob/user, var/obj/item/weapon/screwdriver/S, var/wiresexposed) - if(!istype(S)) - return 0 - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - wiresexposed = !wiresexposed - user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]" - update_icon() - return 1 - -/obj/machinery/proc/alarm_deconstruction_wirecutters(var/mob/user, var/obj/item/weapon/wirecutters/W, var/wiresexposed) - if(!istype(W)) - return 0 - if(!wiresexposed) - return 0 - user.visible_message("[user] has cut the wires inside \the [src]!", "You have cut the wires inside \the [src].") - playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) - new/obj/item/stack/cable_coil(get_turf(src), 5) - . = dismantle() - /obj/machinery/proc/dismantle() - playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1) - var/obj/structure/frame/A = new /obj/structure/frame(src.loc) + playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) var/obj/item/weapon/circuitboard/M = circuit A.circuit = M A.anchored = 1 A.density = 1 A.frame_type = M.board_type - if(A.frame_type.circuit) + if(A.frame_type in A.no_circuit) A.need_circuit = 0 - - if(A.frame_type.frame_class == "machine") - for(var/obj/D in component_parts) - D.forceMove(src.loc) - if(A.components) - A.components.Cut() - else - A.components = list() - component_parts = list() - A.check_components() - - if(A.frame_type.frame_class == "alarm") - A.state = 2 - else if(A.frame_type.frame_class == "computer" || A.frame_type.frame_class == "display") - if(stat & BROKEN) - A.state = 3 - else - A.state = 4 + for (var/obj/D in src.component_parts) + D.forceMove(loc) + if(A.components) + A.components.Cut() else - A.state = 3 - - A.set_dir(dir) + A.components = list() + component_parts = list() + A.icon_state = "[A.frame_type]_3" + A.state = 3 + A.dir = dir A.pixel_x = pixel_x A.pixel_y = pixel_y + A.check_components() A.update_desc() - A.update_icon() M.loc = null M.deconstruct(src) qdel(src) diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 49082a7672..f563d9ef39 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -18,6 +18,7 @@ /obj/machinery/mass_driver/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/motor(src) component_parts += new /obj/item/weapon/stock_parts/motor(src) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index f647ee3eda..7bfe32d719 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -167,7 +167,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co light_range = 0 anchored = 1 var/obj/machinery/exonet_node/node = null - circuit = /obj/item/weapon/circuitboard/newscaster + circuit = /obj/item/weapon/circuitboard/newscaster /obj/machinery/newscaster/security_unit //Security unit name = "Security Newscaster" @@ -752,8 +752,30 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co /obj/machinery/newscaster/attackby(I as obj, user as mob) - if(computer_deconstruction_screwdriver(user, I)) - return + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + user << "You start disconnecting the monitor." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "newscaster" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + if (src.stat & isbroken == 1) + user << "The broken glass falls out." + new /obj/item/weapon/material/shard( src.loc ) + A.state = 3 + A.icon_state = "newscaster_3" + else + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "newscaster_4" + M.deconstruct(src) + qdel(src) else src.attack_hand(user) return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 64dab26e76..55c2e10eaa 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -17,6 +17,7 @@ obj/machinery/recharger circuit = /obj/item/weapon/circuitboard/recharger obj/machinery/recharger/New() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/stack/cable_coil(src, 5) @@ -169,4 +170,5 @@ obj/machinery/recharger/wallcharger icon_state_charging = "wrecharger1" icon_state_idle = "wrecharger0" portable = 0 - circuit = /obj/item/weapon/circuitboard/recharger/wrecharger \ No newline at end of file + circuit = /obj/item/weapon/circuitboard/recharger/wrecharger + frame_type = "wrecharger" diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 96ab5eab20..b5f7e029a5 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -24,6 +24,7 @@ /obj/machinery/recharge_station/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) @@ -31,6 +32,7 @@ component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/cell/high(src) component_parts += new /obj/item/stack/cable_coil(src, 5) + RefreshParts() update_icon() @@ -78,9 +80,9 @@ if(!has_cell_power()) return 0 - if(use_power == 1) + if(src.use_power == 1) cell.use(idle_power_usage * CELLRATE) - else if(use_power >= 2) + else if(src.use_power >= 2) cell.use(active_power_usage * CELLRATE) return 1 @@ -264,7 +266,7 @@ if(!occupant) return - occupant.forceMove(src.loc) + occupant.forceMove(loc) occupant.reset_view() occupant = null update_icon() diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 2478ec23fe..fc39af88f7 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -200,7 +200,9 @@ var/list/obj/machinery/requests_console/allConsoles = list() //err... hacking code, which has no reason for existing... but anyway... it was once supposed to unlock priority 3 messanging on that console (EXTREME priority...), but the code for that was removed. /obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob) - if(computer_deconstruction_screwdriver(user, O)) + if(default_deconstruction_screwdriver(user, O)) + return + if(default_deconstruction_crowbar(user, O)) return if(istype(O, /obj/item/device/multitool)) if(panel_open) diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 0e775433f5..8b0d78cb96 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -53,8 +53,23 @@ return ..() /obj/machinery/status_display/attackby(I as obj, user as mob) - if(computer_deconstruction_screwdriver(user, I)) - return + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "display" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "display_4" + M.deconstruct(src) + qdel(src) else src.attack_hand(user) return diff --git a/code/game/machinery/status_display_ai.dm b/code/game/machinery/status_display_ai.dm index 6fd8dd2a91..51fcfb4f51 100644 --- a/code/game/machinery/status_display_ai.dm +++ b/code/game/machinery/status_display_ai.dm @@ -70,8 +70,23 @@ var/list/ai_status_emotions = list( var/emotion = "Neutral" /obj/machinery/ai_status_display/attackby(I as obj, user as mob) - if(computer_deconstruction_screwdriver(user, I)) - return + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "display" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "display_4" + M.deconstruct(src) + qdel(src) else src.attack_hand(user) return diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index ac8ab29762..c9a42680f7 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -179,6 +179,7 @@ underlays.Cut() underlays += image('icons/obj/stationobjs.dmi', icon_state = "tele-wires") + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) @@ -328,6 +329,7 @@ overlays.Cut() overlays += image('icons/obj/stationobjs.dmi', icon_state = "controller-wires") + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src) diff --git a/code/game/machinery/wall_frames.dm b/code/game/machinery/wall_frames.dm index 3a036eec8e..701d4ebab2 100644 --- a/code/game/machinery/wall_frames.dm +++ b/code/game/machinery/wall_frames.dm @@ -4,96 +4,136 @@ icon = 'icons/obj/stock_parts.dmi' icon_state = "frame_bitem" flags = CONDUCT - var/build_machine_type + var/build_machine_type = /obj/structure/frame var/refund_amt = 5 var/refund_type = /obj/item/stack/material/steel var/reverse = 0 //if resulting object faces opposite its dir (like light fixtures) - var/list/frame_types_floor - var/list/frame_types_wall - -/obj/item/frame/proc/update_type_list() - if(!frame_types_floor) - frame_types_floor = construction_frame_floor - if(!frame_types_wall) - frame_types_wall = construction_frame_wall + var/frame_type = null /obj/item/frame/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench)) - new refund_type(get_turf(src.loc), refund_amt) + if (istype(W, /obj/item/weapon/wrench)) + new refund_type( get_turf(src.loc), refund_amt) qdel(src) return ..() /obj/item/frame/attack_self(mob/user as mob) ..() - update_type_list() - var/datum/frame/frame_types/frame_type if(!build_machine_type) - var/datum/frame/frame_types/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in frame_types_floor - if(!response || response.name == "Cancel") + return + + if(!frame_type) + var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Computer", "Machine", "Holopad", "Conveyor", + "Photocopier", "Fax", "Microwave", + "Recharger", "Washing Machine", "Grinder", + "Medical Console", "Medical Pod", "DNA Analyzer", + "Mass Driver", + "Cancel") + + if(response == "Cancel") return - frame_type = response - build_machine_type = /obj/structure/frame + frame_type = lowertext(response) - if(frame_type.frame_size != 5) - new /obj/item/stack/material/steel(usr.loc, (5 - frame_type.frame_size)) + switch(response) + if("Holopad") + new /obj/item/stack/material/steel( usr.loc, 1 ) //holopads are smaller, they only need 4 sheets + if("Fax") + new /obj/item/stack/material/steel( usr.loc, 2 ) //faxes are smaller, they only need 3 sheets + if("Microwave") + new /obj/item/stack/material/steel( usr.loc, 1 ) //microwaves are smaller, they only need 4 sheets + if("Recharger") + new /obj/item/stack/material/steel( usr.loc, 2 ) //rechargers are smaller, they only need 3 sheets + if("Washing Machine") + frame_type = "washing" + if("Grinder") + new /obj/item/stack/material/steel( usr.loc, 2 ) //grinders are smaller, they only need 3 sheets + if("Medical Console") + frame_type = "console" + if("Medical Pod") + frame_type = "medpod" + if("DNA Analyzer") + frame_type = "dna_analyzer" + if("Mass Driver") + frame_type = "massdriver" var/ndir ndir = usr.dir - if(!(ndir in cardinal)) + if (!(ndir in cardinal)) return var/obj/machinery/M = new build_machine_type(get_turf(src.loc), ndir, 1, frame_type) - M.fingerprints = fingerprints - M.fingerprintshidden = fingerprintshidden - M.fingerprintslast = fingerprintslast + M.fingerprints = src.fingerprints + M.fingerprintshidden = src.fingerprintshidden + M.fingerprintslast = src.fingerprintslast qdel(src) /obj/item/frame/proc/try_build(turf/on_wall, mob/user as mob) - update_type_list() - var/datum/frame/frame_types/frame_type - if(!build_machine_type) - var/datum/frame/frame_types/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in frame_types_wall - if(!response || response.name == "Cancel") + if(!frame_type) + var/response = input(usr, "What kind of frame would you like to make?", "Frame type request", null) in list("Fire Alarm", "Air Alarm", "Display", "Newscaster", + "ATM", "Guest Pass Console", "Intercom", "Keycard Authenticator", + "Wall Charger", "Supply Request Console", + "Cancel") + + if(response == "Cancel") return - frame_type = response - build_machine_type = /obj/structure/frame + frame_type = lowertext(response) - if(frame_type.frame_size != 5) - new /obj/item/stack/material/steel(usr.loc, (5 - frame_type.frame_size)) + switch(response) + if("Fire Alarm") + frame_type = "firealarm" + new /obj/item/stack/material/steel( usr.loc, 3 ) //fire alarms are smaller, they only need 2 sheets + if("Air Alarm") + frame_type = "airalarm" + new /obj/item/stack/material/steel( usr.loc, 3 ) //air alarms are smaller, they only need 2 sheets + if("Intercom") + new /obj/item/stack/material/steel( usr.loc, 3 ) //intercoms are smaller, they only need 2 sheets + if("Newscaster") + new /obj/item/stack/material/steel( usr.loc, 2 ) //newscasters are smaller, they only need 3 sheets + if("Guest Pass Console") + frame_type = "guestpass" + new /obj/item/stack/material/steel( usr.loc, 3 ) //guestpass consoles are smaller, they only need 2 sheets + if("Keycard Authenticator") + frame_type = "keycard" + new /obj/item/stack/material/steel( usr.loc, 4 ) //keycard authenticators are smaller, they only need 1 sheets + if("Wall Charger") + frame_type = "wrecharger" + new /obj/item/stack/material/steel( usr.loc, 2 ) //wall rechargers are smaller, they only need 3 sheets + if("Supply Request Console") + frame_type = "request" - if(get_dist(on_wall, usr)>1) + if(!build_machine_type) + return + + if (get_dist(on_wall,usr)>1) return var/ndir if(reverse) - ndir = get_dir(usr, on_wall) + ndir = get_dir(usr,on_wall) else - ndir = get_dir(on_wall, usr) + ndir = get_dir(on_wall,usr) - if(!(ndir in cardinal)) + if (!(ndir in cardinal)) return var/turf/loc = get_turf(usr) var/area/A = loc.loc - if(!istype(loc, /turf/simulated/floor)) + if (!istype(loc, /turf/simulated/floor)) usr << "\The frame cannot be placed on this spot." return - - if(A.requires_power == 0 || A.name == "Space") + if (A.requires_power == 0 || A.name == "Space") usr << "\The [src] Alarm cannot be placed in this area." return if(gotwallitem(loc, ndir)) usr << "There's already an item on this wall!" return - var/obj/machinery/M = new build_machine_type(loc, ndir, 1, frame_type) - M.fingerprints = fingerprints - M.fingerprintshidden = fingerprintshidden - M.fingerprintslast = fingerprintslast + M.fingerprints = src.fingerprints + M.fingerprintshidden = src.fingerprintshidden + M.fingerprintslast = src.fingerprintslast qdel(src) /obj/item/frame/light @@ -103,12 +143,14 @@ icon_state = "tube-construct-item" build_machine_type = /obj/machinery/light_construct reverse = 1 + frame_type = 1 /obj/item/frame/light/small name = "small light fixture frame" icon_state = "bulb-construct-item" refund_amt = 1 build_machine_type = /obj/machinery/light_construct/small + frame_type = 1 /obj/item/frame/extinguisher_cabinet name = "extinguisher cabinet frame" @@ -117,6 +159,7 @@ icon_state = "extinguisher_empty" refund_amt = 4 build_machine_type = /obj/structure/extinguisher_cabinet + frame_type = 1 /obj/item/frame/noticeboard name = "noticeboard frame" @@ -126,6 +169,7 @@ refund_amt = 4 refund_type = /obj/item/stack/material/wood build_machine_type = /obj/structure/noticeboard + frame_type = 1 /obj/item/frame/mirror name = "mirror frame" @@ -134,6 +178,7 @@ icon_state = "mirror_frame" refund_amt = 1 build_machine_type = /obj/structure/mirror + frame_type = 1 /obj/item/frame/fireaxe_cabinet name = "fire axe cabinet frame" @@ -141,4 +186,5 @@ icon = 'icons/obj/closet.dmi' icon_state = "fireaxe0101" refund_amt = 4 - build_machine_type = /obj/structure/closet/fireaxecabinet \ No newline at end of file + build_machine_type = /obj/structure/closet/fireaxecabinet + frame_type = 1 \ No newline at end of file diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index a21298f924..93d161f2ea 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -26,7 +26,7 @@ ) /obj/machinery/washing_machine/New() - ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/motor(src) component_parts += new /obj/item/weapon/stock_parts/gear(src) diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 55255d2097..23c30d3a3d 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -4,7 +4,6 @@ icon = 'icons/mecha/mech_bay.dmi' icon_state = "recharge_floor" density = 0 - anchored = 1 layer = TURF_LAYER + 0.1 circuit = /obj/item/weapon/circuitboard/mech_recharger @@ -15,11 +14,13 @@ /obj/machinery/mech_recharger/New() ..() component_parts = list() + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(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) + RefreshParts() /obj/machinery/mech_recharger/Crossed(var/obj/mecha/M) @@ -49,7 +50,7 @@ ..() if(!charging) return - if(charging.loc != src.loc) // Could be qdel or teleport or something + if(charging.loc != loc) // Could be qdel or teleport or something stop_charging() return var/done = 1 @@ -94,4 +95,4 @@ if(!charging) return - charging = null \ No newline at end of file + charging = null diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index da744422cf..ee000d60be 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -27,6 +27,7 @@ /obj/machinery/mecha_part_fabricator/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm index 634a239d82..588fd402f3 100644 --- a/code/game/mecha/mech_prosthetics.dm +++ b/code/game/mecha/mech_prosthetics.dm @@ -28,6 +28,7 @@ /obj/machinery/pros_fabricator/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 4e6154189a..cbc60670e7 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -21,8 +21,8 @@ origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1) var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage var/obj/machinery/clonepod/connecting //same for cryopod linkage - var/obj/machinery/connectable //Used to connect machinery. - + var/obj/machinery/connectable //Used to connect machinery, currently only used by Xenobio2. + /obj/item/device/multitool/attack_self(mob/user) var/clear = alert("Do you want to clear the buffers on the [src]?",, "Yes", "No",) if(clear == "Yes") diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 1ff101d464..7aaf609eca 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -46,7 +46,6 @@ /obj/item/device/radio/intercom/New() ..() processing_objects += src - circuit = new circuit(src) /obj/item/device/radio/intercom/department/medbay/New() ..() @@ -85,7 +84,7 @@ attack_self(user) /obj/item/device/radio/intercom/attackby(obj/item/W as obj, mob/user as mob) - add_fingerprint(user) + src.add_fingerprint(user) if(istype(W, /obj/item/weapon/screwdriver)) // Opening the intercom up. wiresexposed = !wiresexposed user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]" @@ -97,20 +96,22 @@ else icon_state = "intercom" return - if(wiresexposed && istype(W, /obj/item/weapon/wirecutters)) + if (wiresexposed && istype(W, /obj/item/weapon/wirecutters)) user.visible_message("[user] has cut the wires inside \the [src]!", "You have cut the wires inside \the [src].") playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) new/obj/item/stack/cable_coil(get_turf(src), 5) - var/obj/structure/frame/A = new /obj/structure/frame(src.loc) - var/obj/item/weapon/circuitboard/M = circuit - A.frame_type = M.board_type + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "intercom" A.pixel_x = pixel_x A.pixel_y = pixel_y A.circuit = M A.set_dir(dir) A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) A.state = 2 - A.update_icon() + A.icon_state = "intercom_2" M.deconstruct(src) qdel(src) else diff --git a/code/game/objects/items/weapons/circuitboards/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm index 3711cf0690..fd30153c37 100644 --- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm +++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm @@ -19,19 +19,19 @@ throw_speed = 3 throw_range = 15 var/build_path = null - var/board_type = new /datum/frame/frame_types/computer + var/board_type = "computer" var/list/req_components = null var/contain_parts = 1 //Called when the circuitboard is used to contruct a new machine. /obj/item/weapon/circuitboard/proc/construct(var/obj/machinery/M) - if(istype(M, build_path)) + if (istype(M, build_path)) return 1 return 0 //Called when a computer is deconstructed to produce a circuitboard. //Only used by computers, as other machines store their circuitboard instance. /obj/item/weapon/circuitboard/proc/deconstruct(var/obj/machinery/M) - if(istype(M, build_path)) + if (istype(M, build_path)) return 1 return 0 diff --git a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm index c46c519e9e..0016fc730a 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/camera_monitor.dm @@ -32,7 +32,7 @@ /obj/item/weapon/circuitboard/security/telescreen/entertainment name = T_BOARD("entertainment camera monitor") build_path = /obj/machinery/computer/security/telescreen/entertainment - board_type = new /datum/frame/frame_types/display + board_type = "display" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/security/telescreen/entertainment/New() diff --git a/code/game/objects/items/weapons/circuitboards/computer/research.dm b/code/game/objects/items/weapons/circuitboards/computer/research.dm index f49b80e6df..7695913eed 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/research.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/research.dm @@ -1,5 +1,5 @@ #ifndef T_BOARD -#error T_BOARD macro is not defined but we need it! +#error T_BOARD macro is not defined but we need it! #endif /obj/item/weapon/circuitboard/rdconsole @@ -9,12 +9,12 @@ /obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob) if(istype(I,/obj/item/weapon/screwdriver)) user.visible_message("\The [user] adjusts the jumper on \the [src]'s access protocol pins.", "You adjust the jumper on the access protocol pins.") - if(build_path == /obj/machinery/computer/rdconsole/core) - name = T_BOARD("RD Console - Robotics") - build_path = /obj/machinery/computer/rdconsole/robotics + if(src.build_path == /obj/machinery/computer/rdconsole/core) + src.name = T_BOARD("RD Console - Robotics") + src.build_path = /obj/machinery/computer/rdconsole/robotics user << "Access protocols set to robotics." else - name = T_BOARD("RD Console") - build_path = /obj/machinery/computer/rdconsole/core + src.name = T_BOARD("RD Console") + src.build_path = /obj/machinery/computer/rdconsole/core user << "Access protocols set to default." - return \ No newline at end of file + return diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index fa48be65bb..3acb2de755 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -9,37 +9,37 @@ /obj/item/weapon/circuitboard/guestpass name = T_BOARD("guestpass console") build_path = /obj/machinery/computer/guestpass - board_type = new /datum/frame/frame_types/guest_pass_console + board_type = "guestpass" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/status_display name = T_BOARD("status display") build_path = /obj/machinery/status_display - board_type = new /datum/frame/frame_types/display + board_type = "display" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/ai_status_display name = T_BOARD("ai status display") build_path = /obj/machinery/ai_status_display - board_type = new /datum/frame/frame_types/display + board_type = "display" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/newscaster name = T_BOARD("newscaster") build_path = /obj/machinery/newscaster - board_type = new /datum/frame/frame_types/newscaster + board_type = "newscaster" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/atm name = T_BOARD("atm") build_path = /obj/machinery/atm - board_type = new /datum/frame/frame_types/atm + board_type = "atm" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/request name = T_BOARD("reques console") build_path = /obj/machinery/requests_console - board_type = new /datum/frame/frame_types/supply_request_console + board_type = "request" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) //Alarm @@ -47,25 +47,25 @@ /obj/item/weapon/circuitboard/firealarm name = T_BOARD("fire alarm") build_path = /obj/machinery/firealarm - board_type = new /datum/frame/frame_types/fire_alarm + board_type = "firealarm" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/airalarm name = T_BOARD("air alarm") build_path = /obj/machinery/alarm - board_type = new /datum/frame/frame_types/air_alarm + board_type = "airalarm" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/intercom name = T_BOARD("intercom") build_path = /obj/item/device/radio/intercom - board_type = new /datum/frame/frame_types/intercom + board_type = "intercom" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/keycard_auth name = T_BOARD("keycard authenticator") build_path = /obj/machinery/keycard_auth - board_type = new /datum/frame/frame_types/keycard_authenticator + board_type = "keycard" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) //Computer @@ -73,19 +73,19 @@ /obj/item/weapon/circuitboard/holopad name = T_BOARD("holopad") build_path = /obj/machinery/hologram/holopad - board_type = new /datum/frame/frame_types/holopad + board_type = "holopad" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) /obj/item/weapon/circuitboard/scanner_console name = T_BOARD("body scanner console") build_path = /obj/machinery/body_scanconsole - board_type = new /datum/frame/frame_types/medical_console + board_type = "console" origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) /obj/item/weapon/circuitboard/sleeper_console name = T_BOARD("sleeper console") build_path = /obj/machinery/sleep_console - board_type = new /datum/frame/frame_types/medical_console + board_type = "console" origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) //Machine @@ -93,7 +93,7 @@ /obj/item/weapon/circuitboard/photocopier name = T_BOARD("photocopier") build_path = /obj/machinery/photocopier - board_type = new /datum/frame/frame_types/photocopier + board_type = "photocopier" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, @@ -104,7 +104,7 @@ /obj/item/weapon/circuitboard/fax name = T_BOARD("fax") build_path = /obj/machinery/photocopier/faxmachine - board_type = new /datum/frame/frame_types/fax + board_type = "fax" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, @@ -115,7 +115,7 @@ /obj/item/weapon/circuitboard/conveyor name = T_BOARD("conveyor") build_path = /obj/machinery/conveyor - board_type = new /datum/frame/frame_types/conveyor + board_type = "conveyor" req_components = list( /obj/item/weapon/stock_parts/gear = 2, /obj/item/weapon/stock_parts/motor = 2, @@ -124,7 +124,7 @@ /obj/item/weapon/circuitboard/microwave name = T_BOARD("microwave") build_path = /obj/machinery/microwave - board_type = new /datum/frame/frame_types/microwave + board_type = "microwave" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list( /obj/item/weapon/stock_parts/console_screen = 1, @@ -134,7 +134,7 @@ /obj/item/weapon/circuitboard/recharger name = T_BOARD("recharger") build_path = /obj/machinery/recharger - board_type = new /datum/frame/frame_types/recharger + board_type = "recharger" req_components = list( /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/stack/cable_coil = 5) @@ -142,12 +142,12 @@ /obj/item/weapon/circuitboard/recharger/wrecharger name = T_BOARD("wall recharger") build_path = /obj/machinery/recharger/wallcharger - board_type = new /datum/frame/frame_types/wall_charger + board_type = "wrecharger" /obj/item/weapon/circuitboard/washing name = T_BOARD("washing machine") build_path = /obj/machinery/washing_machine - board_type = new /datum/frame/frame_types/washing_machine + board_type = "washing" matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) req_components = list( /obj/item/weapon/stock_parts/motor = 1, @@ -156,7 +156,7 @@ /obj/item/weapon/circuitboard/grinder name = T_BOARD("reagent grinder") build_path = /obj/machinery/reagentgrinder - board_type = new /datum/frame/frame_types/grinder + board_type = "grinder" req_components = list( /obj/item/weapon/stock_parts/motor = 1, /obj/item/weapon/stock_parts/gear = 1, @@ -185,7 +185,7 @@ /obj/item/weapon/circuitboard/body_scanner name = T_BOARD("body scanner") build_path = /obj/machinery/bodyscanner - board_type = new /datum/frame/frame_types/medical_pod + board_type = "medpod" origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 3, @@ -194,7 +194,7 @@ /obj/item/weapon/circuitboard/sleeper name = T_BOARD("sleeper") build_path = /obj/machinery/sleeper - board_type = new /datum/frame/frame_types/medical_pod + board_type = "medpod" origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, @@ -205,7 +205,7 @@ /obj/item/weapon/circuitboard/dna_analyzer name = T_BOARD("dna analyzer") build_path = /obj/machinery/dnaforensics - board_type = new /datum/frame/frame_types/dna_analyzer + board_type = "dna_analyzer" origin_tech = list(TECH_MAGNET = 4, TECH_BIO = 2, TECH_DATA = 2) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 2, @@ -215,10 +215,104 @@ /obj/item/weapon/circuitboard/mass_driver name = T_BOARD("mass driver") build_path = /obj/machinery/mass_driver - board_type = new /datum/frame/frame_types/mass_driver + board_type = "massdriver" req_components = list( /obj/item/weapon/stock_parts/gear = 2, /obj/item/weapon/stock_parts/motor = 2, /obj/item/weapon/stock_parts/capacitor = 1, /obj/item/weapon/stock_parts/spring = 1, - /obj/item/stack/cable_coil = 5) \ No newline at end of file + /obj/item/stack/cable_coil = 5) + +//for testing - If this is still in when I commit, someone shoot me. --leaving in for now, shouldn't be able to get these on station anyways. +/obj/item/weapon/storage/box/frame_parts + display_contents_with_number = 1 + New() + ..() + new /obj/item/weapon/circuitboard/guestpass( src ) + new /obj/item/weapon/circuitboard/status_display( src ) + new /obj/item/weapon/circuitboard/ai_status_display( src ) + new /obj/item/weapon/circuitboard/newscaster( src ) + new /obj/item/weapon/circuitboard/atm( src ) + new /obj/item/weapon/circuitboard/firealarm( src ) + new /obj/item/weapon/circuitboard/airalarm( src ) + new /obj/item/weapon/circuitboard/intercom( src ) + new /obj/item/weapon/circuitboard/keycard_auth( src ) + new /obj/item/weapon/circuitboard/holopad( src ) + new /obj/item/weapon/circuitboard/photocopier( src ) + new /obj/item/weapon/circuitboard/fax( src ) + new /obj/item/weapon/circuitboard/microwave( src ) + new /obj/item/weapon/circuitboard/washing( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/weapon/stock_parts/scanning_module( src ) + new /obj/item/weapon/stock_parts/motor( src ) + new /obj/item/weapon/stock_parts/micro_laser( src ) + new /obj/item/weapon/stock_parts/matter_bin( src ) + new /obj/item/weapon/stock_parts/gear( src ) + new /obj/item/weapon/stock_parts/console_screen( src ) + new /obj/item/weapon/stock_parts/capacitor( src ) + new /obj/item/weapon/stock_parts/spring( src ) + new /obj/item/stack/cable_coil( src , 5 ) + new /obj/item/stack/material/glass/reinforced( src , 2 ) \ No newline at end of file diff --git a/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm b/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm index 96ed9fa02b..716e763515 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm @@ -5,7 +5,7 @@ /obj/item/weapon/circuitboard/biogenerator name = T_BOARD("biogenerator") build_path = "/obj/machinery/biogenerator" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 2) req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/cloning.dm b/code/game/objects/items/weapons/circuitboards/machinery/cloning.dm index b27fc6db26..a1edb3f464 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/cloning.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/cloning.dm @@ -5,7 +5,7 @@ /obj/item/weapon/circuitboard/clonepod name = T_BOARD("clone pod") build_path = "/obj/machinery/clonepod" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 3, TECH_BIO = 3) req_components = list( /obj/item/stack/cable_coil = 2, @@ -16,7 +16,7 @@ /obj/item/weapon/circuitboard/clonescanner name = T_BOARD("cloning scanner") build_path = "/obj/machinery/dna_scannernew" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 2, TECH_BIO = 2) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/jukebox.dm b/code/game/objects/items/weapons/circuitboards/machinery/jukebox.dm index 89d09c00c3..4b6296c886 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/jukebox.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/jukebox.dm @@ -5,7 +5,7 @@ /obj/item/weapon/circuitboard/jukebox name = T_BOARD("jukebox") build_path = "/obj/machinery/media/jukebox" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_MAGNET = 2, TECH_DATA = 1) req_components = list( /obj/item/weapon/stock_parts/capacitor = 1, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm b/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm index 892ac205dc..4515bfd74b 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/mech_recharger.dm @@ -5,7 +5,7 @@ /obj/item/weapon/circuitboard/mech_recharger name = T_BOARD("mech recharger") build_path = "/obj/machinery/mech_recharger" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2) req_components = list( /obj/item/weapon/stock_parts/capacitor = 2, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm b/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm index cd0784d941..653d20d666 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/mining_drill.dm @@ -5,7 +5,7 @@ /obj/item/weapon/circuitboard/miningdrill name = T_BOARD("mining drill head") build_path = "/obj/machinery/mining/drill" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) req_components = list( /obj/item/weapon/stock_parts/capacitor = 1, @@ -16,6 +16,6 @@ /obj/item/weapon/circuitboard/miningdrillbrace name = T_BOARD("mining drill brace") build_path = "/obj/machinery/mining/brace" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) req_components = list() diff --git a/code/game/objects/items/weapons/circuitboards/machinery/pacman.dm b/code/game/objects/items/weapons/circuitboards/machinery/pacman.dm index 29d789317d..a5cd69b0f4 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/pacman.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/pacman.dm @@ -5,7 +5,7 @@ /obj/item/weapon/circuitboard/pacman name = T_BOARD("PACMAN-type generator") build_path = "/obj/machinery/power/port_gen/pacman" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3) req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/power.dm b/code/game/objects/items/weapons/circuitboards/machinery/power.dm index 6d9160ca3a..5c8975a207 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/power.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/power.dm @@ -5,14 +5,14 @@ /obj/item/weapon/circuitboard/smes name = T_BOARD("superconductive magnetic energy storage") build_path = "/obj/machinery/power/smes/buildable" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4) req_components = list(/obj/item/weapon/smes_coil = 1, /obj/item/stack/cable_coil = 30) /obj/item/weapon/circuitboard/batteryrack name = T_BOARD("battery rack PSU") build_path = "/obj/machinery/power/smes/batteryrack" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2) req_components = list(/obj/item/weapon/cell = 3) @@ -20,5 +20,5 @@ name = T_BOARD("makeshift PSU") desc = "An APC circuit repurposed into some power storage device controller" build_path = "/obj/machinery/power/smes/batteryrack/makeshift" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" req_components = list(/obj/item/weapon/cell = 3) diff --git a/code/game/objects/items/weapons/circuitboards/machinery/recharge_station.dm b/code/game/objects/items/weapons/circuitboards/machinery/recharge_station.dm index 5d74263c91..a3684cd894 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/recharge_station.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/recharge_station.dm @@ -5,7 +5,7 @@ /obj/item/weapon/circuitboard/recharge_station name = T_BOARD("cyborg recharging station") build_path = "/obj/machinery/recharge_station" - board_type = new /datum/frame/frame_types/machine + board_type = "machine" origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) req_components = list( /obj/item/stack/cable_coil = 5, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/research.dm b/code/game/objects/items/weapons/circuitboards/machinery/research.dm index 1e4fe2afd9..c871bd3dc5 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/research.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/research.dm @@ -4,30 +4,17 @@ obj/item/weapon/circuitboard/rdserver name = T_BOARD("R&D server") - build_path = /obj/machinery/r_n_d/server/core - board_type = new /datum/frame/frame_types/machine + build_path = "/obj/machinery/r_n_d/server" + board_type = "machine" origin_tech = list(TECH_DATA = 3) req_components = list( /obj/item/stack/cable_coil = 2, /obj/item/weapon/stock_parts/scanning_module = 1) -obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mob) - if(istype(I,/obj/item/weapon/screwdriver)) - user.visible_message("\The [user] adjusts the jumper on \the [src]'s access protocol pins.", "You adjust the jumper on the access protocol pins.") - if(build_path == /obj/machinery/r_n_d/server/core) - name = T_BOARD("RD Console - Robotics") - build_path = /obj/machinery/r_n_d/server/robotics - user << "Access protocols set to robotics." - else - name = T_BOARD("RD Console") - build_path = /obj/machinery/r_n_d/server/core - user << "Access protocols set to default." - return - /obj/item/weapon/circuitboard/destructive_analyzer name = T_BOARD("destructive analyzer") - build_path = /obj/machinery/r_n_d/destructive_analyzer - board_type = new /datum/frame/frame_types/machine + build_path = "/obj/machinery/r_n_d/destructive_analyzer" + board_type = "machine" origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2) req_components = list( /obj/item/weapon/stock_parts/scanning_module = 1, @@ -36,8 +23,8 @@ obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mo /obj/item/weapon/circuitboard/autolathe name = T_BOARD("autolathe") - build_path = /obj/machinery/autolathe - board_type = new /datum/frame/frame_types/machine + build_path = "/obj/machinery/autolathe" + board_type = "machine" origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) req_components = list( /obj/item/weapon/stock_parts/matter_bin = 3, @@ -46,8 +33,8 @@ obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mo /obj/item/weapon/circuitboard/protolathe name = T_BOARD("protolathe") - build_path = /obj/machinery/r_n_d/protolathe - board_type = new /datum/frame/frame_types/machine + build_path = "/obj/machinery/r_n_d/protolathe" + board_type = "machine" origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, @@ -56,8 +43,8 @@ obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mo /obj/item/weapon/circuitboard/circuit_imprinter name = T_BOARD("circuit imprinter") - build_path = /obj/machinery/r_n_d/circuit_imprinter - board_type = new /datum/frame/frame_types/machine + build_path = "/obj/machinery/r_n_d/circuit_imprinter" + board_type = "machine" origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2) req_components = list( /obj/item/weapon/stock_parts/matter_bin = 1, @@ -66,8 +53,8 @@ obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mo /obj/item/weapon/circuitboard/mechfab name = "Circuit board (Exosuit Fabricator)" - build_path = /obj/machinery/mecha_part_fabricator - board_type = new /datum/frame/frame_types/machine + build_path = "/obj/machinery/mecha_part_fabricator" + board_type = "machine" origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, @@ -77,8 +64,8 @@ obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mo /obj/item/weapon/circuitboard/prosthetics name = "Circuit board (Prosthetics Fabricator)" - build_path = /obj/machinery/pros_fabricator - board_type = new /datum/frame/frame_types/machine + build_path = "/obj/machinery/pros_fabricator" + board_type = "machine" origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) req_components = list( /obj/item/weapon/stock_parts/matter_bin = 2, diff --git a/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm b/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm index 6aa0cae083..7218b7f094 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/shieldgen.dm @@ -4,7 +4,7 @@ /obj/item/weapon/circuitboard/shield_gen_ex name = T_BOARD("hull shield generator") - board_type = new /datum/frame/frame_types/machine + board_type = "machine" build_path = "/obj/machinery/shield_gen/external" origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) req_components = list( @@ -17,7 +17,7 @@ /obj/item/weapon/circuitboard/shield_gen name = T_BOARD("bubble shield generator") - board_type = new /datum/frame/frame_types/machine + board_type = "machine" build_path = "/obj/machinery/shield_gen" origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) req_components = list( @@ -30,7 +30,7 @@ /obj/item/weapon/circuitboard/shield_cap name = T_BOARD("shield capacitor") - board_type = new /datum/frame/frame_types/machine + board_type = "machine" build_path = "/obj/machinery/shield_capacitor" origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4) req_components = list( diff --git a/code/game/objects/items/weapons/circuitboards/machinery/telecomms.dm b/code/game/objects/items/weapons/circuitboards/machinery/telecomms.dm index aca2b0010f..8a7516f476 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/telecomms.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/telecomms.dm @@ -3,7 +3,7 @@ #endif /obj/item/weapon/circuitboard/telecomms - board_type = new /datum/frame/frame_types/machine + board_type = "machine" /obj/item/weapon/circuitboard/telecomms/receiver name = T_BOARD("subspace receiver") diff --git a/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm b/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm index 678fa9e185..38438d6327 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/unary_atmos.dm @@ -3,7 +3,7 @@ #endif /obj/item/weapon/circuitboard/unary_atmos - board_type = new /datum/frame/frame_types/machine + board_type = "machine" /obj/item/weapon/circuitboard/unary_atmos/construct(var/obj/machinery/atmospherics/unary/U) //TODO: Move this stuff into the relevant constructor when pipe/construction.dm is cleaned up. diff --git a/code/game/objects/items/weapons/circuitboards/mecha.dm b/code/game/objects/items/weapons/circuitboards/mecha.dm index 56b5a1898f..0ce851e3a3 100644 --- a/code/game/objects/items/weapons/circuitboards/mecha.dm +++ b/code/game/objects/items/weapons/circuitboards/mecha.dm @@ -10,6 +10,7 @@ item_state = "electronic" board_type = "other" + /obj/item/weapon/circuitboard/mecha/ripley origin_tech = list(TECH_DATA = 3) @@ -21,6 +22,7 @@ name = T_BOARD_MECHA("Ripley central control") icon_state = "mainboard" + /obj/item/weapon/circuitboard/mecha/gygax origin_tech = list(TECH_DATA = 4) @@ -37,6 +39,7 @@ name = T_BOARD_MECHA("Gygax central control") icon_state = "mainboard" + /obj/item/weapon/circuitboard/mecha/durand origin_tech = list(TECH_DATA = 4) @@ -53,6 +56,7 @@ name = T_BOARD_MECHA("Durand central control") icon_state = "mainboard" + /obj/item/weapon/circuitboard/mecha/honker origin_tech = list(TECH_DATA = 4) @@ -68,6 +72,7 @@ name = T_BOARD_MECHA("H.O.N.K central control") icon_state = "mainboard" + /obj/item/weapon/circuitboard/mecha/odysseus origin_tech = list(TECH_DATA = 3) diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm index 3d442dfb4a..9fc49b1bf7 100644 --- a/code/modules/detectivework/microscope/dnascanner.dm +++ b/code/modules/detectivework/microscope/dnascanner.dm @@ -17,6 +17,7 @@ var/report_num = 0 /obj/machinery/dnaforensics/New() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index ca0db0595a..bc0388d40d 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -80,7 +80,24 @@ log transactions return 1 /obj/machinery/atm/attackby(obj/item/I as obj, mob/user as mob) - if(computer_deconstruction_screwdriver(user, I)) + if(istype(I, /obj/item/weapon/screwdriver) && circuit) + user << "You start disconnecting the monitor." + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "atm" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + user << "You disconnect the monitor." + A.state = 4 + A.icon_state = "atm_4" + M.deconstruct(src) + qdel(src) return if(istype(I, /obj/item/weapon/card)) if(emagged > 0) diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm index 7c964b9d4b..eeb7546211 100644 --- a/code/modules/mining/drilling/drill.dm +++ b/code/modules/mining/drilling/drill.dm @@ -42,6 +42,7 @@ /obj/machinery/mining/drill/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 5b9e6dc26d..57691fed9b 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -24,11 +24,13 @@ /obj/structure/filingcabinet/filingcabinet //not changing the path to avoid unecessary map issues, but please don't name stuff like this in the future -Pete icon_state = "tallcabinet" + /obj/structure/filingcabinet/initialize() for(var/obj/item/I in loc) if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/paper_bundle)) I.loc = src + /obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob) if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/weapon/paper_bundle)) user << "You put [P] in [src]." @@ -55,6 +57,7 @@ else user << "You can't put [P] in [src]!" + /obj/structure/filingcabinet/attack_hand(mob/user as mob) if(contents.len <= 0) user << "\The [src] is empty." @@ -100,12 +103,14 @@ sleep(5) icon_state = initial(icon_state) + /* * Security Record Cabinets */ /obj/structure/filingcabinet/security var/virgin = 1 + /obj/structure/filingcabinet/security/proc/populate() if(virgin) for(var/datum/data/record/G in data_core.general) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index c8942f0093..ec0d7acf19 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -16,6 +16,7 @@ var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier! /obj/machinery/photocopier/New() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/stock_parts/motor(src) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 8a5c8cc7b4..6296a8b951 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -38,6 +38,7 @@ operating = 1 setmove() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/gear(src) component_parts += new /obj/item/weapon/stock_parts/motor(src) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 6831034edf..e444bcb8c1 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -24,6 +24,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid). /obj/machinery/r_n_d/circuit_imprinter/New() ..() + circuit = new circuit() component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 3fbb141f7e..686a273023 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -18,6 +18,7 @@ Note: Must be placed within 3 tiles of the R&D Console /obj/machinery/r_n_d/destructive_analyzer/New() ..() + circuit = new circuit() component_parts = list() component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index d5237e5a81..46b688929d 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -19,6 +19,7 @@ /obj/machinery/r_n_d/protolathe/New() ..() + circuit = new circuit() component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index abcfdd0fa0..bf4cab0697 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -17,6 +17,7 @@ /obj/machinery/r_n_d/server/New() ..() + circuit = new circuit() component_parts = list() component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/stack/cable_coil(src) diff --git a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm index 606f256e83..ed23b965df 100644 --- a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm +++ b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm @@ -76,20 +76,19 @@ scanner_seal_integrity = round(scanner_seal_integrity + amount_used * 10) return if(istype(I, /obj/item/weapon/reagent_containers/glass)) - var/obj/item/weapon/reagent_containers/glass/G = I - if(!G.is_open_container()) - return var/choice = alert("What do you want to do with the container?","Radiometric Scanner","Add coolant","Empty coolant","Scan container") if(choice == "Add coolant") + var/obj/item/weapon/reagent_containers/glass/G = I var/amount_transferred = min(src.reagents.maximum_volume - src.reagents.total_volume, G.reagents.total_volume) - var/trans = G.reagents.trans_to_obj(src, amount_transferred) - user << "You empty [trans ? trans : 0]u of coolant into [src]." + G.reagents.trans_to(src, amount_transferred) + user << "You empty [amount_transferred]u of coolant into [src]." update_coolant() return else if(choice == "Empty coolant") + var/obj/item/weapon/reagent_containers/glass/G = I var/amount_transferred = min(G.reagents.maximum_volume - G.reagents.total_volume, src.reagents.total_volume) - var/trans = src.reagents.trans_to(G, amount_transferred) - user << "You remove [trans ? trans : 0]u of coolant from [src]." + src.reagents.trans_to(G, amount_transferred) + user << "You remove [amount_transferred]u of coolant from [src]." update_coolant() return if(scanned_item) @@ -149,15 +148,15 @@ data["radiation"] = round(radiation) data["t_left_radspike"] = round(t_left_radspike) data["rad_shield_on"] = rad_shield - + // update the ui if it exists, returns null if no ui is passed/found - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm ui = new(user, src, ui_key, "geoscanner.tmpl", "High Res Radiocarbon Spectrometer", 900, 825) // when the ui is first opened this is the data it will use - ui.set_initial_data(data) + ui.set_initial_data(data) // open the new ui window ui.open() // auto update every Master Controller tick diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index 73b11b9a56..b4301cf557 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -42,25 +42,22 @@ broadcast_request() //This is the device making the initial event request. It needs to broadcast to other devices if(istype(W, /obj/item/weapon/screwdriver)) - user << "You begin removing the faceplate from the [src]" - if(do_after(user, 10)) - user << "You remove the faceplate from the [src]" - var/obj/structure/frame/A = new /obj/structure/frame(loc) - var/obj/item/weapon/circuitboard/M = new circuit(A) - A.frame_type = M.board_type - A.need_circuit = 0 - A.pixel_x = pixel_x - A.pixel_y = pixel_y - A.set_dir(dir) - A.circuit = M - A.anchored = 1 - for (var/obj/C in src) - C.forceMove(loc) - A.state = 3 - A.update_icon() - M.deconstruct(src) - qdel(src) - return + user << "You remove the faceplate from the [src]" + var/obj/structure/frame/A = new /obj/structure/frame( src.loc ) + var/obj/item/weapon/circuitboard/M = new circuit( A ) + A.frame_type = "keycard" + A.pixel_x = pixel_x + A.pixel_y = pixel_y + A.set_dir(dir) + A.circuit = M + A.anchored = 1 + for (var/obj/C in src) + C.forceMove(loc) + A.state = 3 + A.icon_state = "keycard_3" + M.deconstruct(src) + qdel(src) + return /obj/machinery/keycard_auth/power_change() ..() diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm index 2703f26337..b50e42acd6 100644 --- a/code/modules/xenobio2/machinery/core_extractor.dm +++ b/code/modules/xenobio2/machinery/core_extractor.dm @@ -21,6 +21,7 @@ /obj/machinery/slime/extractor/New() ..() update_light_color() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm index d5ee7d7d44..c8bd8d374c 100644 --- a/code/modules/xenobio2/machinery/gene_manipulators.dm +++ b/code/modules/xenobio2/machinery/gene_manipulators.dm @@ -125,6 +125,7 @@ /obj/machinery/xenobio/extractor/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) @@ -267,6 +268,7 @@ /obj/machinery/xenobio/editor/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/modules/xenobio2/machinery/injector.dm b/code/modules/xenobio2/machinery/injector.dm index 3193311890..7b482d5c1d 100644 --- a/code/modules/xenobio2/machinery/injector.dm +++ b/code/modules/xenobio2/machinery/injector.dm @@ -25,6 +25,7 @@ reagents = R R.my_atom = src beaker = new /obj/item/weapon/reagent_containers/glass/beaker(src) + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) @@ -74,7 +75,7 @@ if(occupant) occupant.forceMove(loc) occupant = null - + /obj/machinery/xenobio2/manualinjector/proc/eject_beaker() if(beaker) var/obj/item/weapon/reagent_containers/glass/beaker/B = beaker @@ -136,9 +137,10 @@ move_into_injector(user,G.affecting) + /obj/item/weapon/circuitboard/xenobioinjectormachine name = T_BOARD("biological injector") - build_path = /obj/machinery/xenobio2/manualinjector - board_type = /datum/frame/frame_types/machine + build_path = "/obj/machinery/xenobio2/manualinjector" + board_type = "machine" origin_tech = list() //To be filled, req_components = list() //To be filled, \ No newline at end of file diff --git a/code/modules/xenobio2/machinery/injector_computer.dm b/code/modules/xenobio2/machinery/injector_computer.dm index 12887506c2..7bcccd55ca 100644 --- a/code/modules/xenobio2/machinery/injector_computer.dm +++ b/code/modules/xenobio2/machinery/injector_computer.dm @@ -61,7 +61,7 @@ if(isxeno(injector.occupant)) var/mob/living/simple_animal/xeno/X = injector.occupant data["compatible"] = 1 - data["instability"] = 100 * (X.mut_level / X.mut_max) + data["instability"] = 100 * (X.mut_level / X.mut_max) else data["compatible"] = null @@ -109,5 +109,6 @@ /obj/item/weapon/circuitboard/xenobio2computer name = T_BOARD("injector control console") - build_path = /obj/item/weapon/circuitboard/xenobio2computer + build_path = "/obj/item/weapon/circuitboard/xenobio2computer" + board_type = "computer" origin_tech = list() //To be filled, diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm index a3db42e437..9faa4272b4 100644 --- a/code/modules/xenobio2/machinery/slime_replicator.dm +++ b/code/modules/xenobio2/machinery/slime_replicator.dm @@ -19,6 +19,7 @@ /obj/machinery/slime/replicator/New() ..() + circuit = new circuit(src) component_parts = list() component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) diff --git a/code/world.dm b/code/world.dm index cb71c8fe85..1d439428d2 100644 --- a/code/world.dm +++ b/code/world.dm @@ -104,9 +104,6 @@ var/global/datum/global_init/init = new () M.update_icon() - // Create frame types, as above. - populate_frame_types() - // Create robolimbs for chargen. populate_robolimb_list() diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index 28ea28bde1..294f1f82f7 100644 Binary files a/icons/obj/stock_parts.dmi and b/icons/obj/stock_parts.dmi differ diff --git a/maps/polaris-2.dmm b/maps/polaris-2.dmm index 6740e889af..a9f68d2953 100644 --- a/maps/polaris-2.dmm +++ b/maps/polaris-2.dmm @@ -619,7 +619,7 @@ "alU" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) "alV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) "alW" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) -"alX" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alX" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) "alY" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_animal/corgi/tamaskan/spice,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/trade/centcom) "alZ" = (/obj/machinery/door/airlock/silver{name = "Toilet"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) "ama" = (/obj/machinery/door/airlock/silver{name = "Restroom"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) @@ -1096,7 +1096,7 @@ "avd" = (/obj/structure/table/standard,/obj/machinery/recharger,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "ave" = (/obj/machinery/computer/security/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "avf" = (/obj/machinery/computer/shuttle_control/multi/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"avg" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avg" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "avh" = (/obj/structure/table/standard,/obj/machinery/button/remote/blast_door{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "avi" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "avj" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) @@ -1145,7 +1145,7 @@ "awa" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "awb" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 2; pixel_y = 3},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "awc" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"awd" = (/obj/structure/frame/computer,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awd" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) "awe" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "awf" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "awg" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) diff --git a/maps/polaris-3.dmm b/maps/polaris-3.dmm index c0c85cada7..7b303c6b86 100644 --- a/maps/polaris-3.dmm +++ b/maps/polaris-3.dmm @@ -20,7 +20,7 @@ "at" = (/obj/item/weapon/scalpel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "au" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/derelict/ship) "av" = (/turf/simulated/shuttle/plating,/area/derelict/ship) -"aw" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) +"aw" = (/obj/structure/frame{anchored = 1; frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "ax" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/derelict/ship) "ay" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/derelict/ship) "az" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/derelict/ship) @@ -80,8 +80,8 @@ "bB" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bC" = (/obj/item/weapon/material/shard,/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bD" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"bE" = (/obj/structure/cable,/obj/structure/frame/computer,/obj/item/stack/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) -"bF" = (/obj/structure/cable,/obj/structure/frame/computer,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) +"bE" = (/obj/structure/cable,/obj/structure/frame{anchored = 1; frame_type = "computer"; icon_state = "computer_0"},/obj/item/stack/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) +"bF" = (/obj/structure/cable,/obj/structure/frame{anchored = 1; frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bG" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bH" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) "bI" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship) @@ -197,7 +197,7 @@ "dO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/tcomsat) "dP" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/telecom{c_tag = "Telecoms - Solar South"},/turf/simulated/floor/airless,/area/tcomsat) "dQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/tcomsat) -"dR" = (/obj/structure/frame/computer,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/airless,/area/AIsattele) +"dR" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/airless,/area/AIsattele) "dS" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/tcomsat) "dT" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/tcomsat) "dU" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/light,/turf/space,/area/tcomsat) diff --git a/maps/polaris-4.dmm b/maps/polaris-4.dmm index 1da3edc562..95291cf44a 100644 --- a/maps/polaris-4.dmm +++ b/maps/polaris-4.dmm @@ -8,7 +8,7 @@ "ah" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) "ai" = (/obj/item/weapon/circuitboard/teleporter,/turf/simulated/floor/airless,/area/mine/explored) "aj" = (/obj/structure/girder,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) -"ak" = (/obj/structure/frame/computer,/turf/simulated/floor/airless,/area/mine/explored) +"ak" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/floor/airless,/area/mine/explored) "al" = (/obj/machinery/teleport/station,/turf/simulated/floor/airless,/area/mine/explored) "am" = (/obj/machinery/teleport/hub,/turf/simulated/floor/airless,/area/mine/explored) "an" = (/turf/simulated/floor/tiled/white/airless,/area/mine/explored)