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"