diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 784b60b979c..e700e4959f2 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -117,7 +117,10 @@ var/obj/machinery/new_machine = new circuit.build_path(loc) new_machine.setDir(dir) transfer_fingerprints_to(new_machine) - + // SKYRAT EDIT ADDITION BEGIN - Connecting Computers + for(var/obj/machinery/computer/selected in range(1,src)) + selected.update_overlays() + // SKYRAT EDIT ADDITION END - Connecting Computers if(istype(new_machine, /obj/machinery/computer)) var/obj/machinery/computer/new_computer = new_machine diff --git a/modular_skyrat/modules/advanced_shuttles/code/computer.dm b/modular_skyrat/modules/advanced_shuttles/code/computer.dm index 5c1105cd93a..ad08aef531c 100644 --- a/modular_skyrat/modules/advanced_shuttles/code/computer.dm +++ b/modular_skyrat/modules/advanced_shuttles/code/computer.dm @@ -3,27 +3,36 @@ icon_state = "intercom" layer = ABOVE_OBJ_LAYER + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. + /obj/machinery/computer/emergency_shuttle/advanced icon = 'modular_skyrat/modules/advanced_shuttles/icons/computer.dmi' icon_state = "computer" icon_keyboard = "" icon_screen = "" + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. + /obj/machinery/computer/crew/shuttle icon = 'modular_skyrat/modules/advanced_shuttles/icons/computer.dmi' icon_state = "computer_left" icon_keyboard = "" icon_screen = "" + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. + /obj/machinery/computer/security/shuttle icon = 'modular_skyrat/modules/advanced_shuttles/icons/computer.dmi' icon_state = "computer_right" icon_keyboard = "" icon_screen = "" + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. + /obj/machinery/computer/shuttle/ferry/shuttle icon = 'modular_skyrat/modules/advanced_shuttles/icons/computer.dmi' icon_state = "computer" icon_keyboard = "" icon_screen = "" + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. diff --git a/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm b/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm index 61d4531633e..dbe1b46791a 100644 --- a/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm +++ b/modular_skyrat/modules/advanced_shuttles/code/shuttles.dm @@ -34,6 +34,8 @@ light_color = COLOR_ORANGE_BROWN resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. + /obj/machinery/computer/shuttle/arrivals/recall name = "arrivals shuttle recall terminal" desc = "Use this if your friends left you behind." diff --git a/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm b/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm index 9894834a4da..018f9a955de 100644 --- a/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm +++ b/modular_skyrat/modules/bsa_overhaul/code/bsa_computer.dm @@ -12,6 +12,8 @@ var/target var/area_aim = FALSE //should also show areas for targeting + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. + /obj/machinery/computer/bsa_control/multitool_act(mob/living/user, obj/item/I) if(!multitool_check_buffer(user, I)) return diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/_computer.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/_computer.dm new file mode 100644 index 00000000000..cb9fc6e2dce --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/_computer.dm @@ -0,0 +1,77 @@ +/obj/machinery/computer + icon = 'modular_skyrat/modules/connecting_computer/icons/obj/computer.dmi' + ///Determines if the computer can connect to other computers (no arcades, etc.) + var/connectable = TRUE + +/obj/machinery/computer/Destroy() + for(var/obj/machinery/computer/selected in range(1, src)) + addtimer(CALLBACK(selected, .proc/callback_proc_issue), 2) + . = ..() + +/obj/machinery/computer/proc/callback_proc_issue() + update_overlays() + +/obj/machinery/computer/update_overlays() + . = ..() + if(icon_keyboard) + if(machine_stat & NOPOWER) + return . + "[icon_keyboard]_off" + . += icon_keyboard + + // This whole block lets screens ignore lighting and be visible even in the darkest room + var/overlay_state = icon_screen + if(connectable) + icon_state = initial(icon_state) + var/obj/machinery/computer/left_turf = null + var/obj/machinery/computer/right_turf = null + switch(dir) + if(NORTH) + left_turf = locate(/obj/machinery/computer) in get_step(src, WEST) + right_turf = locate(/obj/machinery/computer) in get_step(src, EAST) + if(EAST) + left_turf = locate(/obj/machinery/computer) in get_step(src, NORTH) + right_turf = locate(/obj/machinery/computer) in get_step(src, SOUTH) + if(SOUTH) + left_turf = locate(/obj/machinery/computer) in get_step(src, EAST) + right_turf = locate(/obj/machinery/computer) in get_step(src, WEST) + if(WEST) + left_turf = locate(/obj/machinery/computer) in get_step(src, SOUTH) + right_turf = locate(/obj/machinery/computer) in get_step(src, NORTH) + if(left_turf?.dir == dir && left_turf.connectable) + icon_state = "[icon_state]_L" + if(right_turf?.dir == dir && right_turf.connectable) + icon_state = "[icon_state]_R" + if(machine_stat & BROKEN) + overlay_state = "[icon_state]_broken" + . += mutable_appearance(icon, overlay_state) + . += emissive_appearance(icon, overlay_state) + +/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user) + on_deconstruction() + if(!(flags_1 & NODECONSTRUCT_1)) + if(circuit) //no circuit, no computer frame + var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc) + A.setDir(dir) + A.circuit = circuit + // Circuit removal code is handled in /obj/machinery/Exited() + circuit.forceMove(A) + A.set_anchored(TRUE) + if(machine_stat & BROKEN) + if(user) + to_chat(user, span_notice("The broken glass falls out.")) + else + playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE) + new /obj/item/shard(drop_location()) + new /obj/item/shard(drop_location()) + A.state = 3 + A.icon_state = "3" + else + if(user) + to_chat(user, span_notice("You disconnect the monitor.")) + A.state = 4 + A.icon_state = "4" + for(var/obj/C in src) + C.forceMove(loc) + for(var/obj/machinery/computer/selected in range(1,src)) + addtimer(CALLBACK(selected, .proc/callback_proc_issue), 2) + qdel(src) diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/arcade.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/arcade.dm new file mode 100644 index 00000000000..7a1ed44350d --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/arcade.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/arcade + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/camera.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/camera.dm new file mode 100644 index 00000000000..bcec3f5d0bd --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/camera.dm @@ -0,0 +1,5 @@ +/obj/machinery/computer/security/wooden_tv + connectable = FALSE + +/obj/machinery/computer/security/telescreen + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/medical.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/medical.dm new file mode 100644 index 00000000000..f7421ee3c3c --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/medical.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/med_data/laptop + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/pod.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/pod.dm new file mode 100644 index 00000000000..db1122fd041 --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/pod.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/pod/old + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/security.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/security.dm new file mode 100644 index 00000000000..6461381a7d4 --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/computer/security.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/secure_data/laptop + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/cryopod.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/cryopod.dm new file mode 100644 index 00000000000..b8ed2de17d4 --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/cryopod.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/cryopod + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/game/machinery/slotmachine.dm b/modular_skyrat/modules/connecting_computer/code/game/machinery/slotmachine.dm new file mode 100644 index 00000000000..b9250916a6a --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/game/machinery/slotmachine.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/slot_machine + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/modules/antagonists/abductor/machinery/camera.dm b/modular_skyrat/modules/connecting_computer/code/modules/antagonists/abductor/machinery/camera.dm new file mode 100644 index 00000000000..3f56bc9885a --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/modules/antagonists/abductor/machinery/camera.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/camera_advanced/abductor + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/modules/library/lib_machines.dm b/modular_skyrat/modules/connecting_computer/code/modules/library/lib_machines.dm new file mode 100644 index 00000000000..efd2ae30a51 --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/modules/library/lib_machines.dm @@ -0,0 +1,5 @@ +/obj/machinery/computer/libraryconsole + connectable = FALSE + +/obj/machinery/computer/bookmanagement + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/modules/mining/aux_base.dm b/modular_skyrat/modules/connecting_computer/code/modules/mining/aux_base.dm new file mode 100644 index 00000000000..b5c33ef68bd --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/modules/mining/aux_base.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/auxiliary_base + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/modules/reagents/chemistry/machinery/pandemic.dm b/modular_skyrat/modules/connecting_computer/code/modules/reagents/chemistry/machinery/pandemic.dm new file mode 100644 index 00000000000..1deb51397fc --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/pandemic + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/modules/research/nanites/nanite_cloud_controller.dm b/modular_skyrat/modules/connecting_computer/code/modules/research/nanites/nanite_cloud_controller.dm new file mode 100644 index 00000000000..ffd41747ed1 --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/modules/research/nanites/nanite_cloud_controller.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/nanite_cloud_controller + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/modules/shuttle/emergency.dm b/modular_skyrat/modules/connecting_computer/code/modules/shuttle/emergency.dm new file mode 100644 index 00000000000..6c674faa9be --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/modules/shuttle/emergency.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/shuttle/pod + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/code/modules/shuttle/syndicate.dm b/modular_skyrat/modules/connecting_computer/code/modules/shuttle/syndicate.dm new file mode 100644 index 00000000000..25e7645fcff --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/code/modules/shuttle/syndicate.dm @@ -0,0 +1,2 @@ +/obj/machinery/computer/shuttle/syndicate/drop_pod + connectable = FALSE diff --git a/modular_skyrat/modules/connecting_computer/icons/obj/computer.dmi b/modular_skyrat/modules/connecting_computer/icons/obj/computer.dmi new file mode 100644 index 00000000000..fca4e95079c Binary files /dev/null and b/modular_skyrat/modules/connecting_computer/icons/obj/computer.dmi differ diff --git a/modular_skyrat/modules/connecting_computer/icons/obj/modular_console.dmi b/modular_skyrat/modules/connecting_computer/icons/obj/modular_console.dmi new file mode 100644 index 00000000000..3a68cc0f34d Binary files /dev/null and b/modular_skyrat/modules/connecting_computer/icons/obj/modular_console.dmi differ diff --git a/modular_skyrat/modules/connecting_computer/readme.md b/modular_skyrat/modules/connecting_computer/readme.md new file mode 100644 index 00000000000..cc974ca67b0 --- /dev/null +++ b/modular_skyrat/modules/connecting_computer/readme.md @@ -0,0 +1,23 @@ +## Title: Connecting Computer + +MODULE ID: CONNECTING_COMPUTER + +### Description: + +Changing icons and some small procs to allow computers to connect with one another. + +### TG Proc Changes: + +N/A + +### Defines: + +N/A + +### Included files: + +N/A + +### Credits: + +Jake Park diff --git a/modular_skyrat/modules/stock_market/code/computer.dm b/modular_skyrat/modules/stock_market/code/computer.dm index b18aaf090d8..9971cbd0cb0 100644 --- a/modular_skyrat/modules/stock_market/code/computer.dm +++ b/modular_skyrat/modules/stock_market/code/computer.dm @@ -10,6 +10,8 @@ light_color = LIGHT_COLOR_GREEN + connectable = FALSE //connecting_computer change: since icon_state is not a typical console, it cannot be connectable. + /obj/machinery/computer/stockexchange/Initialize() . = ..() logged_in = "SS13 Cargo Department" diff --git a/tgstation.dme b/tgstation.dme index 207f7951059..97e8826fc2c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3908,6 +3908,21 @@ #include "modular_skyrat\modules\cme\code\_cme_defines.dm" #include "modular_skyrat\modules\cme\code\cme.dm" #include "modular_skyrat\modules\combat_indicator\code\combat_indicator.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\cryopod.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\slotmachine.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\computer\_computer.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\computer\arcade.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\computer\camera.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\computer\medical.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\computer\pod.dm" +#include "modular_skyrat\modules\connecting_computer\code\game\machinery\computer\security.dm" +#include "modular_skyrat\modules\connecting_computer\code\modules\antagonists\abductor\machinery\camera.dm" +#include "modular_skyrat\modules\connecting_computer\code\modules\library\lib_machines.dm" +#include "modular_skyrat\modules\connecting_computer\code\modules\mining\aux_base.dm" +#include "modular_skyrat\modules\connecting_computer\code\modules\reagents\chemistry\machinery\pandemic.dm" +#include "modular_skyrat\modules\connecting_computer\code\modules\research\nanites\nanite_cloud_controller.dm" +#include "modular_skyrat\modules\connecting_computer\code\modules\shuttle\emergency.dm" +#include "modular_skyrat\modules\connecting_computer\code\modules\shuttle\syndicate.dm" #include "modular_skyrat\modules\cryosleep\code\ai.dm" #include "modular_skyrat\modules\cryosleep\code\area.dm" #include "modular_skyrat\modules\cryosleep\code\config.dm"