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:
Bm0n
2024-10-06 05:40:33 -04:00
committed by GitHub
parent 413ddc8b73
commit 1b25a5b021
24 changed files with 155 additions and 2 deletions
+2 -1
View File
@@ -12,13 +12,14 @@
#define CHANNEL_RADIO_NOISE 1014 // radio headset noise
#define CHANNEL_BOSS_MUSIC 1013
#define CHANNEL_GENERAL 1012
#define CHANNEL_SURGERY_SOUNDS 1011
#define USER_VOLUME(M, C) M?.client?.prefs.get_channel_volume(C)
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
#define CHANNEL_HIGHEST_AVAILABLE 1011
#define CHANNEL_HIGHEST_AVAILABLE 1010
#define MAX_INSTRUMENT_CHANNELS (128 * 6)
+2
View File
@@ -1971,6 +1971,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
return "Radio Noise"
if(CHANNEL_BOSS_MUSIC)
return "Boss Music"
if(CHANNEL_SURGERY_SOUNDS)
return "Surgery Sounds"
/proc/slot_bitfield_to_slot(input_slot_flags) // Kill off this garbage ASAP; slot flags and clothing flags should be IDENTICAL. GOSH DARN IT. Doesn't work with ears or pockets, either.
switch(input_slot_flags)
@@ -53,6 +53,8 @@
/datum/surgery_step/internal/extract_organ
name = "remove heart"
accept_hand = 1
preop_sound = 'sound/surgery/organ1.ogg'
success_sound = 'sound/surgery/organ2.ogg'
time = 32
var/obj/item/organ/internal/IC = null
@@ -86,6 +88,8 @@
/datum/surgery_step/internal/gland_insert
name = "insert gland"
allowed_tools = list(/obj/item/organ/internal/heart/gland = 100)
preop_sound = 'sound/surgery/organ2.ogg'
success_sound = 'sound/surgery/organ1.ogg'
time = 32
/datum/surgery_step/internal/gland_insert/begin_step(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -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
+1
View File
@@ -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
+15
View File
@@ -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
+9
View File
@@ -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)
+6
View File
@@ -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)
+19
View File
@@ -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)
+26
View File
@@ -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)
+27
View File
@@ -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)
+5
View File
@@ -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
+4
View File
@@ -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.",
+33
View File
@@ -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)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.