diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 62c22a2b84b..9db56b5b6fc 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -104,21 +104,19 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) return desc /datum/uplink_item/proc/buy(obj/item/uplink/hidden/U, mob/user) - if(!istype(U)) - return 0 + return FALSE if(user.stat || user.restrained()) - return 0 + return FALSE if(!(istype(user, /mob/living/carbon/human))) - return 0 + return FALSE // If the uplink's holder is in the user's contents if((U.loc in user.contents || (in_range(U.loc, user) && istype(U.loc.loc, /turf)))) - user.set_machine(U) if(cost > U.uses) - return 0 + return FALSE var/obj/I = spawn_item(get_turf(user), U) @@ -129,21 +127,23 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) log_game("[key_name(user)] purchased [name]. [name] was discounted to [cost].") if(!user.mind.special_role) message_admins("[key_name_admin(user)] purchased [name] (discounted to [cost]), as a non antagonist.") + else log_game("[key_name(user)] purchased [name].") if(!user.mind.special_role) message_admins("[key_name_admin(user)] purchased [name], as a non antagonist.") + A.put_in_any_hand_if_possible(I) if(istype(I,/obj/item/storage/box/) && I.contents.len>0) for(var/atom/o in I) U.purchase_log += "[bicon(o)]" + else U.purchase_log += "[bicon(I)]" - //U.interact(user) - return 1 - return 0 + return TRUE + return FALSE /* // diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 31ddd360f16..1c8736be085 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -94,7 +94,6 @@ emped = 0 //Resets the consecutive EMP count for(var/mob/M in GLOB.player_list) if(M.client && M.client.eye == src) - M.unset_machine() M.reset_perspective(null) to_chat(M, "The screen bursts into static.") ..() @@ -284,7 +283,6 @@ //I guess that doesn't matter since they can't use it anyway? for(var/mob/O in GLOB.player_list) if(O.client && O.client.eye == src) - O.unset_machine() O.reset_perspective(null) to_chat(O, "The screen bursts into static.") diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 5e89e8a0ddc..8dbb47daf97 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -140,12 +140,10 @@ /obj/machinery/computer/operating/ui_act(action, params) if(..()) return + if(stat & (NOPOWER|BROKEN)) return - if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - . = TRUE switch(action) if("verboseOn") diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index aa158f76545..5eacee68a60 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -155,7 +155,6 @@ /obj/machinery/computer/security/attack_hand(mob/user) if(stat || ..()) - user.unset_machine() return ui_interact(user) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 4884193b937..fb889b6724b 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -102,7 +102,6 @@ return attack_hand(user) /obj/machinery/computer/cloning/attack_hand(mob/user as mob) - user.set_machine(src) add_fingerprint(user) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm deleted file mode 100644 index b8805c93792..00000000000 --- a/code/game/machinery/overview.dm +++ /dev/null @@ -1,350 +0,0 @@ -//#define AMAP - -/obj/machinery/computer/security/verb/station_map() - set name = ".map" - set category = "Object" - set src in view(1) - usr.set_machine(src) - if(!mapping) return - - log_game("[usr]([usr.key]) used station map L[z] in [src.loc.loc]") - - src.drawmap(usr) - -/obj/machinery/computer/security/proc/drawmap(mob/user as mob) - - var/icx = round(world.maxx/16) + 1 - var/icy = round(world.maxy/16) + 1 - - var/xoff = round( (icx*16-world.maxx)-2) - var/yoff = round( (icy*16-world.maxy)-2) - - var/icount = icx * icy - - - var/list/imap = list() - -#ifdef AMAP - - for(var/i = 0; iIdentity confirmed,
" - if(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) - if(is_special_character(user)) - dat += "Operative record found. Greetings, Agent [user.name].
" - else if(charges < 1) - dat += "Connection severed.
" - else - var/honorific = "Mr." - if(user.gender == FEMALE) - honorific = "Ms." - dat += "Identity not found in operative database. What can the Syndicate do for you today, [honorific] [user.name]?
" - if(!selfdestructing) - dat += "

