From 1ffd9c2745fefbf85ba2f8cba19322c683058b50 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sat, 2 Mar 2024 12:45:36 +0100 Subject: [PATCH] Tgui and nif runtimes (#7864) --- code/controllers/subsystems/tgui.dm | 6 +++--- code/modules/nifsoft/nif.dm | 5 ++++- code/modules/tgui/tgui.dm | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/code/controllers/subsystems/tgui.dm b/code/controllers/subsystems/tgui.dm index 6810a23a7f..e626b7201d 100644 --- a/code/controllers/subsystems/tgui.dm +++ b/code/controllers/subsystems/tgui.dm @@ -266,13 +266,13 @@ SUBSYSTEM_DEF(tgui) * * return int The number of UIs closed. */ -/datum/controller/subsystem/tgui/proc/close_user_uis(mob/user, datum/src_object) +/datum/controller/subsystem/tgui/proc/close_user_uis(mob/user, datum/src_object, logout = FALSE) var/count = 0 if(length(user?.tgui_open_uis) == 0) return count for(var/datum/tgui/ui in user.tgui_open_uis) if(isnull(src_object) || ui.src_object == src_object) - ui.close() + ui.close(logout = logout) count++ return count @@ -318,7 +318,7 @@ SUBSYSTEM_DEF(tgui) * return int The number of UIs closed. */ /datum/controller/subsystem/tgui/proc/on_logout(mob/user) - close_user_uis(user) + close_user_uis(user, logout = TRUE) /** * private diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index a33daf0f85..6e276d0179 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -461,7 +461,10 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable //Uninstall a piece of software /obj/item/device/nif/proc/uninstall(var/datum/nifsoft/old_soft) - var/datum/nifsoft/NS = nifsofts[old_soft.list_pos] + var/datum/nifsoft/NS + if(nifsofts) + NS = nifsofts[old_soft.list_pos] + if(!NS || NS != old_soft) return FALSE //what?? diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index f58376bbe8..2dbe340951 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -237,7 +237,7 @@ * optional force bool Send an update even if UI is not interactive. */ /datum/tgui/proc/send_update(custom_data, force) - if(!user.client || !initialized || closing) + if(!user?.client || !initialized || closing) return var/should_update_data = force || status >= STATUS_UPDATE window.send_message("update", get_payload( @@ -329,7 +329,8 @@ */ /datum/tgui/proc/process_status() var/prev_status = status - status = src_object.tgui_status(user, state) + if(src_object) + status = src_object.tgui_status(user, state) if(parent_ui) status = min(status, parent_ui.status) return prev_status != status