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)