From 1fecff4ec57b3282ae6f15f7fea5fe59fc04abba Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sat, 23 Apr 2022 16:02:48 +0200 Subject: [PATCH] [MIRROR] Surgery sound fix attempt 2 [MDB IGNORE] (#13024) * Surgery sound fix attempt 2 (#66018) When performing surgery steps that require a saw, using ghetto tools would play the saw.sound despite the tools not having any motors. This pr fixes that and adds some framework for future conversion of preop_sound to list() for fixing future similar cases * Surgery sound fix attempt 2 Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com> --- code/modules/surgery/organic_steps.dm | 9 ++++++++- code/modules/surgery/surgery_step.dm | 10 +++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 116543259ef..6753c5b263c 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -134,7 +134,14 @@ /obj/item/knife/butcher = 25, /obj/item = 20) //20% success (sort of) with any sharp item with a force>=10 time = 54 - preop_sound = 'sound/surgery/saw.ogg' + preop_sound = list( + /obj/item/circular_saw = 'sound/surgery/saw.ogg', + /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg', + /obj/item/fireaxe = 'sound/surgery/scalpel1.ogg', + /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', + /obj/item/knife/butcher = 'sound/surgery/scalpel1.ogg', + /obj/item = 'sound/surgery/scalpel1.ogg', + ) success_sound = 'sound/surgery/organ2.ogg' /datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index afe1cd03d57..2d9637677c6 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -148,7 +148,15 @@ /datum/surgery_step/proc/play_preop_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(!preop_sound) return - playsound(get_turf(target), preop_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1) + var/sound_file_use + if(islist(preop_sound)) + for(var/typepath in preop_sound)//iterate and assign subtype to a list, works best if list is arranged from subtype first and parent last + if(istype(tool, typepath)) + sound_file_use = preop_sound[typepath] + break + else + sound_file_use = preop_sound + playsound(get_turf(target), sound_file_use, 75, TRUE, falloff_exponent = 12, falloff_distance = 1) /datum/surgery_step/proc/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = TRUE) SEND_SIGNAL(user, COMSIG_MOB_SURGERY_STEP_SUCCESS, src, target, target_zone, tool, surgery, default_display_results)