diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 9b83bb0f83e..36f7db9e97b 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -334,7 +334,10 @@ GLOBAL_VAR(bomb_set) update_icon(UPDATE_OVERLAYS) /obj/machinery/nuclearbomb/attack_ghost(mob/user as mob) - attack_hand(user) + if(!panel_open) + return ui_interact(user, state = GLOB.viewer_state) + if(removal_stage != NUKE_CORE_FULLY_EXPOSED || !core) + return wires.Interact(user) /obj/machinery/nuclearbomb/attack_hand(mob/user as mob) if(!panel_open) diff --git a/code/modules/tgui/states/viewer_state.dm b/code/modules/tgui/states/viewer_state.dm new file mode 100644 index 00000000000..1bc57751701 --- /dev/null +++ b/code/modules/tgui/states/viewer_state.dm @@ -0,0 +1,10 @@ +/** + * tgui state: viewer_state + * + * State for only viewing, regardless of distance. Different from observer_state, which grants interactivity exclusively if an observer/admin. + */ + +GLOBAL_DATUM_INIT(viewer_state, /datum/ui_state/viewer_state, new) + +/datum/ui_state/viewer_state/can_use_topic(src_object, mob/user) + return STATUS_UPDATE diff --git a/paradise.dme b/paradise.dme index 6f1d0c755a0..e2714274a79 100644 --- a/paradise.dme +++ b/paradise.dme @@ -2734,6 +2734,7 @@ #include "code\modules\tgui\states\observer_state.dm" #include "code\modules\tgui\states\physical.dm" #include "code\modules\tgui\states\self.dm" +#include "code\modules\tgui\states\viewer_state.dm" #include "code\modules\tgui\states\zlevel_state.dm" #include "code\modules\tooltip\tooltip.dm" #include "code\modules\unit_tests\_unit_tests.dm"