From f75f77c0d1a295233fbe3e67c6423be5fa66d16b Mon Sep 17 00:00:00 2001 From: Geeves Date: Mon, 19 Dec 2022 16:40:45 +0200 Subject: [PATCH] Integrated Circuit Fixes (#15377) --- code/_onclick/hud/action.dm | 10 ++++++++++ .../integrated_electronics/core/assemblies/clothing.dm | 3 ++- code/modules/integrated_electronics/core/helpers.dm | 10 +++++----- code/modules/integrated_electronics/subtypes/input.dm | 2 +- html/changelogs/geeves-headwear_button_fix.yml | 7 +++++++ 5 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 html/changelogs/geeves-headwear_button_fix.yml diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm index f9d7c855619..9668ad2a664 100644 --- a/code/_onclick/hud/action.dm +++ b/code/_onclick/hud/action.dm @@ -242,6 +242,16 @@ check_flags = AB_CHECK_ALIVE|AB_CHECK_INSIDE button_icon_state = "rev_eyes" +/datum/action/item_action/integrated_circuit + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_ALIVE|AB_CHECK_INSIDE + +/datum/action/item_action/integrated_circuit/Trigger() + if(!Checks()) + return + var/obj/item/clothing/target_clothing = target + to_chat(usr, SPAN_NOTICE("You press the button on the exterior of \the [target_clothing].")) + target_clothing.action_circuit.activate_pin(1) + #undef AB_WEST_OFFSET #undef AB_NORTH_OFFSET #undef AB_MAX_COLUMNS diff --git a/code/modules/integrated_electronics/core/assemblies/clothing.dm b/code/modules/integrated_electronics/core/assemblies/clothing.dm index 8d3281d5e9f..977f205c0c0 100644 --- a/code/modules/integrated_electronics/core/assemblies/clothing.dm +++ b/code/modules/integrated_electronics/core/assemblies/clothing.dm @@ -76,7 +76,8 @@ // Clothing assemblies can be triggered by clicking on the HUD. This allows that to occur. action_circuit = new(src.IC) IC.force_add_circuit(action_circuit) - action_button_name = "Activate [name]" + default_action_type = /datum/action/item_action/integrated_circuit + action_button_name = "Activate [capitalize_first_letters(name)]" /obj/item/clothing/Destroy() if(IC) diff --git a/code/modules/integrated_electronics/core/helpers.dm b/code/modules/integrated_electronics/core/helpers.dm index eedeaf5443d..9822d5e88e0 100644 --- a/code/modules/integrated_electronics/core/helpers.dm +++ b/code/modules/integrated_electronics/core/helpers.dm @@ -27,9 +27,9 @@ CRASH("Invalid pin ref.") return pin.write_data_to_pin(new_data) -/obj/item/integrated_circuit/proc/get_pin_data(pin_type, pin_number) +/obj/item/integrated_circuit/proc/get_pin_data(pin_type, pin_number, var/resolve_weakrefs = TRUE) var/datum/integrated_io/pin = get_pin_ref(pin_type, pin_number) - return pin.get_data() + return pin.get_data(resolve_weakrefs) /obj/item/integrated_circuit/proc/get_pin_data_as_type(pin_type, pin_number, as_type) var/datum/integrated_io/pin = get_pin_ref(pin_type, pin_number) @@ -39,8 +39,8 @@ var/datum/integrated_io/activate/A = activators[pin_number] A.push_data(pin_number) -/datum/integrated_io/proc/get_data() - if(isweakref(data)) +/datum/integrated_io/proc/get_data(var/resolve_weakrefs = TRUE) + if(resolve_weakrefs && isweakref(data)) return data.resolve() return data @@ -80,4 +80,4 @@ var/r for(var/i = 1 to length(string)) r += ascii2text(text2ascii(string,i) ^ text2ascii(key,(i-1)%length(string)+1)) - return r \ No newline at end of file + return r diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index ee7a9c8f736..72ce882f053 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -296,7 +296,7 @@ var/turf/T = get_turf(src) var/list/nearby_things = view(radius, T) var/list/valid_things = list() - var/I = get_pin_data(IC_INPUT, 1) + var/I = get_pin_data(IC_INPUT, 1, FALSE) if(isweakref(I)) var/datum/weakref/WR = I var/atom/A = WR.resolve() diff --git a/html/changelogs/geeves-headwear_button_fix.yml b/html/changelogs/geeves-headwear_button_fix.yml new file mode 100644 index 00000000000..8e662f4c1be --- /dev/null +++ b/html/changelogs/geeves-headwear_button_fix.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Clicking the HUD icon of integrated circuit clothing now works correctly." + - bugfix: "Integrated Circuit advanced locator refs now work correctly again."