\"[pick("I want to switch teams.", "I want to work for you.", "Let me join you.", "I can be of use to you.", "You want me working for you, and here's why...", "Give me an objective.", "How's the 401k over at the Syndicate?")]\"
" - dat += temptext - user << browse(dat, "window=syndbeacon") - onclose(user, "syndbeacon") - -/obj/machinery/syndicate_beacon/Topic(href, href_list) - if(..()) - return 1 - if(href_list["betraitor"]) - if(charges < 1) - src.updateUsrDialog() - return - var/mob/M = locate(href_list["traitormob"]) - if(M.mind.special_role) - temptext = "We have no need for you at this time. Have a pleasant day.
" - src.updateUsrDialog() - return - charges -= 1 - if(prob(50)) - temptext = "Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind." - updateUsrDialog() - addtimer(CALLBACK(src, .proc/selfdestruct), rand(50, 200)) - return - if(istype(M, /mob/living/carbon/human)) - var/mob/living/carbon/human/N = M - var/objective = "Free Objective" - switch(rand(1,100)) - if(1 to 50) - objective = "Steal [pick("a hand teleporter", "the Captain's antique laser gun", "a jetpack", "the Captain's ID", "the Captain's jumpsuit")]." - if(51 to 60) - objective = "Destroy 70% or more of the station's plasma tanks." - if(61 to 70) - objective = "Cut power to 80% or more of the station's tiles." - if(71 to 80) - objective = "Destroy the AI." - if(81 to 90) - objective = "Kill all monkeys aboard the station." - else - objective = "Make certain at least 80% of the station evacuates on the shuttle." - - var/datum/objective/custom_objective = new(objective) - custom_objective.owner = N.mind - N.mind.objectives += custom_objective - var/datum/objective/escape/escape_objective = new - escape_objective.owner = N.mind - N.mind.objectives += escape_objective - - var/datum/antagonist/traitor/T = new() - T.give_objectives = FALSE - N.mind.add_antag_datum(T) - - to_chat(M, "You have joined the ranks of the Syndicate and become a traitor to the station!") - message_admins("[key_name_admin(N)] has accepted a traitor objective from a syndicate beacon.") - - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - - -/obj/machinery/syndicate_beacon/proc/selfdestruct() - selfdestructing = TRUE - spawn() explosion(src.loc, rand(3,8), rand(1,3), 1, 10) - - - //////////////////////////////////////// //Singularity beacon //////////////////////////////////////// diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index a7e499671e6..d5ed752da0d 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -359,7 +359,7 @@ /obj/item/radio/headset/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/encryptionkey/)) - user.set_machine(src) + if(keyslot1 && keyslot2) to_chat(user, "The headset can't hold another key!") return @@ -372,15 +372,17 @@ user.drop_item() W.loc = src keyslot2 = W + recalculateChannels() - else - return ..() + return + + return ..() /obj/item/radio/headset/screwdriver_act(mob/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = 0)) return - user.set_machine(src) + if(keyslot1 || keyslot2) for(var/ch_name in channels) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index c55d9a85c2d..629bae3407d 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -563,13 +563,14 @@ GLOBAL_LIST_INIT(default_medbay_channels, list( . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - user.set_machine(src) + b_stat = !b_stat if(!istype(src, /obj/item/radio/beacon)) if(b_stat) user.show_message("The radio can now be attached and modified!") else user.show_message("The radio can no longer be modified or attached!") + updateDialog() /obj/item/radio/wirecutter_act(mob/user, obj/item/I) @@ -663,7 +664,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list( /obj/item/radio/borg/attackby(obj/item/W as obj, mob/user as mob, params) if(istype(W, /obj/item/encryptionkey/)) - user.set_machine(src) + if(keyslot) to_chat(user, "The radio can't hold another key!") return @@ -674,14 +675,15 @@ GLOBAL_LIST_INIT(default_medbay_channels, list( keyslot = W recalculateChannels() - else - return ..() + return + + return ..() /obj/item/radio/borg/screwdriver_act(mob/user, obj/item/I) . = TRUE if(!I.use_tool(src, user, 0, volume = 0)) return - user.set_machine(src) + if(keyslot) for(var/ch_name in channels) SSradio.remove_object(src, SSradio.radiochannels[ch_name]) diff --git a/code/game/objects/items/weapons/rpd.dm b/code/game/objects/items/weapons/rpd.dm index 08e9e130742..d1edf8560cc 100644 --- a/code/game/objects/items/weapons/rpd.dm +++ b/code/game/objects/items/weapons/rpd.dm @@ -173,7 +173,6 @@ ui_interact(user) /obj/item/rpd/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state) - user.set_machine(src) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "RPD", name, 450, 650, master_ui, state) diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 874eb61aac4..c635b0eac4d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -243,8 +243,6 @@ to_chat(user, "[failed] item\s [failed == 1 ? "is" : "are"] refused.") /obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) - user.set_machine(src) - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "Smartfridge", name, 500, 500) diff --git a/code/modules/newscaster/obj/newspaper.dm b/code/modules/newscaster/obj/newspaper.dm index aa7eb1bf2bf..26304662129 100644 --- a/code/modules/newscaster/obj/newspaper.dm +++ b/code/modules/newscaster/obj/newspaper.dm @@ -132,7 +132,7 @@ var/mob/living/M = usr if(!Adjacent(M)) return - M.set_machine(src) + if(href_list["next_page"]) if(curr_page == pages + 1) return //Don't need that at all, but anyway. @@ -142,6 +142,7 @@ screen = SCREEN_PAGE_INNER curr_page++ playsound(loc, "pageturn", 50, TRUE) + else if(href_list["prev_page"]) if(curr_page == 0) return diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 4a4679468b7..1d917a4f326 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -138,15 +138,16 @@ + "", "window=PaperBundle[UID()]") /obj/item/paper_bundle/attack_self(mob/user as mob) - src.show_content(user) + show_content(user) add_fingerprint(usr) update_icon() return /obj/item/paper_bundle/Topic(href, href_list) - ..() + if(..()) + return + if((src in usr.contents) || (istype(src.loc, /obj/item/folder) && (src.loc in usr.contents))) - usr.set_machine(src) if(href_list["next_page"]) if(page == amount) screen = 2 @@ -156,6 +157,7 @@ return page++ playsound(src.loc, "pageturn", 50, 1) + if(href_list["prev_page"]) if(page == 1) return @@ -165,6 +167,7 @@ screen = 1 page-- playsound(src.loc, "pageturn", 50, 1) + if(href_list["remove"]) var/obj/item/W = src[page] usr.put_in_hands(W) @@ -176,8 +179,10 @@ usr.unset_machine() // Ensure the bundle GCs qdel(src) return + else if(page == amount) screen = 2 + else if(page == amount+1) page-- @@ -185,9 +190,9 @@ update_icon() else to_chat(usr, "You need to hold it in your hands to change pages.") - if(istype(src.loc, /mob)) - src.attack_self(src.loc) - updateUsrDialog() + + if(istype(loc, /mob)) + attack_self(loc) @@ -199,8 +204,9 @@ var/n_name = sanitize(copytext(input(usr, "What would you like to label the bundle?", "Bundle Labelling", name) as text, 1, MAX_MESSAGE_LEN)) if((loc == usr && usr.stat == 0)) name = "[(n_name ? text("[n_name]") : "paper bundle")]" + add_fingerprint(usr) - return + /obj/item/paper_bundle/verb/remove_all() @@ -209,21 +215,24 @@ set src in usr to_chat(usr, "You loosen the bundle.") + for(var/obj/O in src) O.loc = usr.loc O.layer = initial(O.layer) O.plane = initial(O.plane) O.add_fingerprint(usr) + usr.unEquip(src) qdel(src) - return /obj/item/paper_bundle/update_desc() . = ..() + if(amount > 1) desc = "[amount] papers clipped to each other." else desc = "A single sheet of paper." + if(locate(/obj/item/photo) in src) desc += "\nThere is a photo attached to it." @@ -238,6 +247,7 @@ if(contents.len) var/obj/item/paper/P = src[1] . += P.overlays + for(var/obj/O in src) var/image/sheet = image('icons/obj/bureaucracy.dmi') if(istype(O, /obj/item/paper)) @@ -247,7 +257,9 @@ pixel_x = min(0.5 * amount, 1) pixel_y = min(1 * amount, 2) underlays += sheet + else if(istype(O, /obj/item/photo)) var/obj/item/photo/picture = O . += picture.tiny + . += "clip" diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 0ac05d5209c..55974349805 100755 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -106,7 +106,6 @@ GLOBAL_LIST_EMPTY(PDAs) return attack_self(M) /obj/item/pda/attack_self(mob/user as mob) - user.set_machine(src) if(active_uplink_check(user)) return ui_interact(user) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index f77a13bcac2..80d9afd5cc5 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -932,8 +932,6 @@ ) if(!loud) to_chat(user, "\The [src] has AI control disabled!") - user << browse(null, "window=apc") - user.unset_machine() return FALSE else if((!in_range(src, user) || !istype(loc, /turf))) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 13a1040fd26..d4487f1f2b4 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -590,11 +590,7 @@ STOP_PROCESSING(SSobj, src) return ..() -/obj/item/gun/energy/temperature/newshot() - ..() - /obj/item/gun/energy/temperature/attack_self(mob/living/user as mob) - user.set_machine(src) update_dat() user << browse("Temperature Gun Configuration
[dat]", "window=tempgun;size=510x120") onclose(user, "tempgun") @@ -608,7 +604,7 @@ /obj/item/gun/energy/temperature/Topic(href, href_list) if(..()) return - usr.set_machine(src) + add_fingerprint(usr) if(href_list["temp"]) @@ -617,10 +613,12 @@ target_temperature = min((500 + 500*emagged), target_temperature+amount) else target_temperature = max(0, target_temperature+amount) + if(istype(loc, /mob)) attack_self(loc) + add_fingerprint(usr) - return + /obj/item/gun/energy/temperature/process() ..() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 11f33f44351..03e79049697 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -157,7 +157,6 @@ return TRUE add_fingerprint(usr) - usr.set_machine(src) . = TRUE switch(action) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 9f8a5ea3558..159d7934cb6 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -368,7 +368,6 @@ GLOBAL_LIST_INIT(conveyor_switches, list()) ui_interact(user) /obj/machinery/conveyor_switch/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) - user.set_machine(src) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "ConveyorSwitch", name, 350, 150, master_ui, state) diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index fec3f718deb..1223c44553c 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -75,9 +75,6 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). return round(A / max(1, (all_materials[M] * efficiency_coeff))) /obj/machinery/r_n_d/circuit_imprinter/attackby(obj/item/O as obj, mob/user as mob, params) - if(shocked) - if(shock(user,50)) - return TRUE if(default_deconstruction_screwdriver(user, "circuit_imprinter_t", "circuit_imprinter", O)) if(linked_console) linked_console.linked_imprinter = null diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index a1fb80d44f6..dc0b3c9b8e2 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -49,9 +49,6 @@ Note: Must be placed within 3 tiles of the R&D Console /obj/machinery/r_n_d/destructive_analyzer/attackby(obj/item/O as obj, mob/user as mob, params) - if(shocked) - if(shock(user,50)) - return TRUE if(default_deconstruction_screwdriver(user, "d_analyzer_t", "d_analyzer", O)) if(linked_console) linked_console.linked_destroy = null @@ -64,14 +61,14 @@ Note: Must be placed within 3 tiles of the R&D Console if(default_deconstruction_crowbar(user, O)) return - if(disabled) - return if(!linked_console) to_chat(user, "[src] must be linked to an R&D console first!") return + if(busy) to_chat(user, "[src] is busy right now.") return + if(istype(O, /obj/item) && !loaded_item) if(!O.origin_tech) to_chat(user, "This doesn't seem to have a tech origin!") diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 3ba021f337c..38fb70da58e 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -102,9 +102,6 @@ return TRUE /obj/machinery/r_n_d/experimentor/attackby(obj/item/O, mob/user, params) - if(shocked) - shock(user,50) - if(exchange_parts(user, O)) return @@ -112,14 +109,14 @@ to_chat(user, "[O] is not yet valid for [src] and must be completed!") return - if(disabled) - return if(!linked_console) to_chat(user, "[src] must be linked to an R&D console first!") return + if(loaded_item) to_chat(user, "[src] is already loaded.") return + if(istype(O, /obj/item)) if(!O.origin_tech) to_chat(user, "This doesn't seem to have a tech origin!") @@ -135,8 +132,6 @@ to_chat(user, "You add [O] to the machine.") flick("h_lathe_load", src) - return - /obj/machinery/r_n_d/experimentor/crowbar_act(mob/user, obj/item/I) if(!panel_open) return diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index ad71dc2a08d..2b78ebd2f94 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -77,17 +77,14 @@ Note: Must be placed west/left of and R&D console to function. return A /obj/machinery/r_n_d/protolathe/attackby(obj/item/O as obj, mob/user as mob, params) - if(shocked) - if(shock(user,50)) - return TRUE if(default_deconstruction_screwdriver(user, "protolathe_t", "protolathe", O)) if(linked_console) linked_console.linked_lathe = null linked_console = null - return + return FALSE if(exchange_parts(user, O)) - return + return FALSE if(panel_open) if(istype(O, /obj/item/crowbar)) @@ -99,10 +96,11 @@ Note: Must be placed west/left of and R&D console to function. reagents.trans_to(G, G.reagents.maximum_volume) materials.retrieve_all() default_deconstruction_crowbar(user, O) - return 1 + return TRUE else to_chat(user, "You can't load [src] while it's opened.") - return 1 + return TRUE + if(O.is_open_container()) return FALSE else diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 45521a7e95c..9221e1bca87 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -130,21 +130,23 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any). for(var/obj/machinery/r_n_d/D in range(3,src)) - if(!isnull(D.linked_console) || D.disabled || D.panel_open) + if(!isnull(D.linked_console) || D.panel_open) continue + if(istype(D, /obj/machinery/r_n_d/destructive_analyzer)) if(linked_destroy == null) linked_destroy = D D.linked_console = src + else if(istype(D, /obj/machinery/r_n_d/protolathe)) if(linked_lathe == null) linked_lathe = D D.linked_console = src + else if(istype(D, /obj/machinery/r_n_d/circuit_imprinter)) if(linked_imprinter == null) linked_imprinter = D D.linked_console = src - return //Have it automatically push research to the centcom server so wild griffins can't fuck up R&D's work --NEO /obj/machinery/computer/rdconsole/proc/griefProtection() @@ -267,16 +269,18 @@ won't update every console in existence) but it's more of a hassle to do. Also, clear_wait_message() for(var/obj/machinery/r_n_d/server/S in GLOB.machines) var/server_processed = FALSE - if(S.disabled) - continue + if((id in S.id_with_upload) || istype(S, /obj/machinery/r_n_d/server/centcom)) files.push_data(S.files) server_processed = TRUE - if(((id in S.id_with_download) && !istype(S, /obj/machinery/r_n_d/server/centcom)) || S.hacked) + + if(((id in S.id_with_download) && !istype(S, /obj/machinery/r_n_d/server/centcom))) S.files.push_data(files) server_processed = TRUE + if(!istype(S, /obj/machinery/r_n_d/server/centcom) && server_processed) S.produce_heat(100) + SStgui.update_uis(src) /obj/machinery/computer/rdconsole/proc/reset_research() @@ -339,14 +343,13 @@ won't update every console in existence) but it's more of a hassle to do. Also, if(!linked_destroy || !temp_tech) return - if(!linked_destroy.hacked) - if(!linked_destroy.loaded_item) - to_chat(user, "[linked_destroy] appears to be empty.") - else - for(var/T in temp_tech) - files.UpdateTech(T, temp_tech[T]) - send_mats() - linked_destroy.loaded_item = null + if(!linked_destroy.loaded_item) + to_chat(user, "[linked_destroy] appears to be empty.") + else + for(var/T in temp_tech) + files.UpdateTech(T, temp_tech[T]) + send_mats() + linked_destroy.loaded_item = null for(var/obj/I in linked_destroy.contents) for(var/mob/M in I.contents) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 24a42067b39..f1aa65b0ab8 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -8,34 +8,12 @@ anchored = TRUE use_power = IDLE_POWER_USE var/busy = FALSE - var/hacked = FALSE - var/disabled = FALSE - var/shocked = FALSE - var/list/wires = list() - var/hack_wire - var/disable_wire - var/shock_wire var/obj/machinery/computer/rdconsole/linked_console var/obj/item/loaded_item = null var/datum/component/material_container/materials //Store for hyper speed! var/efficiency_coeff = 1 var/list/categories = list() - -/obj/machinery/r_n_d/Initialize(mapload) - . = ..() - - wires["Red"] = 0 - wires["Blue"] = 0 - wires["Green"] = 0 - wires["Yellow"] = 0 - wires["Black"] = 0 - wires["White"] = 0 - var/list/w = list("Red","Blue","Green","Yellow","Black","White") - hack_wire = pick_n_take(w) - shock_wire = pick_n_take(w) - disable_wire = pick_n_take(w) - /obj/machinery/r_n_d/ComponentInitialize() ..() materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), 0, TRUE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) @@ -49,84 +27,32 @@ materials = null return ..() -/obj/machinery/r_n_d/attack_hand(mob/user as mob) - if(shocked) - shock(user,50) - if(panel_open) - var/list/dat = list() - dat += "[src.name] Wires:
" - for(var/wire in wires) - dat += "[wire] Wire: [src.wires[wire] ? "Mend" : "Cut"] Pulse
" - - dat += "The red light is [src.disabled ? "off" : "on"].
" - dat += "The green light is [src.shocked ? "off" : "on"].
" - dat += "The blue light is [src.hacked ? "off" : "on"].
" - user << browse("[src.name] Hacking[dat.Join("")]","window=hack_win") - return - - -/obj/machinery/r_n_d/Topic(href, href_list) - if(..()) - return - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["pulse"]) - var/temp_wire = href_list["wire"] - if(!istype(usr.get_active_hand(), /obj/item/multitool)) - to_chat(usr, "You need a multitool!") - else - if(src.wires[temp_wire]) - to_chat(usr, "You can't pulse a cut wire.") - else - if(src.hack_wire == href_list["wire"]) - src.hacked = !src.hacked - spawn(100) src.hacked = !src.hacked - if(src.disable_wire == href_list["wire"]) - src.disabled = !src.disabled - src.shock(usr,50) - spawn(100) src.disabled = !src.disabled - if(src.shock_wire == href_list["wire"]) - src.shocked = !src.shocked - src.shock(usr,50) - spawn(100) src.shocked = !src.shocked - if(href_list["cut"]) - if(!istype(usr.get_active_hand(), /obj/item/wirecutters)) - to_chat(usr, "You need wirecutters!") - else - var/temp_wire = href_list["wire"] - wires[temp_wire] = !wires[temp_wire] - if(src.hack_wire == temp_wire) - src.hacked = !src.hacked - if(src.disable_wire == temp_wire) - src.disabled = !src.disabled - src.shock(usr,50) - if(src.shock_wire == temp_wire) - src.shocked = !src.shocked - src.shock(usr,50) - src.updateUsrDialog() - //whether the machine can have an item inserted in its current state. /obj/machinery/r_n_d/proc/is_insertion_ready(mob/user) if(panel_open) to_chat(user, "You can't load [src] while it's opened!") return FALSE - if(disabled) - return FALSE + if(!linked_console) to_chat(user, "[src] must be linked to an R&D console first!") return FALSE + if(busy) to_chat(user, "[src] is busy right now.") return FALSE + if(stat & BROKEN) to_chat(user, "[src] is broken.") return FALSE + if(stat & NOPOWER) to_chat(user, "[src] has no power.") return FALSE + if(loaded_item) to_chat(user, "[src] is already loaded.") return FALSE + return TRUE /obj/machinery/r_n_d/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 620a1462e23..a132e941fae 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -140,12 +140,6 @@ air_update_turf() /obj/machinery/r_n_d/server/attackby(obj/item/O as obj, mob/user as mob, params) - if(disabled) - return - - if(shocked) - shock(user,50) - if(istype(O, /obj/item/screwdriver)) default_deconstruction_screwdriver(user, "RD-server-on_t", "RD-server-on", O) return 1 @@ -161,14 +155,6 @@ else return ..() -/obj/machinery/r_n_d/server/attack_hand(mob/user as mob) - if(disabled) - return - - if(shocked) - shock(user,50) - return - /obj/machinery/r_n_d/server/centcom name = "CentComm. Central R&D Database" server_id = -1 diff --git a/paradise.dme b/paradise.dme index 070b47ac011..30d9408c329 100644 --- a/paradise.dme +++ b/paradise.dme @@ -688,7 +688,6 @@ #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\navbeacon.dm" #include "code\game\machinery\OpTable.dm" -#include "code\game\machinery\overview.dm" #include "code\game\machinery\PDApainter.dm" #include "code\game\machinery\poolcontroller.dm" #include "code\game\machinery\portable_tag_turret.dm"