From 4ab5f6d2d69476eb4da1b09fdf53aa670c92b960 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 24 Aug 2023 04:41:22 +0200 Subject: [PATCH] [MIRROR] small modlink fixes [MDB IGNORE] (#23293) * small modlink fixes (#77804) ## About The Pull Request fixes bug in multitools where they didnt unregister signals fixes modlink scryers checking battery charge without a battery frequency stuff is a bit more explained ## Why It's Good For The Game good stuf ## Changelog :cl: fix: fixes multitools possibly randomly losing their buffer fix: fixes modlinks checking battery charge without a battery and working without charge qol: modlink stuff is a bit more explained fix: modlinks printed from rnd no longer start with a frequency (remember to copy it from another one with a multitool buffer, robotics starts with 2 NT frequency linked ones) /:cl: * small modlink fixes --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> --- code/game/objects/items/devices/multitool.dm | 4 ++-- code/modules/mod/mod_link.dm | 15 +++++++++------ code/modules/mod/mod_ui.dm | 1 + icons/mob/actions/actions_mod.dmi | Bin 3408 -> 3473 bytes tgui/packages/tgui/interfaces/MODsuit.tsx | 13 +++++++++---- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index c9d644cb814..025f5fa5e88 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -42,8 +42,8 @@ return OXYLOSS//theres a reason it wasn't recommended by doctors /obj/item/multitool/proc/set_buffer(datum/buffer) - if(buffer) - UnregisterSignal(buffer, COMSIG_QDELETING) + if(src.buffer) + UnregisterSignal(src.buffer, COMSIG_QDELETING) if(QDELETED(buffer)) return src.buffer = buffer diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index 6c462718b3e..42d2f664a82 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -102,7 +102,7 @@ mod_link.frequency = tool_frequency /obj/item/mod/control/proc/can_call() - return wearer && wearer.stat < DEAD + return get_charge() && wearer && wearer.stat < DEAD /obj/item/mod/control/proc/make_link_visual() return make_link_visual_generic(mod_link, PROC_REF(on_overlay_change)) @@ -132,7 +132,7 @@ /obj/item/mod/control/proc/on_wearer_set_dir(atom/source, dir, newdir) SIGNAL_HANDLER - on_user_set_dir_generic(mod_link, newdir) + on_user_set_dir_generic(mod_link, newdir || SOUTH) /obj/item/clothing/neck/link_scryer name = "\improper MODlink scryer" @@ -144,7 +144,7 @@ /// The MODlink datum we operate. var/datum/mod_link/mod_link /// Initial frequency of the MODlink. - var/starting_frequency = "NT" + var/starting_frequency /// An additional name tag for the scryer, seen as "MODlink scryer - [label]" var/label @@ -173,7 +173,7 @@ . += span_notice("The battery charge reads [cell.percent()]%. Right-click with an empty hand to remove it.") else . += span_notice("It is missing a battery, one can be installed by clicking with a power cell on it.") - . += span_notice("The MODlink ID is [mod_link.id], frequency is [mod_link.frequency]. Right-click with multitool to copy/imprint frequency.") + . += span_notice("The MODlink ID is [mod_link.id], frequency is [mod_link.frequency || "unset"]. Right-click with multitool to copy/imprint frequency.") . += span_notice("Use in hand to set name.") /obj/item/clothing/neck/link_scryer/equipped(mob/living/user, slot) @@ -260,7 +260,7 @@ /obj/item/clothing/neck/link_scryer/proc/can_call() var/mob/living/user = loc - return istype(user) && cell.charge && user.stat < DEAD + return istype(user) && cell?.charge && user.stat < DEAD /obj/item/clothing/neck/link_scryer/proc/make_link_visual() var/mob/living/user = mod_link.get_user_callback.Invoke() @@ -296,7 +296,10 @@ /obj/item/clothing/neck/link_scryer/proc/on_user_set_dir(atom/source, dir, newdir) SIGNAL_HANDLER - on_user_set_dir_generic(mod_link, newdir) + on_user_set_dir_generic(mod_link, newdir || SOUTH) + +/obj/item/clothing/neck/link_scryer/loaded + starting_frequency = "NT" /obj/item/clothing/neck/link_scryer/loaded/Initialize(mapload) . = ..() diff --git a/code/modules/mod/mod_ui.dm b/code/modules/mod/mod_ui.dm index 06f89ddb03c..eaf4b75d7ee 100644 --- a/code/modules/mod/mod_ui.dm +++ b/code/modules/mod/mod_ui.dm @@ -16,6 +16,7 @@ "has_pai" = ispAI(ai_assistant), "is_ai" = ai_assistant && ai_assistant == user, "link_id" = mod_link.id, + "link_freq" = mod_link.frequency, "link_call" = mod_link.get_other()?.id, // Wires "open" = open, diff --git a/icons/mob/actions/actions_mod.dmi b/icons/mob/actions/actions_mod.dmi index 84fcbc00dbbc38bf7ab1276ea01f8a6c9bc2ce3d..f788de20194bd3778eb17a337b360cd2964a2543 100644 GIT binary patch delta 3283 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 K(W%sOe)exNs#i?_ delta 3218 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 Te&PiR0Kj>y)!Aw@&)9zf$blek diff --git a/tgui/packages/tgui/interfaces/MODsuit.tsx b/tgui/packages/tgui/interfaces/MODsuit.tsx index 593dc109bf8..53928a5efa0 100644 --- a/tgui/packages/tgui/interfaces/MODsuit.tsx +++ b/tgui/packages/tgui/interfaces/MODsuit.tsx @@ -36,6 +36,7 @@ type SuitStatus = { has_pai: boolean; is_ai: boolean; link_id: string; + link_freq: string; link_call: string; }; @@ -320,6 +321,7 @@ const SuitStatusSection = (props, context) => { has_pai, is_ai, link_id, + link_freq, link_call, } = data.suit_status; const { display_time, shift_time, shift_id } = data.module_custom_status; @@ -385,11 +387,14 @@ const SuitStatusSection = (props, context) => {