From 07dfd5211be3b0e936bc0cea2fe6690959d1075b Mon Sep 17 00:00:00 2001 From: gozulio Date: Sat, 14 Jul 2018 15:15:39 -0400 Subject: [PATCH] R-UST Fixes. (#5410) R-UST Consoles can now be Deconstructed. R-UST Consoles will not be inaccessible if broken or unpowered. R-UST Consoles now accurately feed back if they're unpowered or broken. R-UST Fusion field can no longer be stared at to hard by the AI. --- .../modules/power/fusion/core/core_control.dm | 26 ++++++++++++++++--- code/modules/power/fusion/core/core_field.dm | 4 +-- .../fusion/fuel_assembly/fuel_control.dm | 19 +++++++++++++- .../power/fusion/gyrotron/gyrotron_control.dm | 24 ++++++++++++++++- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/code/modules/power/fusion/core/core_control.dm b/code/modules/power/fusion/core/core_control.dm index bb4e04b1e9..54d96883a7 100644 --- a/code/modules/power/fusion/core/core_control.dm +++ b/code/modules/power/fusion/core/core_control.dm @@ -3,21 +3,20 @@ icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "core_control" light_color = COLOR_ORANGE - + circuit = /obj/item/weapon/circuitboard/fusion_core_control var/id_tag var/scan_range = 25 var/list/connected_devices = list() var/obj/machinery/power/fusion_core/cur_viewed_device /obj/machinery/computer/fusion_core_control/attackby(var/obj/item/thing, var/mob/user) + ..() if(ismultitool(thing)) var/new_ident = input("Enter a new ident tag.", "Core Control", id_tag) as null|text if(new_ident && user.Adjacent(src)) id_tag = new_ident cur_viewed_device = null return - else - return ..() /obj/machinery/computer/fusion_core_control/attack_ai(mob/user) attack_hand(user) @@ -28,6 +27,11 @@ /obj/machinery/computer/fusion_core_control/interact(mob/user) + if(stat & (BROKEN|NOPOWER)) + user.unset_machine() + user << browse(null, "window=fusion_control") + return + if(!cur_viewed_device || !check_core_status(cur_viewed_device)) cur_viewed_device = null @@ -174,3 +178,19 @@ if(C.idle_power_usage > C.avail()) return . = 1 + +/obj/machinery/computer/fusion_core_control/update_icon() + if(stat & (BROKEN)) + icon = 'icons/obj/computer.dmi' + icon_state = "broken" + set_light(0) + + if(stat & (NOPOWER)) + icon = 'icons/obj/computer.dmi' + icon_state = "computer" + set_light(0) + + if(!stat & (BROKEN|NOPOWER)) + icon = initial(icon) + icon_state = initial(icon_state) + set_light(light_range_on, light_power_on) diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 1efb09d777..f5d85fb4bf 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -35,7 +35,7 @@ /obj/structure/cable, /obj/machinery/atmospherics, /obj/machinery/air_sensor, - /mob/observer/dead, + /mob/observer, /obj/machinery/power/hydromagnetic_trap ) @@ -672,4 +672,4 @@ #undef FUSION_HEAT_CAP #undef FUSION_MAX_ENVIRO_HEAT -#undef PLASMA_TEMP_RADIATION_DIVISIOR \ No newline at end of file +#undef PLASMA_TEMP_RADIATION_DIVISIOR diff --git a/code/modules/power/fusion/fuel_assembly/fuel_control.dm b/code/modules/power/fusion/fuel_assembly/fuel_control.dm index 6d95e358d8..e765c4d495 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_control.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_control.dm @@ -2,6 +2,7 @@ name = "fuel injection control computer" icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "fuel" + circuit = /obj/item/weapon/circuitboard/fusion_fuel_control var/id_tag var/scan_range = 25 @@ -94,9 +95,25 @@ /obj/machinery/computer/fusion_fuel_control/attackby(var/obj/item/W, var/mob/user) + ..() if(ismultitool(W)) var/new_ident = input("Enter a new ident tag.", "Fuel Control", id_tag) as null|text if(new_ident && user.Adjacent(src)) id_tag = new_ident return - return ..() + +/obj/machinery/computer/fusion_fuel_control/update_icon() + if(stat & (BROKEN)) + icon = 'icons/obj/computer.dmi' + icon_state = "broken" + set_light(0) + + if(stat & (NOPOWER)) + icon = 'icons/obj/computer.dmi' + icon_state = "computer" + set_light(0) + + if(!stat & (BROKEN|NOPOWER)) + icon = initial(icon) + icon_state = initial(icon_state) + set_light(light_range_on, light_power_on) diff --git a/code/modules/power/fusion/gyrotron/gyrotron_control.dm b/code/modules/power/fusion/gyrotron/gyrotron_control.dm index 9f6c59c753..eb735a81f3 100644 --- a/code/modules/power/fusion/gyrotron/gyrotron_control.dm +++ b/code/modules/power/fusion/gyrotron/gyrotron_control.dm @@ -3,6 +3,7 @@ icon = 'icons/obj/machines/power/fusion.dmi' icon_state = "engine" light_color = COLOR_BLUE + circuit = /obj/item/weapon/circuitboard/gyrotron_control var/id_tag var/scan_range = 25 @@ -16,6 +17,11 @@ /obj/machinery/computer/gyrotron_control/interact(var/mob/user) + if(stat & (BROKEN|NOPOWER)) + user.unset_machine() + user << browse(null, "window=gyrotron_controller_[id_tag]") + return + if(!id_tag) to_chat(user, "This console has not been assigned an ident tag. Please contact your system administrator or conduct a manual update with a standard multitool.") return @@ -89,9 +95,25 @@ return 0 /obj/machinery/computer/gyrotron_control/attackby(var/obj/item/W, var/mob/user) + ..() if(ismultitool(W)) var/new_ident = input("Enter a new ident tag.", "Gyrotron Control", id_tag) as null|text if(new_ident && user.Adjacent(src)) id_tag = new_ident return - return ..() + +/obj/machinery/computer/gyrotron_control/update_icon() + if(stat & (BROKEN)) + icon = 'icons/obj/computer.dmi' + icon_state = "broken" + set_light(0) + + if(stat & (NOPOWER)) + icon = 'icons/obj/computer.dmi' + icon_state = "computer" + set_light(0) + + if(!stat & (BROKEN|NOPOWER)) + icon = initial(icon) + icon_state = initial(icon_state) + set_light(light_range_on, light_power_on)