diff --git a/code/datums/spawners_menu.dm b/code/datums/spawners_menu.dm index 09cf433daf5..5cc76721377 100644 --- a/code/datums/spawners_menu.dm +++ b/code/datums/spawners_menu.dm @@ -6,10 +6,10 @@ qdel(src) owner = new_owner -/datum/spawners_menu/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = FALSE, datum/nanoui/master_ui = null) +/datum/spawners_menu/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = FALSE, datum/topic_state/state = ghost_state, datum/nanoui/master_ui = null) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "spawners_menu.tmpl", "Spawners Menu", 700, 600, master_ui) + ui = new(user, src, ui_key, "spawners_menu.tmpl", "Spawners Menu", 700, 600, master_ui, state = state) ui.open() /datum/spawners_menu/ui_data(mob/user) diff --git a/code/modules/nano/interaction/ghost.dm b/code/modules/nano/interaction/ghost.dm new file mode 100644 index 00000000000..6b0aa3db1ca --- /dev/null +++ b/code/modules/nano/interaction/ghost.dm @@ -0,0 +1,14 @@ +/* + This checks that the user is a ghost or alternatively an admin. Used for the mob spawner. + We don't want any living people somehow getting the menu open and reincarnating while alive +*/ + +/var/global/datum/topic_state/ghost_state/ghost_state = new() + +/datum/topic_state/ghost_state/can_use_topic(var/src_object, var/mob/user) + if(user.stat == DEAD) + return STATUS_INTERACTIVE + if(check_rights(R_ADMIN, 0, src)) + return STATUS_INTERACTIVE + return STATUS_CLOSE + diff --git a/paradise.dme b/paradise.dme index 8a403c97472..912ff79c344 100644 --- a/paradise.dme +++ b/paradise.dme @@ -2026,6 +2026,7 @@ #include "code\modules\nano\interaction\conscious.dm" #include "code\modules\nano\interaction\contained.dm" #include "code\modules\nano\interaction\default.dm" +#include "code\modules\nano\interaction\ghost.dm" #include "code\modules\nano\interaction\inventory.dm" #include "code\modules\nano\interaction\inventory_deep.dm" #include "code\modules\nano\interaction\not_incapacitated.dm"