From cf9a082ee7306850ef484b8f2b22de74a65dec13 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 29 Sep 2023 02:03:34 +0200 Subject: [PATCH] [MIRROR] Freedom Implant Feedback and Facelift [MDB IGNORE] (#23992) * Freedom Implant Feedback and Facelift (#78486) ## About The Pull Request This aims to make the freedom implant a bit less clunky, and a bit more responsive. No fundamental changes or buffs or anything, just some more feedback and player-facing clarity on what this thing actually does. Changes include: - Freedom implants can no longer be implanted into non-carbon (uncuffable) mobs. - The freedom implant will no longer expend charges when used without active restraints. - The to_chat has been replaced with a balloon alert (displayed to the user only, of course). - The implant throws a balloon alert shortly after it runs out of charges, notifying the user that it has degraded and is gone. - The implant pad readout has been changed to provide a bit more useful information, and provide a bit less incorrect information. - No, seriously, what did _"Analyzes certain shadow signals in the nervous system"_ even mean? Shadowlings?? - The uplink listing now lists the number of uses, and explains that the implant is useful for more than just handcuffs. ## Why It's Good For The Game I used this thing once on a nukie round and thought "oh god this needs a facelift immediately". Players should be able to know the basic functions of their toys without having to consult the wiki. ## Changelog :cl: Rhials qol: The freedom implant has received minor feedback and other minor usage improvements. /:cl: * Freedom Implant Feedback and Facelift --------- Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> --- code/__DEFINES/antagonists.dm | 2 + .../objects/items/implants/implant_freedom.dm | 50 +++++++++++-------- code/modules/uplink/uplink_items/implant.dm | 7 ++- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 125870797ca..123c60abad2 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -365,3 +365,5 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list( #define BATON_CUFF 2 #define BATON_PROBE 3 #define BATON_MODES 4 + +#define FREEDOM_IMPLANT_CHARGES 4 diff --git a/code/game/objects/items/implants/implant_freedom.dm b/code/game/objects/items/implants/implant_freedom.dm index d010b57e506..1fa61c27510 100644 --- a/code/game/objects/items/implants/implant_freedom.dm +++ b/code/game/objects/items/implants/implant_freedom.dm @@ -3,37 +3,45 @@ desc = "Use this to escape from those evil Red Shirts." icon_state = "freedom" implant_color = "r" - uses = 4 + uses = FREEDOM_IMPLANT_CHARGES +/obj/item/implant/freedom/implant(mob/living/target, mob/user, silent, force) + . = ..() + if(!.) + return FALSE + if(!iscarbon(target)) //This is pretty much useless for anyone else since they can't be cuffed + balloon_alert(user, "that would be a waste!") + return FALSE + return TRUE /obj/item/implant/freedom/activate() . = ..() - uses-- - to_chat(imp_in, span_hear("You feel a faint click.")) - if(iscarbon(imp_in)) - var/mob/living/carbon/C_imp_in = imp_in - C_imp_in.uncuff() - if(!uses) - qdel(src) + var/mob/living/carbon/carbon_imp_in = imp_in + if(!carbon_imp_in.handcuffed && !carbon_imp_in.legcuffed) + balloon_alert(carbon_imp_in, "no restraints!") + return + uses-- + + carbon_imp_in.uncuff() + if(!uses) + addtimer(CALLBACK(carbon_imp_in, TYPE_PROC_REF(/atom, balloon_alert), carbon_imp_in, "implant degraded!"), 1 SECONDS) + qdel(src) /obj/item/implant/freedom/get_data() var/dat = {" -Implant Specifications:
-Name: Freedom Beacon
-Life: optimum 5 uses
-Important Notes: Illegal
-
-Implant Details:
-Function: Transmits a specialized cluster of signals to override handcuff locking -mechanisms
-Special Features:
-Neuro-Scan- Analyzes certain shadow signals in the nervous system
-
-No Implant Specifics"} + Implant Specifications:
+ Name: Freedom Beacon
+ Life: Optimum [initial(uses)] uses
+ Important Notes: Illegal
+
+ Implant Details:
+ Function: Transmits a specialized cluster of signals to override handcuff locking + mechanisms. These signals will release any bindings on both the arms and legs.
+ Disclaimer: Heavy-duty restraints such as straightjackets are deemed "too complex" to release from. + "} return dat - /obj/item/implanter/freedom name = "implanter" // Skyrat edit , was implanter (freedom) imp_type = /obj/item/implant/freedom diff --git a/code/modules/uplink/uplink_items/implant.dm b/code/modules/uplink/uplink_items/implant.dm index 34fc9eedb0f..87c9fd6c96c 100644 --- a/code/modules/uplink/uplink_items/implant.dm +++ b/code/modules/uplink/uplink_items/implant.dm @@ -9,11 +9,14 @@ /datum/uplink_item/implants/freedom name = "Freedom Implant" - desc = "An implant injected into the body and later activated at the user's will. It will attempt to free the \ - user from common restraints such as handcuffs." + desc = "Can be activated to release common restraints such as handcuffs, legcuffs, and even bolas tethered around the legs." item = /obj/item/storage/box/syndie_kit/imp_freedom cost = 5 +/datum/uplink_item/implants/freedom/New() + . = ..() + desc += " Implant has enough energy for [FREEDOM_IMPLANT_CHARGES] uses before it becomes inert and harmlessly self-destructs." + /datum/uplink_item/implants/radio name = "Internal Syndicate Radio Implant" desc = "An implant injected into the body, allowing the use of an internal Syndicate radio. \