diff --git a/code/WorkInProgress/recycling/disposal.dm b/code/WorkInProgress/recycling/disposal.dm
index c24ad1b1b68..c4b4f7c949d 100644
--- a/code/WorkInProgress/recycling/disposal.dm
+++ b/code/WorkInProgress/recycling/disposal.dm
@@ -45,6 +45,14 @@
user << "You can't place that item inside the disposal unit."
return
+ if(istype(I, /obj/item/weapon/trashbag))
+ user << "\blue You empty the bag."
+ for (var/obj/item/trash/O in I.contents)
+ I.contents -= O
+ O.loc = src
+ I.update_icon()
+ return
+
var/obj/item/weapon/grab/G = I
if(istype(G)) // handle grabbed mob
if(ismob(G.affecting))
diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm
index af0477f9f77..35950cd32e4 100644
--- a/code/defines/obj/computer.dm
+++ b/code/defines/obj/computer.dm
@@ -3,6 +3,8 @@
icon = 'computer.dmi'
density = 1
anchored = 1.0
+ var/obj/item/weapon/circuitboard/circuit = null //if circuit==null, computer can't disassemble
+
/*
/obj/machinery/computer/airtunnel
name = "Air Tunnel Control"
@@ -16,6 +18,7 @@
anchored = 1.0
icon = 'computer.dmi'
icon_state = "comm"
+ circuit = "/obj/item/weapon/circuitboard/operating"
var/mob/living/carbon/human/victim = null
@@ -31,6 +34,7 @@
desc = "Does not support Pin ball."
icon = 'computer.dmi'
icon_state = "arcade"
+ circuit = "/obj/item/weapon/circuitboard/arcade"
var/enemy_name = "Space Villian"
var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc
var/player_hp = 30 //Player health/attack points
@@ -44,6 +48,7 @@
name = "AI Upload"
desc = "It is said that you can upload silly laws to AI's with this."
icon_state = "command"
+ circuit = "/obj/item/weapon/circuitboard/aiupload"
var/mob/living/silicon/ai/current = null
var/opened = 0
@@ -61,6 +66,7 @@
name = "Station Alert Computer"
desc = "Alert. Alert. ALERT!!!"
icon_state = "alert:0"
+ circuit = "/obj/item/weapon/circuitboard/stationalert"
var/alarms = list("Fire"=list(), "Atmosphere"=list(), "Power"=list())
/obj/machinery/computer/atmos_alert
@@ -86,6 +92,7 @@
name = "Identification Computer"
desc = "You can use this to change ID's. YOU ARE GOD!"
icon_state = "id"
+ circuit = "/obj/item/weapon/circuitboard/card"
var/obj/item/weapon/card/id/scan = null
var/obj/item/weapon/card/id/modify = null
var/authenticated = 0.0
@@ -97,6 +104,7 @@
/obj/machinery/computer/card/centcom
name = "CentCom Identification Computer"
desc = "You are the Gods's God."
+ circuit = "/obj/item/weapon/circuitboard/card/centcom"
req_access = list(access_cent_captain)
/obj/machinery/computer/communications
@@ -104,6 +112,7 @@
desc = "This can be used for various important functions. Still under developement."
icon_state = "comm"
req_access = list(access_heads)
+ circuit = "/obj/item/weapon/circuitboard/communications"
var/prints_intercept = 1
var/authenticated = 0
var/list/messagetitle = list()
@@ -167,6 +176,7 @@
desc = "This can be used to check medical records."
icon_state = "dna"
req_access = list(access_medical)
+ circuit = "/obj/item/weapon/circuitboard/med_data"
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
var/rank = null
@@ -246,6 +256,7 @@
desc = "Beepsky. ARREST!!!"
icon_state = "security"
req_access = list(access_security)
+ circuit = "/obj/item/weapon/circuitboard/secure_data"
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
var/rank = null
@@ -265,6 +276,7 @@
name = "Security Cameras"
desc = "Better than Television."
icon_state = "cameras"
+ circuit = "/obj/item/weapon/circuitboard/security"
var/obj/machinery/camera/current = null
var/last_pic = 1.0
var/network = "SS13"
@@ -277,6 +289,7 @@
icon_state = "telescreen"
network = "thunder"
density = 0
+ circuit = null
/obj/machinery/computer/security/wooden_tv
name = "Security Cameras"
@@ -288,6 +301,7 @@
desc = "It's better than reality TV."
icon_state = "miningcameras"
network = "MINE"
+ circuit = "/obj/item/weapon/circuitboard/mining"
/obj/machinery/computer/shuttle
name = "Shuttle"
@@ -316,4 +330,34 @@
use_power = 1
idle_power_usage = 250
active_power_usage = 500
- var/list/tracked = list( )
\ No newline at end of file
+ circuit = "/obj/item/weapon/circuitboard/crew"
+ var/list/tracked = list( )
+
+/obj/machinery/computer/robotics
+ name = "Robotics Control"
+ icon = 'computer.dmi'
+ icon_state = "robot"
+ req_access = list(access_robotics)
+ circuit = "/obj/item/weapon/circuitboard/robotics"
+
+ var/id = 0.0
+ var/temp = null
+ var/status = 0
+ var/timeleft = 60
+ var/stop = 0.0
+ var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text
+
+/obj/machinery/computer/prisoner
+ name = "Prisoner Management"
+ icon = 'computer.dmi'
+ icon_state = "explosive"
+ req_access = list(access_armory)
+ circuit = "/obj/item/weapon/circuitboard/prisoner"
+
+ var/id = 0.0
+ var/temp = null
+ var/status = 0
+ var/timeleft = 60
+ var/stop = 0.0
+ var/screen = 0 // 0 - No Access Denied, 1 - Access allowed
+ var/malf_access = 0
\ No newline at end of file
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index 4651bb264be..3df263a682c 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -16,7 +16,6 @@
return
interact(user)
-
/obj/machinery/computer/operating/proc/interact(mob/user)
if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
if (!istype(user, /mob/living/silicon))
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 88abf6d5074..eb40a09ab4f 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -1,34 +1,3 @@
-/obj/machinery/computer/arcade/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/arcade/M = new /obj/item/weapon/circuitboard/arcade( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/arcade/M = new /obj/item/weapon/circuitboard/arcade( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- src.attack_hand(user)
- return
-
/obj/machinery/computer/arcade/New()
..()
var/name_action
diff --git a/code/game/machinery/computer/atmos.dm b/code/game/machinery/computer/atmos.dm
index 22db63fc742..f7acd285e2b 100644
--- a/code/game/machinery/computer/atmos.dm
+++ b/code/game/machinery/computer/atmos.dm
@@ -20,38 +20,6 @@ Atmos alert computer
return
interact(user)
-/obj/machinery/computer/station_alert/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var /obj/item/weapon/circuitboard/stationalert/M = new /obj/item/weapon/circuitboard/stationalert( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/stationalert/M = new /obj/item/weapon/circuitboard/stationalert( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- src.attack_hand(user)
- return
-
-
/obj/machinery/computer/station_alert/proc/interact(mob/user)
usr.machine = src
var/dat = "
Current Station Alerts\n"
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 2a777d31bec..cd57816924b 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -141,6 +141,22 @@
name = "Circuit board (Mech Bay Power Control Console)"
build_path = "/obj/machinery/computer/mech_bay_power_console"
origin_tech = "programming=2;powerstorage=3"
+/obj/item/weapon/circuitboard/ordercomp
+ name = "Circuit board (Supply ordering console)"
+ build_path = "/obj/machinery/computer/ordercomp"
+ origin_tech = "programming=2"
+/obj/item/weapon/circuitboard/supplycomp
+ name = "Circuit board (Supply shuttle console)"
+ build_path = "/obj/machinery/computer/supplycomp"
+ origin_tech = "programming=3"
+/obj/item/weapon/circuitboard/operating
+ name = "Circuit board (Operating Computer)"
+ build_path = "/obj/machinery/computer/operating"
+ origin_tech = "programming=2;biotech=2"
+/obj/item/weapon/circuitboard/mining
+ name = "Circuit board (Outpost Status Display)"
+ build_path = "/obj/machinery/computer/security/mining"
+ origin_tech = "programming=2"
/obj/computerframe/attackby(obj/item/P as obj, mob/user as mob)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 6784bd64deb..5c9d6ff9ade 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -156,37 +156,6 @@
AL.open()
AL.lockdownbyai = 0
-/obj/machinery/computer/communications/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/communications/M = new /obj/item/weapon/circuitboard/communications( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/communications/M = new /obj/item/weapon/circuitboard/communications( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- src.attack_hand(user)
- return
-
/obj/machinery/computer/communications/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index aeb66c5c3df..960164d4178 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -92,41 +92,35 @@ Pod/Blast Doors computer
icon_state += "b"
stat |= BROKEN
+/obj/machinery/computer/attackby(I as obj, user as mob)
+ if(istype(I, /obj/item/weapon/screwdriver) && circuit)
+ playsound(src.loc, 'Screwdriver.ogg', 50, 1)
+ if(do_after(user, 20))
+ var/obj/computerframe/A = new /obj/computerframe( src.loc )
+ var/obj/item/weapon/circuitboard/M = new circuit( A )
+ A.circuit = M
+ A.anchored = 1
+ for (var/obj/C in src)
+ C.loc = src.loc
+ if (src.stat & BROKEN)
+ user << "\blue The broken glass falls out."
+ new /obj/item/weapon/shard( src.loc )
+ A.state = 3
+ A.icon_state = "3"
+ else
+ user << "\blue You disconnect the monitor."
+ A.state = 4
+ A.icon_state = "4"
+ del(src)
+ else
+ src.attack_hand(user)
+ return
+
+
/obj/machinery/computer/security/New()
..()
verbs -= /obj/machinery/computer/security/verb/station_map
-/obj/machinery/computer/security/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( loc )
- new /obj/item/weapon/shard( loc )
- var/obj/item/weapon/circuitboard/security/M = new /obj/item/weapon/circuitboard/security( A )
- for (var/obj/C in src)
- C.loc = loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( loc )
- var/obj/item/weapon/circuitboard/security/M = new /obj/item/weapon/circuitboard/security( A )
- for (var/obj/C in src)
- C.loc = loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- attack_hand(user)
- return
-
/obj/machinery/computer/security/attack_ai(var/mob/user as mob)
return attack_hand(user)
@@ -139,8 +133,6 @@ Pod/Blast Doors computer
user.reset_view(current)
return 1
-
-
/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
return attack_hand(user)
@@ -295,38 +287,6 @@ Pod/Blast Doors computer
updateUsrDialog()
return
-/obj/machinery/computer/card/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- var/card_path = text2path("/obj/item/weapon/circuitboard/card[istype(src,/obj/machinery/computer/card/centcom)?"/centcom":""]")
- if (stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( loc )
- new /obj/item/weapon/shard( loc )
- var/obj/item/weapon/circuitboard/card/M = new card_path( A )
- for (var/obj/C in src)
- C.loc = loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( loc )
- var/obj/item/weapon/circuitboard/card/M = new card_path( A )
- for (var/obj/C in src)
- C.loc = loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- attack_hand(user)
- return
-
/obj/datacore/proc/manifest()
for(var/mob/living/carbon/human/H in world)
if (!isnull(H.mind) && (H.mind.assigned_role != "MODE"))
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index c4ba1bd5de2..4cf67292140 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -1,34 +1,3 @@
-/obj/machinery/computer/crew/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/crew/M = new /obj/item/weapon/circuitboard/crew( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/crew/M = new /obj/item/weapon/circuitboard/crew( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- src.attack_hand(user)
- return
-
/obj/machinery/computer/crew
New()
tracked = list()
diff --git a/code/game/machinery/computer/explosive.dm b/code/game/machinery/computer/explosive.dm
index cad516959d9..a4181ed2311 100644
--- a/code/game/machinery/computer/explosive.dm
+++ b/code/game/machinery/computer/explosive.dm
@@ -1,51 +1,3 @@
-/obj/machinery/computer/prisoner
- name = "Prisoner Management"
- icon = 'computer.dmi'
- icon_state = "explosive"
- req_access = list(access_armory)
-
- var/id = 0.0
- var/temp = null
- var/status = 0
- var/timeleft = 60
- var/stop = 0.0
- var/screen = 0 // 0 - No Access Denied, 1 - Access allowed
- var/malf_access = 0
-
-/obj/machinery/computer/prisoner/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/prisoner/M = new /obj/item/weapon/circuitboard/prisoner( A )
- for (var/obj/C in src)
- C.loc = src.loc
- M.id = src.id
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/prisoner/M = new /obj/item/weapon/circuitboard/prisoner( A )
- for (var/obj/C in src)
- C.loc = src.loc
- M.id = src.id
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
-
- //else
- src.attack_hand(user)
- return
-
/obj/machinery/computer/prisoner/attack_ai(var/mob/user as mob)
user << "\red Access Denied"
if(user.icon_state == "ai-malf" && malf_access == 0)
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 0b777a41dee..0a88095bde0 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -1,34 +1,3 @@
-/obj/machinery/computer/med_data/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/med_data/M = new /obj/item/weapon/circuitboard/med_data( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/med_data/M = new /obj/item/weapon/circuitboard/med_data( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- src.attack_hand(user)
- return
-
/obj/machinery/computer/med_data/attack_ai(user as mob)
return src.attack_hand(user)
diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm
index c278b9b3588..6f7b50210fc 100644
--- a/code/game/machinery/computer/power.dm
+++ b/code/game/machinery/computer/power.dm
@@ -18,6 +18,36 @@ var/reportingpower = 0 //this tracks whether this power monitoring computer is
return
interact(user)
+/obj/machinery/power/monitor/attackby(I as obj, user as mob)
+ if(istype(I, /obj/item/weapon/screwdriver))
+ playsound(src.loc, 'Screwdriver.ogg', 50, 1)
+ if(do_after(user, 20))
+ if (src.stat & BROKEN)
+ user << "\blue The broken glass falls out."
+ var/obj/computerframe/A = new /obj/computerframe( src.loc )
+ new /obj/item/weapon/shard( src.loc )
+ var/obj/item/weapon/circuitboard/powermonitor/M = new /obj/item/weapon/circuitboard/powermonitor( A )
+ for (var/obj/C in src)
+ C.loc = src.loc
+ A.circuit = M
+ A.state = 3
+ A.icon_state = "3"
+ A.anchored = 1
+ del(src)
+ else
+ user << "\blue You disconnect the monitor."
+ var/obj/computerframe/A = new /obj/computerframe( src.loc )
+ var/obj/item/weapon/circuitboard/powermonitor/M = new /obj/item/weapon/circuitboard/powermonitor( A )
+ for (var/obj/C in src)
+ C.loc = src.loc
+ A.circuit = M
+ A.state = 4
+ A.icon_state = "4"
+ A.anchored = 1
+ del(src)
+ else
+ src.attack_hand(user)
+ return
/obj/machinery/power/monitor/proc/interact(mob/user)
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index b8e91766138..dc17e6cdfe6 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -1,50 +1,3 @@
-/obj/machinery/computer/robotics
- name = "Robotics Control"
- icon = 'computer.dmi'
- icon_state = "robot"
- req_access = list(access_robotics)
-
- var/id = 0.0
- var/temp = null
- var/status = 0
- var/timeleft = 60
- var/stop = 0.0
- var/screen = 0 // 0 - Main Menu, 1 - Cyborg Status, 2 - Kill 'em All! -- In text
-
-/obj/machinery/computer/robotics/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/robotics/M = new /obj/item/weapon/circuitboard/robotics( A )
- for (var/obj/C in src)
- C.loc = src.loc
- M.id = src.id
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/robotics/M = new /obj/item/weapon/circuitboard/robotics( A )
- for (var/obj/C in src)
- C.loc = src.loc
- M.id = src.id
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
-
- //else
- src.attack_hand(user)
- return
-
/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 1b28921ba56..0a909656627 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -1,34 +1,3 @@
-/obj/machinery/computer/secure_data/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( loc )
- new /obj/item/weapon/shard( loc )
- var/obj/item/weapon/circuitboard/secure_data/M = new /obj/item/weapon/circuitboard/secure_data( A )
- for (var/obj/C in src)
- C.loc = loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( loc )
- var/obj/item/weapon/circuitboard/secure_data/M = new /obj/item/weapon/circuitboard/secure_data( A )
- for (var/obj/C in src)
- C.loc = loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- attack_hand(user)
- return
-
/obj/machinery/computer/secure_data/attack_ai(mob/user as mob)
return attack_hand(user)
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 24952c426e6..2545b0875d0 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -25,6 +25,37 @@
else
src.attack_hand()
+/obj/machinery/computer/teleporter/attackby(I as obj, user as mob)
+ if(istype(I, /obj/item/weapon/screwdriver))
+ playsound(src.loc, 'Screwdriver.ogg', 50, 1)
+ if(do_after(user, 20))
+ if (src.stat & BROKEN)
+ user << "\blue The broken glass falls out."
+ var/obj/computerframe/A = new /obj/computerframe( src.loc )
+ new /obj/item/weapon/shard( src.loc )
+ var/obj/item/weapon/circuitboard/teleporter/M = new /obj/item/weapon/circuitboard/teleporter( A )
+ for (var/obj/C in src)
+ C.loc = src.loc
+ A.circuit = M
+ A.state = 3
+ A.icon_state = "3"
+ A.anchored = 1
+ del(src)
+ else
+ user << "\blue You disconnect the monitor."
+ var/obj/computerframe/A = new /obj/computerframe( src.loc )
+ var/obj/item/weapon/circuitboard/teleporter/M = new /obj/item/weapon/circuitboard/teleporter( A )
+ for (var/obj/C in src)
+ C.loc = src.loc
+ A.circuit = M
+ A.state = 4
+ A.icon_state = "4"
+ A.anchored = 1
+ del(src)
+ else
+ src.attack_hand(user)
+ return
+
/obj/machinery/computer/teleporter/attack_paw()
src.attack_hand()
diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm
index 6947f8f34aa..1a437fa888f 100644
--- a/code/game/mecha/mech_bay.dm
+++ b/code/game/mecha/mech_bay.dm
@@ -128,6 +128,7 @@
anchored = 1
icon = 'mech_bay.dmi'
icon_state = "recharge_comp"
+ circuit = "/obj/item/weapon/circuitboard/mech_bay_power_console"
var/autostart = 1
var/voltage = 45
var/turf/simulated/floor/mech_bay_recharge_floor/recharge_floor
@@ -171,37 +172,6 @@
if(recharge_port)
recharge_port.stop_charge()
- attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/mech_bay_power_console/M = new /obj/item/weapon/circuitboard/mech_bay_power_console( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/mech_bay_power_console/M = new /obj/item/weapon/circuitboard/mech_bay_power_console( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- else
- src.attack_hand(user)
- return
-
attack_hand(mob/user as mob)
if(..()) return
var/output = "[src.name]"
diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm
index 15d5bfbc091..f13d29c87ed 100644
--- a/code/game/mecha/mecha_control_console.dm
+++ b/code/game/mecha/mecha_control_console.dm
@@ -3,39 +3,11 @@
icon = 'computer.dmi'
icon_state = "mecha"
req_access = list(access_robotics)
+ circuit = "/obj/item/weapon/circuitboard/mecha_control"
var/list/located = list()
var/screen = 0
var/stored_data
- attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(src.loc, 'Screwdriver.ogg', 50, 1)
- if(do_after(user, 20))
- if (src.stat & BROKEN)
- user << "\blue The broken glass falls out."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- new /obj/item/weapon/shard( src.loc )
- var/obj/item/weapon/circuitboard/mecha_control/M = new /obj/item/weapon/circuitboard/mecha_control( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 3
- A.icon_state = "3"
- A.anchored = 1
- del(src)
- else
- user << "\blue You disconnect the monitor."
- var/obj/computerframe/A = new /obj/computerframe( src.loc )
- var/obj/item/weapon/circuitboard/mecha_control/M = new /obj/item/weapon/circuitboard/mecha_control( A )
- for (var/obj/C in src)
- C.loc = src.loc
- A.circuit = M
- A.state = 4
- A.icon_state = "4"
- A.anchored = 1
- del(src)
- return
-
attack_ai(var/mob/user as mob)
return src.attack_hand(user)
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index 18a455d012e..a70e0ac0048 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -27,6 +27,8 @@
light()
else if(istype(W, /obj/item/weapon/match) && W:lit)
light()
+ else if(istype(W, /obj/item/candle) && W:lit)
+ light()
@@ -63,6 +65,7 @@
lit = 0
update_icon()
sd_SetLuminosity(0)
+ user.sd_SetLuminosity(user.luminosity - CANDLE_LUM)
/obj/item/candle/pickup(mob/user)
if(lit)
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index ed6ca7d04f0..1e24ab597e9 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -45,4 +45,62 @@
candle
name = "candle"
icon = 'candle.dmi'
- icon_state = "candle4"
\ No newline at end of file
+ icon_state = "candle4"
+
+
+/obj/item/trash/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if (istype(W, /obj/item/weapon/trashbag))
+ var/obj/item/weapon/trashbag/S = W
+ if (S.mode == 1)
+ for (var/obj/item/trash/O in locate(src.x,src.y,src.z))
+ if (S.contents.len < S.capacity)
+ S.contents += O;
+ else
+ user << "\blue The bag is full."
+ break
+ user << "\blue You pick up all trash."
+ else
+ if (S.contents.len < S.capacity)
+ S.contents += src;
+ else
+ user << "\blue The bag is full."
+ S.update_icon()
+ return
+
+/obj/item/weapon/trashbag
+ icon = 'trash.dmi'
+ icon_state = "trashbag0"
+ item_state = "trashbag"
+ name = "Trash bag"
+ var/mode = 0; //0 = pick one at a time, 1 = pick all on tile
+ var/capacity = 25; //the number of trash it can carry.
+ flags = FPRINT | TABLEPASS | ONBELT
+ w_class = 1
+
+/obj/item/weapon/trashbag/update_icon()
+ if(contents.len == 0)
+ icon_state = "trashbag0"
+ else if(contents.len < 12)
+ icon_state = "trashbag1"
+ else if(contents.len < 25)
+ icon_state = "trashbag2"
+ else icon_state = "trashbag3"
+
+/obj/item/weapon/trashbag/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if (istype(W, /obj/item/trash))
+ var/obj/item/trash/O = W
+ src.contents += O;
+ return
+
+/obj/item/weapon/trashbag/verb/toggle_mode()
+ set name = "Switch Bag Method"
+ set category = "Object"
+
+ mode = !mode
+ switch (mode)
+ if(1)
+ usr << "The bag now picks up all trash in a tile at once."
+ if(0)
+ usr << "The bag now picks up one trash at a time."
\ No newline at end of file
diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm
index 9dd11ed81c7..54fbe8fd798 100644
--- a/code/game/research/designs.dm
+++ b/code/game/research/designs.dm
@@ -111,6 +111,15 @@ datum
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/med_data"
+ operating
+ name = "Circuit Design (Operating Computer)"
+ desc = "Allows for the construction of circuit boards used to build an operating computer console."
+ id = "operating"
+ req_tech = list("programming" = 2, "biotech" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/operating"
+
pandemic
name = "Circuit Design (PanD.E.M.I.C. 2200)"
desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
@@ -266,7 +275,7 @@ datum
mechapower
name = "Circuit Design (Mech Bay Power Control Console)"
- desc = "Allows for the construction of circuit boards used to build an mech bay power control console."
+ desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
id = "mechapower"
req_tech = list("programming" = 2, "powerstorage" = 3)
build_type = IMPRINTER
@@ -275,13 +284,40 @@ datum
rdconsole
name = "Circuit Design (R&D Console)"
- desc = "Allows for the construction of circuit boards used to build an new R&D console."
+ desc = "Allows for the construction of circuit boards used to build a new R&D console."
id = "rdconsole"
- req_tech = list("programming" = 6)
+ req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/rdconsole"
+ ordercomp
+ name = "Circuit Design (Supply ordering console)"
+ desc = "Allows for the construction of circuit boards used to build a Supply ordering console."
+ id = "ordercomp"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/ordercomp"
+
+ supplycomp
+ name = "Circuit Design (Supply shuttle console)"
+ desc = "Allows for the construction of circuit boards used to build a Supply shuttle console."
+ id = "supplycomp"
+ req_tech = list("programming" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/supplycomp"
+
+ mining
+ name = "Circuit Design (Outpost Status Display)"
+ desc = "Allows for the construction of circuit boards used to build an outpost status display console."
+ id = "mining"
+ req_tech = list("programming" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 2000, "acid" = 20)
+ build_path = "/obj/item/weapon/circuitboard/mining"
+
///////////////////////////////////
//////////AI Module Disks//////////
///////////////////////////////////
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index 8388660ff72..124f042966d 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -74,6 +74,7 @@ var/ordernum=0
icon = 'computer.dmi'
icon_state = "supply"
req_access = list(access_cargo)
+ circuit = "/obj/item/weapon/circuitboard/supplycomp"
var/temp = null
var/hacked = 0
@@ -81,6 +82,7 @@ var/ordernum=0
name = "Supply ordering console"
icon = 'computer.dmi'
icon_state = "request"
+ circuit = "/obj/item/weapon/circuitboard/ordercomp"
var/temp = null
/obj/marker/supplymarker
@@ -208,31 +210,18 @@ var/ordernum=0
return
-/obj/machinery/computer/ordercomp/attackby(I as obj, user as mob)
- return src.attack_hand(user)
-
/obj/machinery/computer/ordercomp/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/ordercomp/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/supplycomp/attackby(I as obj, user as mob)
- return src.attack_hand(user)
-
/obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/supplycomp/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
-/obj/machinery/computer/supplycomp/attackby(I as obj, user as mob)
- if(istype(I,/obj/item/weapon/card/emag) && !hacked)
- user << "\blue Special supplies unlocked."
- src.hacked = 1
- else
- return src.attack_hand(user)
-
/obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob)
if(..())
return
@@ -365,6 +354,41 @@ var/ordernum=0
onclose(user, "computer")
return
+/obj/machinery/computer/supplycomp/attackby(I as obj, user as mob)
+ if(istype(I,/obj/item/weapon/card/emag) && !hacked)
+ user << "\blue Special supplies unlocked."
+ src.hacked = 1
+ return
+ if(istype(I, /obj/item/weapon/screwdriver))
+ playsound(src.loc, 'Screwdriver.ogg', 50, 1)
+ if(do_after(user, 20))
+ if (src.stat & BROKEN)
+ user << "\blue The broken glass falls out."
+ var/obj/computerframe/A = new /obj/computerframe( src.loc )
+ new /obj/item/weapon/shard( src.loc )
+ var/obj/item/weapon/circuitboard/supplycomp/M = new /obj/item/weapon/circuitboard/supplycomp( A )
+ for (var/obj/C in src)
+ C.loc = src.loc
+ A.circuit = M
+ A.state = 3
+ A.icon_state = "3"
+ A.anchored = 1
+ del(src)
+ else
+ user << "\blue You disconnect the monitor."
+ var/obj/computerframe/A = new /obj/computerframe( src.loc )
+ var/obj/item/weapon/circuitboard/supplycomp/M = new /obj/item/weapon/circuitboard/supplycomp( A )
+ for (var/obj/C in src)
+ C.loc = src.loc
+ A.circuit = M
+ A.state = 4
+ A.icon_state = "4"
+ A.anchored = 1
+ del(src)
+ else
+ src.attack_hand(user)
+ return
+
/obj/machinery/computer/supplycomp/Topic(href, href_list)
if(..())
return
diff --git a/icons/obj/candle.dmi b/icons/obj/candle.dmi
index 0a31f88bead..f4ca4df9422 100644
Binary files a/icons/obj/candle.dmi and b/icons/obj/candle.dmi differ
diff --git a/icons/obj/trash.dmi b/icons/obj/trash.dmi
index d7d5fde3ba8..0862939d247 100644
Binary files a/icons/obj/trash.dmi and b/icons/obj/trash.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 7dcfa7f43e4..2881f9cbdbc 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -41,7 +41,6 @@
#define FILE_DIR "code/game/gamemodes/revolution"
#define FILE_DIR "code/game/gamemodes/sandbox"
#define FILE_DIR "code/game/gamemodes/traitor"
-#define FILE_DIR "code/game/gamemodes/traitor_pair"
#define FILE_DIR "code/game/gamemodes/wizard"
#define FILE_DIR "code/game/jobs"
#define FILE_DIR "code/game/machinery"