From 2711d6d038a44fde329685db07f16f7387fe30d2 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Sun, 15 Mar 2026 20:34:36 +0100 Subject: [PATCH] Rewrites BCI implanters to use item_interaction (#95377) ## About The Pull Request One more refactor, one less attackby ## Changelog :cl: refactor: Rewrote BCI implanters to use item_interaction /:cl: --- .../wiremod/shell/brain_computer_interface.dm | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm index ab4a7d60fbb..d3d5fc858fe 100644 --- a/code/modules/wiremod/shell/brain_computer_interface.dm +++ b/code/modules/wiremod/shell/brain_computer_interface.dm @@ -332,27 +332,24 @@ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN -/obj/machinery/bci_implanter/attackby(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) - var/obj/item/organ/cyberimp/bci/new_bci = weapon - if (istype(new_bci)) - if (!(locate(/obj/item/integrated_circuit) in new_bci)) - balloon_alert(user, "bci has no circuit!") - return +/obj/machinery/bci_implanter/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if (!istype(tool, /obj/item/organ/cyberimp/bci)) + return NONE - var/obj/item/organ/cyberimp/bci/previous_bci_to_implant = bci_to_implant + var/obj/item/organ/cyberimp/bci/new_bci = tool + if (!(locate(/obj/item/integrated_circuit) in new_bci)) + balloon_alert(user, "bci has no circuit!") + return ITEM_INTERACT_BLOCKING - user.transferItemToLoc(weapon, src) - bci_to_implant = weapon - - if (isnull(previous_bci_to_implant)) - balloon_alert(user, "inserted bci") - else - balloon_alert(user, "swapped bci") - user.put_in_hands(previous_bci_to_implant) - - return - - return ..() + var/obj/item/organ/cyberimp/bci/previous_bci_to_implant = bci_to_implant + user.transferItemToLoc(new_bci, src) + bci_to_implant = new_bci + if (isnull(previous_bci_to_implant)) + balloon_alert(user, "inserted bci") + else + balloon_alert(user, "swapped bci") + user.put_in_hands(previous_bci_to_implant) + return ITEM_INTERACT_SUCCESS /obj/machinery/bci_implanter/attackby_secondary(obj/item/weapon, mob/user, list/modifiers, list/attack_modifiers) if (!occupant && default_deconstruction_screwdriver(user, icon_state, icon_state, weapon))