Reorganizes the sound folder (#86726)

## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
This commit is contained in:
grungussuss
2024-09-23 22:24:50 -07:00
committed by GitHub
parent 8c494a4736
commit 58501dce77
3639 changed files with 5089 additions and 5093 deletions
+2 -2
View File
@@ -71,7 +71,7 @@
/datum/component/chuunibyou/proc/on_spell_projectile(mob/living/source, datum/action/cooldown/spell/spell, atom/cast_on, obj/projectile/to_fire)
SIGNAL_HANDLER
playsound(to_fire,'sound/magic/staff_change.ogg', 75, TRUE)
playsound(to_fire,'sound/effects/magic/staff_change.ogg', 75, TRUE)
to_fire.color = "#f825f8"
to_fire.name = "chuuni-[to_fire.name]"
to_fire.set_light(2, 2, LIGHT_COLOR_PINK, l_on = TRUE)
@@ -101,7 +101,7 @@
COOLDOWN_START(src, heal_cooldown, CHUUNIBYOU_COOLDOWN_TIME)
source.heal_overall_damage(heal_amount)
playsound(source, 'sound/magic/staff_healing.ogg', 30)
playsound(source, 'sound/effects/magic/staff_healing.ogg', 30)
to_chat(source, span_danger("You feel slightly healed by your chuuni powers."))
/datum/component/chuunibyou/no_healing
+1 -1
View File
@@ -16,7 +16,7 @@
var/is_charging = FALSE
COOLDOWN_DECLARE(charge_sound_cooldown)
/datum/component/crank_recharge/Initialize(charging_cell, spin_to_win = FALSE, charge_amount = 500, cooldown_time = 2 SECONDS, charge_sound = 'sound/weapons/laser_crank.ogg', charge_sound_cooldown_time = 1.8 SECONDS)
/datum/component/crank_recharge/Initialize(charging_cell, spin_to_win = FALSE, charge_amount = 500, cooldown_time = 2 SECONDS, charge_sound = 'sound/items/weapons/laser_crank.ogg', charge_sound_cooldown_time = 1.8 SECONDS)
. = ..()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
+2 -2
View File
@@ -22,7 +22,7 @@
COOLDOWN_DECLARE(stun_cooldown)
/datum/component/stun_n_cuff/Initialize(list/blacklist_mobs = list(),
stun_sound = 'sound/weapons/egloves.ogg',
stun_sound = 'sound/items/weapons/egloves.ogg',
stun_timer = 8 SECONDS,
handcuff_timer = 4 SECONDS,
stun_cooldown_timer = 10 SECONDS,
@@ -75,7 +75,7 @@
living_parent.balloon_alert(human_target, "already cuffed!")
return
playsound(parent, 'sound/weapons/cablecuff.ogg', 30, TRUE)
playsound(parent, 'sound/items/weapons/cablecuff.ogg', 30, TRUE)
human_target.visible_message(span_danger("[parent] is trying to put zipties on [human_target]!"),\
span_danger("[parent] is trying to put zipties on you!"))
+3 -3
View File
@@ -176,7 +176,7 @@
* cultist - the mob doing the destroying
*/
/datum/component/cult_ritual_item/proc/do_destroy_girder(obj/structure/girder/cult/cult_girder, mob/living/cultist)
playsound(cult_girder, 'sound/weapons/resonator_blast.ogg', 40, TRUE, ignore_walls = FALSE)
playsound(cult_girder, 'sound/items/weapons/resonator_blast.ogg', 40, TRUE, ignore_walls = FALSE)
cultist.visible_message(
span_warning("[cultist] strikes [cult_girder] with [parent]!"),
span_notice("You demolish [cult_girder].")
@@ -320,7 +320,7 @@
if(scribe_failed)
failed = CALLBACK(GLOBAL_PROC, scribe_failed)
SEND_SOUND(cultist, sound('sound/weapons/slice.ogg', 0, 1, 10))
SEND_SOUND(cultist, sound('sound/items/weapons/slice.ogg', 0, 1, 10))
if(!do_after(cultist, scribe_mod, target = get_turf(cultist), timed_action_flags = IGNORE_SLOWDOWNS))
cleanup_shields()
failed?.Invoke()
@@ -371,7 +371,7 @@
var/area/summon_location = get_area(cultist)
priority_announce(
text = "Figments from an eldritch god are being summoned by [cultist.real_name] into [summon_location.get_original_area_name()] from an unknown dimension. Disrupt the ritual at all costs!",
sound = 'sound/ambience/antag/bloodcult/bloodcult_scribe.ogg',
sound = 'sound/music/antag/bloodcult/bloodcult_scribe.ogg',
sender_override = "[command_name()] Higher Dimensional Affairs",
has_important_message = TRUE,
)
+1 -1
View File
@@ -68,7 +68,7 @@
return
new_direction = user.dir //Gets the direction for thing_to_be_deployed if there is a user
source.balloon_alert(user, "deploying...")
playsound(source, 'sound/items/ratchet.ogg', 50, TRUE)
playsound(source, 'sound/items/tools/ratchet.ogg', 50, TRUE)
if(!do_after(user, deploy_time))
return
else // If there is for some reason no user, then the location and direction are set here
@@ -74,7 +74,7 @@
to_chat(victim, span_bolddanger("[source] was boobytrapped!"))
if (!isnull(saboteur))
to_chat(saboteur, span_bolddanger("Success! Your trap on [source] caught [victim.name]!"))
playsound(source, 'sound/effects/explosion2.ogg', 200, TRUE)
playsound(source, 'sound/effects/explosion/explosion2.ogg', 200, TRUE)
new /obj/effect/temp_visual/explosion(get_turf(source))
EX_ACT(victim, explosive_force)
qdel(src)
+1 -1
View File
@@ -57,7 +57,7 @@
var/damage = weapon.throwforce
if(harmful)
victim.throw_alert(ALERT_EMBEDDED_OBJECT, /atom/movable/screen/alert/embeddedobject)
playsound(victim,'sound/weapons/bladeslice.ogg', 40)
playsound(victim,'sound/items/weapons/bladeslice.ogg', 40)
if (limb.can_bleed())
weapon.add_mob_blood(victim)//it embedded itself in you, of course it's bloody!
damage += weapon.w_class * embed_data.impact_pain_mult
@@ -26,7 +26,7 @@
/datum/component/interaction_booby_trap/Initialize(
explosion_light_range = 3,
explosion_heavy_range = 1, // So we destroy some machine components
triggered_sound = 'sound/machines/triple_beep.ogg',
triggered_sound = 'sound/machines/beep/triple_beep.ogg',
trigger_delay = 0.5 SECONDS,
sound_loop_type = /datum/looping_sound/trapped_machine_beep,
defuse_tool = TOOL_SCREWDRIVER,
+1 -1
View File
@@ -400,7 +400,7 @@
// Default track supplied for testing and also because it's a banger
/datum/track/default
song_path = 'sound/ambience/title3.ogg'
song_path = 'sound/music/lobby_music/title3.ogg'
song_name = "Tintin on the Moon"
song_length = 3 MINUTES + 52 SECONDS
song_beat = 1 SECONDS
+1 -1
View File
@@ -25,7 +25,7 @@
///how long it takes to harvest from the mob
var/item_harvest_time = 5 SECONDS
///typepath of harvest sound
var/item_harvest_sound = 'sound/items/welder2.ogg'
var/item_harvest_sound = 'sound/items/tools/welder2.ogg'
//harvest_type, produced_item_typepath and speedup_type are typepaths, not reference
/datum/component/mob_harvest/Initialize(harvest_tool, fed_item, produced_item_typepath, produced_item_desc, max_ready, item_generation_wait, item_reduction_time, item_harvest_time, item_harvest_sound)
+1 -1
View File
@@ -343,7 +343,7 @@
parent_movable.update_appearance()
if(changer)
playsound(changer, 'sound/items/ratchet.ogg', 10, TRUE) //sound
playsound(changer, 'sound/items/tools/ratchet.ogg', 10, TRUE) //sound
//quickly disconnect and reconnect the network.
if(active)
+1 -1
View File
@@ -20,7 +20,7 @@
/datum/component/ranged_attacks/Initialize(
casing_type,
projectile_type,
projectile_sound = 'sound/weapons/gun/pistol/shot.ogg',
projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg',
burst_shots,
burst_intervals = 0.2 SECONDS,
cooldown_time = 3 SECONDS,
@@ -59,7 +59,7 @@
if(damage >= damage_threshold || number_of_hits <= 0)
return NONE
playsound(get_turf(parent), 'sound/weapons/tap.ogg', 20)
playsound(get_turf(parent), 'sound/items/weapons/tap.ogg', 20)
new /obj/effect/temp_visual/guardian/phase/out(get_turf(parent))
number_of_hits = max(0, number_of_hits - 1)
if(number_of_hits <= 0)
@@ -71,14 +71,14 @@
for(var/obj/effect/my_effect as anything in shield_overlays)
animate(my_effect, alpha = 0, time = 3 SECONDS)
my_effect.remove_filter(SHIELD_FILTER)
playsound(parent, 'sound/mecha/mech_shield_drop.ogg', 20)
playsound(parent, 'sound/vehicles/mecha/mech_shield_drop.ogg', 20)
/datum/component/regenerative_shield/proc/enable_shield()
number_of_hits = initial(number_of_hits)
for(var/obj/effect/my_effect as anything in shield_overlays)
animate(my_effect, alpha = 255, time = 3 SECONDS)
addtimer(CALLBACK(src, PROC_REF(apply_filter_effects), my_effect), 5 SECONDS)
playsound(parent, 'sound/mecha/mech_shield_raise.ogg', 20)
playsound(parent, 'sound/vehicles/mecha/mech_shield_raise.ogg', 20)
/datum/component/regenerative_shield/proc/apply_filter_effects(obj/effect/new_effect)
if(isnull(new_effect))
+1 -1
View File
@@ -389,7 +389,7 @@
if(human_user && is_clown_job(human_user.mind?.assigned_role))
// there's a new sheriff in town
playsound(movable_parent, 'sound/creatures/pony/clown_gallup.ogg', 50)
playsound(movable_parent, 'sound/mobs/non-humanoids/pony/clown_gallup.ogg', 50)
COOLDOWN_START(src, pony_trot_cooldown, 500 MILLISECONDS)
/datum/component/riding/creature/bear/handle_specials()
+1 -1
View File
@@ -76,7 +76,7 @@
var/obj/rotated_obj = parent
rotated_obj.setDir(turn(rotated_obj.dir, degrees))
if(rotation_flags & ROTATION_REQUIRE_WRENCH)
playsound(rotated_obj, 'sound/items/ratchet.ogg', 50, TRUE)
playsound(rotated_obj, 'sound/items/tools/ratchet.ogg', 50, TRUE)
post_rotation.Invoke(user, degrees)
+2 -2
View File
@@ -164,7 +164,7 @@
if(HAS_TRAIT(user, TRAIT_USER_SCOPED))
user.balloon_alert(user, "already zoomed!")
return
user.playsound_local(parent, 'sound/weapons/scope.ogg', 75, TRUE)
user.playsound_local(parent, 'sound/items/weapons/scope.ogg', 75, TRUE)
tracker = user.overlay_fullscreen("scope", /atom/movable/screen/fullscreen/cursor_catcher/scope, isgun(parent))
tracker.assign_to_mob(user, range_modifier)
tracker_owner_ckey = user.ckey
@@ -210,7 +210,7 @@
))
REMOVE_TRAIT(user, TRAIT_USER_SCOPED, REF(src))
user.playsound_local(parent, 'sound/weapons/scope.ogg', 75, TRUE, frequency = -1)
user.playsound_local(parent, 'sound/items/weapons/scope.ogg', 75, TRUE, frequency = -1)
user.clear_fullscreen("scope")
// if the client has ended up in another mob, find that mob so we can fix their cursor
+1 -1
View File
@@ -101,7 +101,7 @@
var/obj/item/item_parent = parent
COOLDOWN_START(src, charge_add_cd, charge_increment_delay)
adjust_charge(charge_recovery) // set the number of charges to current + recovery per increment, clamped from zero to max_charges
playsound(item_parent, 'sound/magic/charge.ogg', 50, TRUE)
playsound(item_parent, 'sound/effects/magic/charge.ogg', 50, TRUE)
if(current_charges == max_charges)
playsound(item_parent, 'sound/machines/ding.ogg', 50, TRUE)
+1 -1
View File
@@ -65,4 +65,4 @@
"reverse_dropoff_coords" = list(bottom_of_the_hill.x, bottom_of_the_hill.y, bottom_of_the_hill.z),
))
SEND_SOUND(sisyphus, 'sound/ambience/music/sisyphus/sisyphus.ogg')
SEND_SOUND(sisyphus, 'sound/music/sisyphus/sisyphus.ogg')
+1 -1
View File
@@ -4,7 +4,7 @@
proctype = PROC_REF(EngageInComedy)
mobtype = /mob/living
///Sounds used for when user has a sitcom action occur
var/list/comedysounds = list('sound/items/SitcomLaugh1.ogg', 'sound/items/SitcomLaugh2.ogg', 'sound/items/SitcomLaugh3.ogg')
var/list/comedysounds = list('sound/items/sitcom_laugh/sitcomLaugh1.ogg', 'sound/items/sitcom_laugh/sitcomLaugh2.ogg', 'sound/items/sitcom_laugh/sitcomLaugh3.ogg')
///Invoked in EngageInComedy is ran
var/datum/callback/post_comedy_callback
///Cooldown for inbetween laughs
+3 -3
View File
@@ -84,7 +84,7 @@
if(start_spin_message)
var/message = replacetext(start_spin_message, "%USER", spinning_user)
spinning_user.visible_message(message)
playsound(spinning_user, 'sound/weapons/fwoosh.ogg', 75, FALSE)
playsound(spinning_user, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
stop_spinning_timer_id = addtimer(CALLBACK(src, PROC_REF(stop_spinning), spinning_user), spin_duration, TIMER_STOPPABLE|TIMER_DELETE_ME)
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_spin_equipped))
RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_spin_dropped))
@@ -95,7 +95,7 @@
STOP_PROCESSING(SSprocessing, src)
UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
deltimer(stop_spinning_timer_id)
playsound(user, 'sound/weapons/fwoosh.ogg', 75, FALSE)
playsound(user, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
if(user && end_spin_message)
var/message = replacetext(end_spin_message, "%USER", user)
user.visible_message(message)
@@ -111,7 +111,7 @@
return PROCESS_KILL
var/mob/living/item_owner = spinning_item.loc
item_owner.emote("spin")
playsound(item_owner, 'sound/weapons/fwoosh.ogg', 75, FALSE)
playsound(item_owner, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
for(var/mob/living/victim in orange(1, item_owner))
spinning_item.attack(victim, item_owner)
+1 -1
View File
@@ -149,7 +149,7 @@
return // just in case
var/atom/movable/exorcised_movable = parent
to_chat(exorcist, span_notice("You begin to exorcise [parent]..."))
playsound(parent, 'sound/hallucinations/veryfar_noise.ogg',40,TRUE)
playsound(parent, 'sound/effects/hallucinations/veryfar_noise.ogg',40,TRUE)
if(!do_after(exorcist, 4 SECONDS, target = exorcised_movable))
return
playsound(parent, 'sound/effects/pray_chaplain.ogg',60,TRUE)
+1 -1
View File
@@ -1,5 +1,5 @@
/datum/component/squeak
var/static/list/default_squeak_sounds = list('sound/items/toysqueak1.ogg'=1, 'sound/items/toysqueak2.ogg'=1, 'sound/items/toysqueak3.ogg'=1)
var/static/list/default_squeak_sounds = list('sound/items/toy_squeak/toysqueak1.ogg'=1, 'sound/items/toy_squeak/toysqueak2.ogg'=1, 'sound/items/toy_squeak/toysqueak3.ogg'=1)
var/list/override_squeak_sounds
var/mob/holder
+1 -1
View File
@@ -61,7 +61,7 @@
CRASH("Unable to find a blobstart landmark for [type] to relocate [parent].")
var/atom/movable/movable_parent = parent
playsound(movable_parent, 'sound/machines/synth_no.ogg', 5, TRUE)
playsound(movable_parent, 'sound/machines/synth/synth_no.ogg', 5, TRUE)
var/mob/holder = get(movable_parent, /mob)
if(holder)
+1 -1
View File
@@ -24,7 +24,7 @@
max_mobs = 3,
spawn_delay = 10 SECONDS,
spawn_text = "appears out of nowhere",
spawn_sound = 'sound/magic/summon_magic.ogg',
spawn_sound = 'sound/effects/magic/summon_magic.ogg',
list/faction,
)
if(!isitem(parent) && !ishostile(parent) && !isgun(parent) && !ismachinery(parent) && !isstructure(parent) && !isprojectilespell(parent))
+8 -8
View File
@@ -104,7 +104,7 @@
tackling = TRUE
RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(checkObstacle))
playsound(user, 'sound/weapons/thudswoosh.ogg', 40, TRUE, -1)
playsound(user, 'sound/items/weapons/thudswoosh.ogg', 40, TRUE, -1)
var/leap_word = isfelinid(user) ? "pounce" : "leap" //If cat, "pounce" instead of "leap".
if(can_see(user, clicked_atom, 7))
@@ -533,7 +533,7 @@
else
user.adjustBruteLoss(40, updating_health=FALSE)
user.adjustStaminaLoss(30)
playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
playsound(user, 'sound/effects/wounds/crack2.ogg', 70, TRUE)
user.emote("scream")
@@ -550,7 +550,7 @@
user.adjustBruteLoss(40, updating_health = FALSE)
user.adjustStaminaLoss(30)
user.gain_trauma_type(BRAIN_TRAUMA_MILD)
playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/blob/blobattack.ogg', 60, TRUE)
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
user.emote("gurgle")
shake_camera(user, 7, 7)
@@ -562,7 +562,7 @@
user.adjustBruteLoss(30)
user.Unconscious(10 SECONDS)
user.gain_trauma_type(BRAIN_TRAUMA_MILD)
user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8)
user.playsound_local(get_turf(user), 'sound/items/weapons/flashbang.ogg', 100, TRUE, 8)
shake_camera(user, 6, 6)
user.flash_act(1, TRUE, TRUE, length = 3.5)
@@ -573,7 +573,7 @@
user.adjust_confusion(15 SECONDS)
if(prob(80))
user.gain_trauma(/datum/brain_trauma/mild/concussion)
user.playsound_local(get_turf(user), 'sound/weapons/flashbang.ogg', 100, TRUE, 8)
user.playsound_local(get_turf(user), 'sound/items/weapons/flashbang.ogg', 100, TRUE, 8)
user.Knockdown(4 SECONDS)
shake_camera(user, 5, 5)
user.flash_act(1, TRUE, TRUE, length = 2.5)
@@ -593,7 +593,7 @@
user.Knockdown(2 SECONDS)
shake_camera(user, 2, 2)
playsound(user, 'sound/weapons/smash.ogg', 70, TRUE)
playsound(user, 'sound/items/weapons/smash.ogg', 70, TRUE)
/datum/component/tackler/proc/resetTackle()
@@ -603,7 +603,7 @@
///A special case for splatting for handling windows
/datum/component/tackler/proc/splatWindow(mob/living/carbon/user, obj/structure/window/W)
playsound(user, 'sound/effects/Glasshit.ogg', 140, TRUE)
playsound(user, 'sound/effects/glass/Glasshit.ogg', 140, TRUE)
if(W.type in list(/obj/structure/window, /obj/structure/window/fulltile, /obj/structure/window/unanchored, /obj/structure/window/fulltile/unanchored)) // boring unreinforced windows
for(var/i in 1 to speed)
@@ -682,7 +682,7 @@
var/datum/thrownthing/tackle = tackle_ref?.resolve()
playsound(owner, 'sound/weapons/smash.ogg', 70, TRUE)
playsound(owner, 'sound/items/weapons/smash.ogg', 70, TRUE)
if(tackle)
tackle.finalize(hit=TRUE)
resetTackle()
+1 -1
View File
@@ -116,7 +116,7 @@
*/
/datum/component/thermite/proc/thermite_melt(mob/user)
var/turf/parent_turf = parent
playsound(parent_turf, 'sound/items/welder.ogg', 100, TRUE)
playsound(parent_turf, 'sound/items/tools/welder.ogg', 100, TRUE)
fakefire = new(parent_turf)
burn_callback = CALLBACK(src, PROC_REF(burn_parent), user)
burn_timer = addtimer(burn_callback, min(amount * 0.35 SECONDS, 20 SECONDS), TIMER_STOPPABLE)
+2 -2
View File
@@ -50,7 +50,7 @@
throwforce_on = 0,
throw_speed_on = 2,
sharpness_on = NONE,
hitsound_on = 'sound/weapons/blade1.ogg',
hitsound_on = 'sound/items/weapons/blade1.ogg',
w_class_on = WEIGHT_CLASS_BULKY,
clumsy_check = TRUE,
clumsy_damage = 10,
@@ -174,7 +174,7 @@
/datum/component/transforming/proc/default_transform_message(obj/item/source, mob/user)
if(user)
source.balloon_alert(user, "[active ? "enabled" : "disabled"] [source]")
playsound(source, 'sound/weapons/batonextend.ogg', 50, TRUE)
playsound(source, 'sound/items/weapons/batonextend.ogg', 50, TRUE)
/*
* Toggle active between true and false, and call
+2 -2
View File
@@ -246,7 +246,7 @@
assembly_turf.visible_message("<span class='notice'>[src] has linked up to a nearby trapdoor! \
You may now use it to check where the trapdoor is... be careful!</span>", vision_distance = SAMETILE_MESSAGE_RANGE)
else
playsound(assembly_turf, 'sound/machines/buzz-sigh.ogg', 50, FALSE)
playsound(assembly_turf, 'sound/machines/buzz/buzz-sigh.ogg', 50, FALSE)
assembly_turf.visible_message(span_warning("[src] has failed to find a trapdoor nearby to link to."), vision_distance = SAMETILE_MESSAGE_RANGE)
/**
@@ -321,7 +321,7 @@
return TRUE
user.balloon_alert(user, "trapdoor triggered")
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE)
playsound(src, 'sound/machines/terminal/terminal_prompt_confirm.ogg', 50, FALSE)
icon_state = "trapdoor_pressed"
addtimer(VARSET_CALLBACK(src, icon_state, initial(icon_state)), trapdoor_cooldown_time)
COOLDOWN_START(src, trapdoor_cooldown, trapdoor_cooldown_time)