mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-11 15:14:27 +01:00
Surgery sounds 2: Now with volume mixer! (#26884)
* fuck it * these too * ooops * i did it again * moved some vars around * updates generics * rematch * oh shit i think this needs a break * agh * wall * updates comment * compile after 2 years * this might break things * typo fix * restores surgery sound to default * Misplaced thingy * support for some new ghetto surgery changes * organ2 * Update code/modules/surgery/bones.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Bm0n <92271472+Bm0n@users.noreply.github.com> * Update code/modules/surgery/surgery.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Bm0n <92271472+Bm0n@users.noreply.github.com> * review change --------- Signed-off-by: Bm0n <92271472+Bm0n@users.noreply.github.com> Co-authored-by: Bmon <no@email.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
This commit is contained in:
@@ -87,7 +87,8 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
|
||||
"1016" = 100, // CHANNEL_FIREALARM
|
||||
"1015" = 100, // CHANNEL_ASH_STORM
|
||||
"1014" = 100, // CHANNEL_RADIO_NOISE
|
||||
"1013" = 100 // CHANNEL_BOSS_MUSIC
|
||||
"1013" = 100, // CHANNEL_BOSS_MUSIC
|
||||
"1011" = 100 // CHANNEL_SURGERY_SOUNDS
|
||||
)
|
||||
/// The volume mixer save timer handle. Used to debounce the DB call to save, to avoid spamming.
|
||||
var/volume_mixer_saving = null
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
/datum/surgery_step/extract_bio_chip
|
||||
name = "extract bio-chip"
|
||||
allowed_tools = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 65)
|
||||
preop_sound = 'sound/surgery/hemostat1.ogg'
|
||||
time = 6.4 SECONDS
|
||||
repeatable = TRUE
|
||||
var/obj/item/bio_chip/I = null
|
||||
|
||||
@@ -51,6 +51,13 @@
|
||||
TOOL_BONEGEL = 100,
|
||||
TOOL_SCREWDRIVER = 90
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_BONEGEL = 'sound/surgery/organ1.ogg',
|
||||
/obj/item/screwdriver/power = 'sound/items/drill_hit.ogg',
|
||||
/obj/item/screwdriver = 'sound/items/screwdriver.ogg'
|
||||
)
|
||||
|
||||
can_infect = TRUE
|
||||
blood_level = SURGERY_BLOODSPREAD_HANDS
|
||||
|
||||
@@ -93,6 +100,7 @@
|
||||
TOOL_WRENCH = 90
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/hemostat1.ogg'
|
||||
time = 3.2 SECONDS
|
||||
|
||||
/datum/surgery_step/set_bone/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -164,6 +172,13 @@
|
||||
TOOL_BONEGEL = 100,
|
||||
TOOL_SCREWDRIVER = 90
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_BONEGEL = 'sound/surgery/organ1.ogg',
|
||||
/obj/item/screwdriver/power = 'sound/items/drill_hit.ogg',
|
||||
/obj/item/screwdriver = 'sound/items/screwdriver.ogg'
|
||||
)
|
||||
|
||||
can_infect = TRUE
|
||||
blood_level = SURGERY_BLOODSPREAD_HANDS
|
||||
|
||||
|
||||
@@ -151,6 +151,12 @@
|
||||
/obj/item/stack/rods = 60
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_DRILL = 'sound/items/drill_hit.ogg',
|
||||
/obj/item/screwdriver/power = 'sound/items/drill_hit.ogg',
|
||||
/obj/item/pen = 'sound/surgery/organ2.ogg',
|
||||
/obj/item/stack/rods = 'sound/surgery/organ2.ogg'
|
||||
)
|
||||
time = 5.4 SECONDS
|
||||
|
||||
/datum/surgery_step/cavity/make_space/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -183,6 +189,9 @@
|
||||
TOOL_WELDER = 30
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/cautery1.ogg'
|
||||
success_sound = 'sound/surgery/cautery2.ogg'
|
||||
failure_sound = 'sound/items/welder.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/cavity/close_space/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
/obj/item/kitchen/knife = 65,
|
||||
/obj/item/shard = 45
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/scalpel1.ogg'
|
||||
success_sound = 'sound/surgery/scalpel2.ogg'
|
||||
failure_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 1.6 SECONDS
|
||||
|
||||
/datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
@@ -38,6 +42,8 @@
|
||||
/datum/surgery_step/slime/extract_core
|
||||
name = "extract core"
|
||||
allowed_tools = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 100)
|
||||
preop_sound = 'sound/surgery/organ1.ogg'
|
||||
success_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 1.6 SECONDS
|
||||
|
||||
/datum/surgery_step/slime/extract_core/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
|
||||
@@ -16,6 +16,15 @@
|
||||
TOOL_WIRECUTTER = 35 // Silly goose!
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_SAW = 'sound/surgery/saw.ogg',
|
||||
/obj/item/hatchet = 'sound/surgery/scalpel1.ogg',
|
||||
/obj/item/chainsaw = 'sound/weapons/chainsaw.ogg',
|
||||
/obj/item/butcher_chainsaw = 'sound/weapons/chainsaw.ogg',
|
||||
TOOL_WIRECUTTER = 'sound/surgery/scalpel1.ogg'
|
||||
)
|
||||
|
||||
success_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 5.4 SECONDS
|
||||
|
||||
/datum/surgery_step/open_encased/saw/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -64,6 +73,8 @@
|
||||
TOOL_CROWBAR = 90
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/retractor1.ogg'
|
||||
success_sound = 'sound/surgery/retractor2.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/open_encased/retract/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -113,6 +124,8 @@
|
||||
TOOL_CROWBAR = 90
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/retractor1.ogg'
|
||||
success_sound = 'sound/surgery/retractor2.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/open_encased/close/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -158,6 +171,12 @@
|
||||
TOOL_SCREWDRIVER = 90
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_BONEGEL = 'sound/surgery/organ1.ogg',
|
||||
/obj/item/screwdriver/power = 'sound/items/drill_hit.ogg',
|
||||
/obj/item/screwdriver = 'sound/items/screwdriver.ogg'
|
||||
)
|
||||
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/open_encased/mend/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -23,6 +23,9 @@
|
||||
/obj/item/butcher_chainsaw = 1
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/scalpel1.ogg'
|
||||
success_sound = 'sound/surgery/scalpel2.ogg'
|
||||
failure_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 1.6 SECONDS
|
||||
|
||||
/datum/surgery_step/generic/cut_open/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -67,6 +70,7 @@
|
||||
/obj/item/assembly/mousetrap = 25
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/hemostat1.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
|
||||
@@ -111,6 +115,9 @@
|
||||
/obj/item/kitchen/utensil/fork = 60
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/retractor1.ogg'
|
||||
success_sound = 'sound/surgery/retractor2.ogg'
|
||||
failure_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/generic/retract_skin/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -168,6 +175,9 @@
|
||||
/obj/item/flamethrower = 1 // You make do with what ya got...
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/cautery1.ogg'
|
||||
success_sound = 'sound/surgery/cautery2.ogg'
|
||||
failure_sound = 'sound/items/welder.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/generic/cauterize/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -226,6 +236,15 @@
|
||||
/obj/item/mecha_parts/mecha_equipment/drill = 60,
|
||||
/obj/item/screwdriver = 20
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_DRILL = 'sound/items/drill_hit.ogg',
|
||||
/obj/item/screwdriver/power = 'sound/items/drill_hit.ogg',
|
||||
/obj/item/pickaxe/drill = 'sound/weapons/drill.ogg',
|
||||
/obj/item/mecha_parts/mecha_equipment/drill = 'sound/weapons/drill.ogg',
|
||||
/obj/item/screwdriver = 'sound/items/screwdriver.ogg'
|
||||
)
|
||||
|
||||
time = 3 SECONDS
|
||||
|
||||
/datum/surgery_step/generic/drill/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -264,6 +283,13 @@
|
||||
/obj/item/melee/energy = 75
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_SAW = 'sound/surgery/saw.ogg',
|
||||
/obj/item/hatchet = 'sound/surgery/scalpel1.ogg',
|
||||
/obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg'
|
||||
)
|
||||
|
||||
success_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 10 SECONDS
|
||||
|
||||
/datum/surgery_step/generic/amputate/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -182,6 +182,8 @@
|
||||
/obj/item/stack/nanopaste = 100
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/organ1.ogg'
|
||||
|
||||
/datum/surgery_step/internal/manipulate_organs/mend/proc/get_tool_name(obj/item/tool)
|
||||
var/tool_name = "[tool]"
|
||||
if(istype(tool, /obj/item/stack/medical/bruise_pack))
|
||||
@@ -296,6 +298,8 @@
|
||||
/obj/item/kitchen/utensil/fork = 70
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/organ1.ogg'
|
||||
success_sound = 'sound/surgery/organ2.ogg'
|
||||
var/obj/item/organ/internal/extracting = null
|
||||
|
||||
/datum/surgery_step/internal/manipulate_organs/extract/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -390,6 +394,9 @@
|
||||
/obj/item/food/organ = 0 // there for the flavor text
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/organ2.ogg'
|
||||
success_sound = 'sound/surgery/organ1.ogg'
|
||||
|
||||
/datum/surgery_step/internal/manipulate_organs/implant/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(istype(tool, /obj/item/food/organ))
|
||||
to_chat(user, "<span class='warning'>[tool] was bitten by someone! It's too damaged to use!</span>")
|
||||
@@ -643,6 +650,9 @@
|
||||
TOOL_CROWBAR = 90
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/retractor1.ogg'
|
||||
success_sound = 'sound/surgery/retractor2.ogg'
|
||||
|
||||
/datum/surgery_step/internal/manipulate_organs/finish/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -707,6 +717,15 @@
|
||||
TOOL_WIRECUTTER = 35
|
||||
)
|
||||
|
||||
preop_sound = list(
|
||||
TOOL_SAW = 'sound/surgery/saw.ogg',
|
||||
/obj/item/hatchet = 'sound/surgery/scalpel1.ogg',
|
||||
/obj/item/chainsaw = 'sound/weapons/chainsaw.ogg',
|
||||
/obj/item/butcher_chainsaw = 'sound/weapons/chainsaw.ogg',
|
||||
TOOL_WIRECUTTER = 'sound/surgery/scalpel1.ogg'
|
||||
)
|
||||
|
||||
success_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 5.4 SECONDS
|
||||
|
||||
|
||||
@@ -750,6 +769,9 @@
|
||||
/obj/item/butcher_chainsaw = 1
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/scalpel1.ogg'
|
||||
success_sound = 'sound/surgery/scalpel2.ogg'
|
||||
failure_sound = 'sound/surgery/organ2.ogg'
|
||||
time = 1.6 SECONDS
|
||||
|
||||
/datum/surgery_step/cut_carapace/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -787,6 +809,8 @@
|
||||
/obj/item/kitchen/utensil/fork = 60
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/retractor1.ogg'
|
||||
success_sound = 'sound/surgery/retractor2.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/retract_carapace/begin_step(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -838,6 +862,9 @@
|
||||
/obj/item/flamethrower = 1
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/cautery1.ogg'
|
||||
success_sound = 'sound/surgery/cautery2.ogg'
|
||||
failure_sound = 'sound/items/welder.ogg'
|
||||
time = 2.4 SECONDS
|
||||
|
||||
/datum/surgery_step/generic/seal_carapace/proc/zone_name(target_zone)
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
can_infect = TRUE
|
||||
blood_level = SURGERY_BLOODSPREAD_HANDS
|
||||
|
||||
preop_sound = 'sound/surgery/organ1.ogg'
|
||||
time = 3.2 SECONDS
|
||||
|
||||
/datum/surgery_step/fix_vein/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -133,6 +134,7 @@
|
||||
can_infect = TRUE
|
||||
blood_level = SURGERY_BLOODSPREAD_HANDS
|
||||
|
||||
preop_sound = 'sound/surgery/organ1.ogg'
|
||||
time = 3.2 SECONDS
|
||||
|
||||
/datum/surgery_step/treat_burns/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -190,6 +192,9 @@
|
||||
/obj/item/shard = 60
|
||||
)
|
||||
|
||||
preop_sound = 'sound/surgery/scalpel1.ogg'
|
||||
success_sound = 'sound/surgery/retractor2.ogg'
|
||||
failure_sound = 'sound/surgery/organ1.ogg'
|
||||
can_infect = TRUE
|
||||
blood_level = SURGERY_BLOODSPREAD_HANDS
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
allowed_tools = list(TOOL_SCALPEL = 100, /obj/item/kitchen/knife = 50, /obj/item/wirecutters = 35)
|
||||
time = 6.4 SECONDS
|
||||
|
||||
preop_sound = 'sound/surgery/scalpel1.ogg'
|
||||
success_sound = 'sound/surgery/scalpel2.ogg'
|
||||
failure_sound = 'sound/surgery/organ2.ogg'
|
||||
|
||||
/datum/surgery_step/reshape_face/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message(
|
||||
"[user] begins to alter [target]'s appearance.",
|
||||
|
||||
@@ -197,6 +197,12 @@
|
||||
var/silicons_ignore_prob = FALSE
|
||||
/// How many times this step has been automatically repeated.
|
||||
var/times_repeated = 0
|
||||
/// Sound played when the step is started. Lists or single value can be used for this var as well as tool defines
|
||||
var/preop_sound
|
||||
/// Sound played if the step succeeded. Single value only
|
||||
var/success_sound
|
||||
/// Sound played if the step fails. Single value only
|
||||
var/failure_sound
|
||||
|
||||
// evil infection stuff that will make everyone hate me
|
||||
|
||||
@@ -331,6 +337,8 @@
|
||||
surgery.step_in_progress = FALSE
|
||||
return SURGERY_INITIATE_SUCCESS
|
||||
|
||||
play_preop_sound(user, target, target_zone, tool, surgery)
|
||||
|
||||
if(tool)
|
||||
speed_mod = tool.toolspeed
|
||||
|
||||
@@ -386,8 +394,10 @@
|
||||
|
||||
surgery.step_in_progress = FALSE
|
||||
if(advance)
|
||||
play_success_sound(user, target, target_zone, tool, surgery)
|
||||
return SURGERY_INITIATE_SUCCESS
|
||||
else
|
||||
play_failure_sound(user, target, target_zone, tool, surgery)
|
||||
return SURGERY_INITIATE_FAILURE
|
||||
|
||||
/**
|
||||
@@ -553,3 +563,26 @@
|
||||
for(var/reagent in chems_needed)
|
||||
if(target.reagents.has_reagent(reagent))
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/proc/play_preop_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(!preop_sound || (islist(preop_sound) && !length(preop_sound)) || ismachineperson(target))
|
||||
return
|
||||
var/sound_file_use
|
||||
if(islist(preop_sound))
|
||||
for(var/typepath in preop_sound)
|
||||
if((ispath(typepath) && istype(tool, typepath)) || ((typepath in GLOB.surgery_tool_behaviors) && istype(tool) && tool.tool_behaviour == 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, channel = CHANNEL_SURGERY_SOUNDS)
|
||||
|
||||
/datum/surgery_step/proc/play_success_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(!success_sound || ismachineperson(target))
|
||||
return
|
||||
playsound(get_turf(target), success_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1, channel = CHANNEL_SURGERY_SOUNDS)
|
||||
|
||||
/datum/surgery_step/proc/play_failure_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(!failure_sound || ismachineperson(target))
|
||||
return
|
||||
playsound(get_turf(target), failure_sound, 75, TRUE, falloff_exponent = 12, falloff_distance = 1, channel = CHANNEL_SURGERY_SOUNDS)
|
||||
|
||||
Reference in New Issue
Block a user