From 3fbe896673f4082571e18bd4b6d58279e444ae7b Mon Sep 17 00:00:00 2001 From: Casper3667 <8396443+Casper3667@users.noreply.github.com> Date: Sat, 21 Feb 2026 02:44:05 +0100 Subject: [PATCH] Modifies Kathira's custom leg aug (#21870) This adds a signal that can be used to stop bone repair surgery for any cause that might prevent such. In this particular case, I used it with Kathira's leg aug to fit with it being a support for her leg, which can't heal properly otherwise. This is primarily for when she ends up in surgery and can't inform the doctors they shouldn't be trying to begin with. --- .../signals/signals_mob/signals_mob_main.dm | 3 ++ code/modules/customitems/item_defines.dm | 32 +++++++++++++++++++ code/modules/surgery/surgery.dm | 7 ++++ html/changelogs/LegBreaker.yml | 6 ++++ 4 files changed, 48 insertions(+) create mode 100644 html/changelogs/LegBreaker.yml diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm index d8fd784b007..e21789fccbf 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm @@ -45,3 +45,6 @@ /// From /obj/item/organ/external/take_damage. Updates the limb's colour matrix. Very laggy, so we do it on reaction to stuff. #define COMSIG_UPDATE_LIMB_IMAGE "update_limb_image" + +/// For when bone is fixed with surgery +#define COMSIG_BEGIN_SURGERY "begin_surgery" diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 61d487b0c13..90dea2dd4bd 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -2087,6 +2087,38 @@ All custom items with worn sprites must follow the contained sprite system: http else collapse() +/obj/item/organ/internal/augment/fluff/kath_legbrace/Initialize() + . = ..() + if(!owner) + return + RegisterSignal(owner, COMSIG_BEGIN_SURGERY, PROC_REF(negate_healing), override = TRUE) + var/obj/item/organ/external/parent = owner.get_organ(parent_organ) + parent.fracture(TRUE) + +/obj/item/organ/internal/augment/fluff/kath_legbrace/replaced() + . = ..() + if(!owner) + return + RegisterSignal(owner, COMSIG_BEGIN_SURGERY, PROC_REF(negate_healing), override = TRUE) + var/obj/item/organ/external/parent = owner.get_organ(parent_organ) + parent.fracture(TRUE) + +/obj/item/organ/internal/augment/fluff/kath_legbrace/removed() + if(!owner) + return ..() + UnregisterSignal(owner, COMSIG_BEGIN_SURGERY) + return ..() + +/obj/item/organ/internal/augment/fluff/kath_legbrace/proc/negate_healing(var/owner, var/canceled, var/obj/item/organ/external/affected, var/mob/living/user, var/singleton/surgery_step/surgery) + SIGNAL_HANDLER + if(!istype(surgery, /singleton/surgery_step/glue_bone) && !istype(surgery, /singleton/surgery_step/set_bone)) + return + if(affected.limb_name != parent_organ) + return + *canceled = TRUE + user.visible_message(SPAN_WARNING("[user] seems to be unable to set the bone in [owner]'s [affected.name]."), \ + SPAN_WARNING("The bone in [owner]'s [affected.name] appears to be impossible to set correctly!")) + /obj/item/organ/internal/augment/fluff/kath_legbrace/proc/collapse(var/prob_chance = 20, var/weaken_strength = 2, var/pain_strength = 40) if(prob(prob_chance)) var/obj/item/organ/external/E = owner.organs_by_name[parent_organ] diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 715e2196301..e485b741ab3 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -53,6 +53,13 @@ /singleton/surgery_step/proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) if(!ishuman(target)) return FALSE + + var/obj/item/organ/external/affected = target.get_organ(target_zone) + var/canceled = FALSE + SEND_SIGNAL(target, COMSIG_BEGIN_SURGERY, &canceled, affected, user, src) + if(canceled) + return FALSE + return TRUE /// Does stuff to begin the step, usually just printing messages. Moved germs transfering and bloodying here too diff --git a/html/changelogs/LegBreaker.yml b/html/changelogs/LegBreaker.yml new file mode 100644 index 00000000000..c6a668f005a --- /dev/null +++ b/html/changelogs/LegBreaker.yml @@ -0,0 +1,6 @@ +author: TheGreyWolf + +delete-after: True + +changes: + - rscadd: "A signal was added to bone fixing surgery, for potential future uses where a bone repair surgery might not work."