From 11ed7844ebea648f021cb59f823df0d3bccaa921 Mon Sep 17 00:00:00 2001 From: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Sat, 21 Mar 2026 07:51:09 -0500 Subject: [PATCH] Generic surgical operations now have unique radial icons (#95470) --- .../operations/operation_amputation.dm | 2 +- .../surgery/operations/operation_generic.dm | 20 +++++++++--------- .../operations/operation_generic_basic.dm | 4 ++-- .../operations/operation_generic_mechanic.dm | 12 +++++------ .../operations/operation_organ_manip.dm | 4 ++-- icons/hud/surgery_radial.dmi | Bin 0 -> 3119 bytes 6 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 icons/hud/surgery_radial.dmi diff --git a/code/modules/surgery/operations/operation_amputation.dm b/code/modules/surgery/operations/operation_amputation.dm index 100f9f42862..9a0236ea64e 100644 --- a/code/modules/surgery/operations/operation_amputation.dm +++ b/code/modules/surgery/operations/operation_amputation.dm @@ -27,7 +27,7 @@ return TOOL_SAW /datum/surgery_operation/limb/amputate/get_default_radial_image() - return image(/obj/item/shears) + return image('icons/hud/surgery_radial.dmi', "amputate") /datum/surgery_operation/limb/amputate/state_check(obj/item/bodypart/limb) if(limb.body_zone == BODY_ZONE_CHEST) diff --git a/code/modules/surgery/operations/operation_generic.dm b/code/modules/surgery/operations/operation_generic.dm index fac2fcdc051..545efa20946 100644 --- a/code/modules/surgery/operations/operation_generic.dm +++ b/code/modules/surgery/operations/operation_generic.dm @@ -29,7 +29,7 @@ return "Any sharp edged item" /datum/surgery_operation/limb/incise_skin/get_default_radial_image() - return image(/obj/item/scalpel) + return image('icons/hud/surgery_radial.dmi', "make_incision") /datum/surgery_operation/limb/incise_skin/tool_check(obj/item/tool) // Require edged sharpness OR a tool behavior match @@ -119,7 +119,7 @@ allow_stumps = TRUE /datum/surgery_operation/limb/retract_skin/get_default_radial_image() - return image(/obj/item/retractor) + return image('icons/hud/surgery_radial.dmi', "retract_skin") /datum/surgery_operation/limb/retract_skin/on_preop(obj/item/bodypart/limb, mob/living/surgeon, obj/item/tool, list/operation_args) display_results( @@ -173,7 +173,7 @@ return "Any heat source" /datum/surgery_operation/limb/close_skin/get_default_radial_image() - return image(/obj/item/cautery) + return image('icons/hud/surgery_radial.dmi', "mend_incision") /datum/surgery_operation/limb/close_skin/all_required_strings() return ..() + list("the limb must have skin") @@ -231,7 +231,7 @@ allow_stumps = TRUE /datum/surgery_operation/limb/clamp_bleeders/get_default_radial_image() - return image(/obj/item/hemostat) + return image('icons/hud/surgery_radial.dmi', "clamp_bleeders") /datum/surgery_operation/limb/clamp_bleeders/on_preop(obj/item/bodypart/limb, mob/living/surgeon, obj/item/tool, list/operation_args) display_results( @@ -275,7 +275,7 @@ allow_stumps = TRUE /datum/surgery_operation/limb/unclamp_bleeders/get_default_radial_image() - return image(/obj/item/hemostat) + return image('icons/hud/surgery_radial.dmi', "unclamp_bleeders") /datum/surgery_operation/limb/unclamp_bleeders/all_required_strings() return ..() + list("the limb must have blood vessels") @@ -336,7 +336,7 @@ return "Any sharp edged item with decent force" /datum/surgery_operation/limb/saw_bones/get_default_radial_image() - return image(/obj/item/circular_saw) + return image('icons/hud/surgery_radial.dmi', "saw_bones") /datum/surgery_operation/limb/saw_bones/tool_check(obj/item/tool) // Require edged sharpness and sufficient force OR a tool behavior match @@ -390,7 +390,7 @@ allow_stumps = TRUE /datum/surgery_operation/limb/fix_bones/get_default_radial_image() - return image(/obj/item/stack/medical/bone_gel) + return image('icons/hud/surgery_radial.dmi', "fix_bones") /datum/surgery_operation/limb/fix_bones/all_required_strings() return ..() + list("the limb must have bones") @@ -438,7 +438,7 @@ return "Any sharp pointed item with decent force" /datum/surgery_operation/limb/drill_bones/get_default_radial_image() - return image(/obj/item/surgicaldrill) + return image('icons/hud/surgery_radial.dmi', "drill_bones") /datum/surgery_operation/limb/drill_bones/tool_check(obj/item/tool) // Require pointy sharpness and sufficient force OR a tool behavior match @@ -467,7 +467,7 @@ /datum/surgery_operation/limb/incise_organs name = "incise organs" - desc = "Make an incision in patient's internal organ tissue to allow for manipulation or repair. \ + desc = "Make an incision in the patient's internal organ tissue to allow for manipulation or repair. \ Causes \"organs cut\" surgical state." required_bodytype = ~BODYTYPE_ROBOTIC operation_flags = OPERATION_NO_PATIENT_REQUIRED @@ -491,7 +491,7 @@ return "Any sharp edged item" /datum/surgery_operation/limb/incise_organs/get_default_radial_image() - return image(/obj/item/scalpel) + return image('icons/hud/surgery_radial.dmi', "incise_organs") /datum/surgery_operation/limb/incise_organs/tool_check(obj/item/tool) // Require edged sharpness OR a tool behavior match. Also saws are a no-go, you'll rip up the organs! diff --git a/code/modules/surgery/operations/operation_generic_basic.dm b/code/modules/surgery/operations/operation_generic_basic.dm index 52dcc9db771..c3f522f9224 100644 --- a/code/modules/surgery/operations/operation_generic_basic.dm +++ b/code/modules/surgery/operations/operation_generic_basic.dm @@ -28,7 +28,7 @@ return ..() + list("The patient must not have complex anatomy") /datum/surgery_operation/basic/incise_skin/get_default_radial_image() - return image(/obj/item/scalpel) + return image('icons/hud/surgery_radial.dmi', "make_incision") /datum/surgery_operation/basic/incise_skin/state_check(mob/living/patient) return !patient.has_limbs // Only for limbless mobs @@ -91,7 +91,7 @@ return ..() + list("The patient must not have complex anatomy") /datum/surgery_operation/basic/saw_bone/get_default_radial_image() - return image(/obj/item/circular_saw) + return image('icons/hud/surgery_radial.dmi', "mend_incision") /datum/surgery_operation/basic/saw_bone/state_check(mob/living/patient) return !patient.has_limbs // Only for limbless mobs diff --git a/code/modules/surgery/operations/operation_generic_mechanic.dm b/code/modules/surgery/operations/operation_generic_mechanic.dm index 54a97c7348c..6238598129e 100644 --- a/code/modules/surgery/operations/operation_generic_mechanic.dm +++ b/code/modules/surgery/operations/operation_generic_mechanic.dm @@ -22,7 +22,7 @@ return "Any sharp item" /datum/surgery_operation/limb/mechanical_incision/get_default_radial_image() - return image(/obj/item/screwdriver) + return image('icons/hud/surgery_radial.dmi', "unscrew_shell") /datum/surgery_operation/limb/mechanical_incision/tool_check(obj/item/tool) // Require any sharpness OR a tool behavior match @@ -60,7 +60,7 @@ allow_stumps = TRUE /datum/surgery_operation/limb/mechanical_open/get_default_radial_image() - return image('icons/hud/screen_gen.dmi', "arrow_large_still") + return image('icons/hud/surgery_radial.dmi', "open_hatch") /datum/surgery_operation/limb/mechanical_open/on_preop(obj/item/bodypart/limb, mob/living/surgeon, obj/item/tool, list/operation_args) display_results( @@ -101,7 +101,7 @@ return "Any sharp item" /datum/surgery_operation/limb/mechanical_close/get_default_radial_image() - return image(/obj/item/screwdriver) + return image('icons/hud/surgery_radial.dmi', "screw_shell") /datum/surgery_operation/limb/mechanical_close/tool_check(obj/item/tool) // Require any sharpness OR a tool behavior match @@ -143,7 +143,7 @@ allow_stumps = TRUE /datum/surgery_operation/limb/prepare_electronics/get_default_radial_image() - return image(/obj/item/multitool) + return image('icons/hud/surgery_radial.dmi', "prepare_electronics") /datum/surgery_operation/limb/prepare_electronics/on_preop(obj/item/bodypart/limb, mob/living/surgeon, obj/item/tool, list/operation_args) display_results( @@ -177,7 +177,7 @@ allow_stumps = TRUE /datum/surgery_operation/limb/mechanic_unwrench/get_default_radial_image() - return image(/obj/item/wrench) + return image('icons/hud/surgery_radial.dmi', "unwrench_endoskeleton") /datum/surgery_operation/limb/mechanic_unwrench/on_preop(obj/item/bodypart/limb, mob/living/surgeon, obj/item/tool, list/operation_args) display_results( @@ -216,7 +216,7 @@ return ..() + list("the limb must have bones") /datum/surgery_operation/limb/mechanic_wrench/get_default_radial_image() - return image(/obj/item/wrench) + return image('icons/hud/surgery_radial.dmi', "wrench_endoskeleton") /datum/surgery_operation/limb/mechanic_wrench/on_preop(obj/item/bodypart/limb, mob/living/surgeon, obj/item/tool, list/operation_args) display_results( diff --git a/code/modules/surgery/operations/operation_organ_manip.dm b/code/modules/surgery/operations/operation_organ_manip.dm index fb2879b714d..de04ddfd893 100644 --- a/code/modules/surgery/operations/operation_organ_manip.dm +++ b/code/modules/surgery/operations/operation_organ_manip.dm @@ -106,7 +106,7 @@ var/datum/radial_menu_choice/option = LAZYACCESS(cached_organ_manipulation_options, "[organ.type]_remove") if(!option) option = new() - option.image = get_generic_limb_radial_image(limb.body_zone) + option.image = image('icons/hud/surgery_radial.dmi', "base") option.image.overlays += add_radial_overlays(organ.type) option.name = "remove [initial(organ.name)]" option.info = "Remove [initial(organ.name)] from the [limb.owner ? "patient" : "limb"]." @@ -120,7 +120,7 @@ var/datum/radial_menu_choice/option = LAZYACCESS(cached_organ_manipulation_options, "[organ.type]_insert") if(!option) option = new() - option.image = get_generic_limb_radial_image(limb.body_zone) + option.image = image('icons/hud/surgery_radial.dmi', "base") option.image.overlays += add_radial_overlays(list(image('icons/hud/screen_gen.dmi', "arrow_large_still"), organ.type)) option.name = "insert [initial(organ.name)]" option.info = "insert [initial(organ.name)] into the [limb.owner ? "patient" : "limb"]." diff --git a/icons/hud/surgery_radial.dmi b/icons/hud/surgery_radial.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8aa49694e065c71d72d6aafbc3262efe24ab7c36 GIT binary patch literal 3119 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 v!@bG0z%Bw7+3}?Xm?e4rU2(Q0