mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-13 03:02:38 +00:00
Adds a bunch of looping audio to computers, grav-gen and telecomms. (#54324)
This commit is contained in:
@@ -18,8 +18,12 @@
|
||||
var/list/atom/output_atoms
|
||||
var/mid_sounds
|
||||
var/mid_length
|
||||
///Override for volume of start sound
|
||||
var/start_volume
|
||||
var/start_sound
|
||||
var/start_length
|
||||
///Override for volume of end sound
|
||||
var/end_volume
|
||||
var/end_sound
|
||||
var/chance
|
||||
var/volume = 100
|
||||
@@ -28,7 +32,6 @@
|
||||
var/direct
|
||||
var/extra_range = 0
|
||||
var/falloff
|
||||
|
||||
var/timerid
|
||||
|
||||
/datum/looping_sound/New(list/_output_atoms=list(), start_immediately=FALSE, _direct=FALSE)
|
||||
@@ -72,12 +75,12 @@
|
||||
if(!timerid)
|
||||
timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), mid_length, TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_LOOP)
|
||||
|
||||
/datum/looping_sound/proc/play(soundfile)
|
||||
/datum/looping_sound/proc/play(soundfile, volume_override)
|
||||
var/list/atoms_cache = output_atoms
|
||||
var/sound/S = sound(soundfile)
|
||||
if(direct)
|
||||
S.channel = SSsounds.random_available_channel()
|
||||
S.volume = volume
|
||||
S.volume = volume_override || volume //Use volume as fallback if theres no override
|
||||
for(var/i in 1 to atoms_cache.len)
|
||||
var/atom/thing = atoms_cache[i]
|
||||
if(direct)
|
||||
@@ -93,10 +96,10 @@
|
||||
/datum/looping_sound/proc/on_start()
|
||||
var/start_wait = 0
|
||||
if(start_sound)
|
||||
play(start_sound)
|
||||
play(start_sound, start_volume)
|
||||
start_wait = start_length
|
||||
addtimer(CALLBACK(src, .proc/sound_loop), start_wait, TIMER_CLIENT_TIME)
|
||||
|
||||
/datum/looping_sound/proc/on_stop()
|
||||
if(end_sound)
|
||||
play(end_sound)
|
||||
play(end_sound, end_volume)
|
||||
|
||||
@@ -71,3 +71,28 @@
|
||||
mid_sounds = list('sound/machines/roulettejackpot.ogg')
|
||||
volume = 85
|
||||
vary = TRUE
|
||||
|
||||
|
||||
/datum/looping_sound/server
|
||||
mid_sounds = list('sound/machines/tcomms/tcomms_mid1.ogg'=1,'sound/machines/tcomms/tcomms_mid2.ogg'=1,'sound/machines/tcomms/tcomms_mid3.ogg'=1,'sound/machines/tcomms/tcomms_mid4.ogg'=1,\
|
||||
'sound/machines/tcomms/tcomms_mid5.ogg'=1,'sound/machines/tcomms/tcomms_mid6.ogg'=1,'sound/machines/tcomms/tcomms_mid7.ogg'=1)
|
||||
mid_length = 1.8 SECONDS
|
||||
extra_range = -4.5
|
||||
volume = 50
|
||||
|
||||
/datum/looping_sound/computer
|
||||
start_sound = 'sound/machines/computer/computer_start.ogg'
|
||||
start_length = 7.2 SECONDS
|
||||
start_volume = 10
|
||||
mid_sounds = list('sound/machines/computer/computer_mid1.ogg'=1, 'sound/machines/computer/computer_mid2.ogg'=1)
|
||||
mid_length = 1.8 SECONDS
|
||||
end_sound = 'sound/machines/computer/computer_end.ogg'
|
||||
end_volume = 10
|
||||
volume = 3
|
||||
extra_range = -5.5
|
||||
|
||||
/datum/looping_sound/gravgen
|
||||
mid_sounds = list('sound/machines/gravgen/gravgen_mid1.ogg'=1,'sound/machines/gravgen/gravgen_mid2.ogg'=1,'sound/machines/gravgen/gravgen_mid3.ogg'=1,'sound/machines/gravgen/gravgen_mid4.ogg'=1,)
|
||||
mid_length = 1.8 SECONDS
|
||||
extra_range = 10
|
||||
volume = 70
|
||||
|
||||
@@ -14,12 +14,19 @@
|
||||
var/icon_screen = "generic"
|
||||
var/time_to_screwdrive = 20
|
||||
var/authenticated = 0
|
||||
///Looping audio for when the computer is on
|
||||
var/datum/looping_sound/computer/soundloop
|
||||
|
||||
/obj/machinery/computer/Initialize(mapload, obj/item/circuitboard/C)
|
||||
. = ..()
|
||||
|
||||
soundloop = new(list(src))
|
||||
power_change()
|
||||
|
||||
/obj/machinery/computer/Destroy()
|
||||
. = ..()
|
||||
QDEL_NULL(soundloop)
|
||||
|
||||
/obj/machinery/computer/process()
|
||||
if(machine_stat & (NOPOWER|BROKEN))
|
||||
return FALSE
|
||||
@@ -44,8 +51,10 @@
|
||||
/obj/machinery/computer/power_change()
|
||||
. = ..()
|
||||
if(machine_stat & NOPOWER)
|
||||
soundloop.stop()
|
||||
set_light(0)
|
||||
else
|
||||
soundloop.start()
|
||||
set_light(brightness_on)
|
||||
|
||||
/obj/machinery/computer/screwdriver_act(mob/living/user, obj/item/I)
|
||||
|
||||
@@ -31,6 +31,8 @@ GLOBAL_LIST_EMPTY(telecomms_list)
|
||||
var/long_range_link = FALSE // Can you link it across Z levels or on the otherside of the map? (Relay & Hub)
|
||||
var/hide = FALSE // Is it a hidden machine?
|
||||
|
||||
///Looping sounds for any servers
|
||||
var/datum/looping_sound/server/soundloop
|
||||
|
||||
/obj/machinery/telecomms/proc/relay_information(datum/signal/subspace/signal, filter, copysig, amount = 20)
|
||||
// relay signal to all linked machinery that are of type [filter]. If signal has been sent [amount] times, stop sending
|
||||
@@ -82,6 +84,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
|
||||
|
||||
/obj/machinery/telecomms/Initialize(mapload)
|
||||
. = ..()
|
||||
soundloop = new(list(src), on)
|
||||
GLOB.telecomms_list += src
|
||||
if(mapload && autolinkers.len)
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
@@ -93,6 +96,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
|
||||
|
||||
/obj/machinery/telecomms/Destroy()
|
||||
GLOB.telecomms_list -= src
|
||||
QDEL_NULL(soundloop)
|
||||
for(var/obj/machinery/telecomms/comm in GLOB.telecomms_list)
|
||||
comm.links -= src
|
||||
links = list()
|
||||
@@ -127,10 +131,13 @@ GLOBAL_LIST_EMPTY(telecomms_list)
|
||||
if(toggled)
|
||||
if(machine_stat & (BROKEN|NOPOWER|EMPED)) // if powered, on. if not powered, off. if too damaged, off
|
||||
on = FALSE
|
||||
soundloop.stop()
|
||||
else
|
||||
on = TRUE
|
||||
soundloop.start()
|
||||
else
|
||||
on = FALSE
|
||||
soundloop.stop()
|
||||
|
||||
/obj/machinery/telecomms/process(delta_time)
|
||||
update_power()
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
var/last_battery_percent = 0 // Used for deciding if battery percentage has chandged
|
||||
var/last_world_time = "00:00"
|
||||
var/list/last_header_icons
|
||||
///Looping sound for when the computer is on
|
||||
var/datum/looping_sound/computer/soundloop
|
||||
///Whether or not this modular computer uses the looping sound
|
||||
var/looping_sound = TRUE
|
||||
|
||||
var/base_active_power_usage = 50 // Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too.
|
||||
var/base_idle_power_usage = 5 // Power usage when the computer is idle and screen is off (currently only applies to laptops)
|
||||
@@ -56,11 +60,14 @@
|
||||
physical = src
|
||||
comp_light_color = "#FFFFFF"
|
||||
idle_threads = list()
|
||||
if(looping_sound)
|
||||
soundloop = new(list(src), enabled)
|
||||
update_icon()
|
||||
|
||||
/obj/item/modular_computer/Destroy()
|
||||
kill_program(forced = TRUE)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
QDEL_NULL(soundloop)
|
||||
for(var/H in all_components)
|
||||
var/obj/item/computer_hardware/CH = all_components[H]
|
||||
if(CH.holder == src)
|
||||
@@ -207,6 +214,8 @@
|
||||
to_chat(user, "<span class='notice'>You send an activation signal to \the [src], turning it on.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You press the power button and start up \the [src].</span>")
|
||||
if(looping_sound)
|
||||
soundloop.start()
|
||||
enabled = 1
|
||||
update_icon()
|
||||
ui_interact(user)
|
||||
@@ -343,6 +352,8 @@
|
||||
for(var/datum/computer_file/program/P in idle_threads)
|
||||
P.kill_program(forced = TRUE)
|
||||
idle_threads.Remove(P)
|
||||
if(looping_sound)
|
||||
soundloop.stop()
|
||||
if(loud)
|
||||
physical.visible_message("<span class='notice'>\The [src] shuts down.</span>")
|
||||
enabled = 0
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT
|
||||
has_light = TRUE //LED flashlight!
|
||||
comp_light_luminosity = 2.3 //Same as the PDA
|
||||
looping_sound = FALSE
|
||||
var/has_variants = TRUE
|
||||
var/finish_color = null
|
||||
|
||||
|
||||
@@ -27,6 +27,12 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
use_power = NO_POWER_USE
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
var/sprite_number = 0
|
||||
///Audio for when the gravgen is on
|
||||
var/datum/looping_sound/gravgen/soundloop
|
||||
|
||||
/obj/machinery/gravity_generator/main/Initialize()
|
||||
. = ..()
|
||||
soundloop = new(list(src), TRUE)
|
||||
|
||||
/obj/machinery/gravity_generator/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = MOVE_FORCE_STRONG, gentle = FALSE)
|
||||
return FALSE
|
||||
@@ -65,6 +71,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
if(main_part)
|
||||
qdel(main_part)
|
||||
set_broken()
|
||||
QDEL_NULL(soundloop)
|
||||
return ..()
|
||||
|
||||
//
|
||||
@@ -282,11 +289,13 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne
|
||||
var/alert = FALSE
|
||||
if(SSticker.IsRoundInProgress())
|
||||
if(on) // If we turned on and the game is live.
|
||||
soundloop.start()
|
||||
if(gravity_in_level() == FALSE)
|
||||
alert = TRUE
|
||||
investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY)
|
||||
message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]")
|
||||
else
|
||||
soundloop.stop()
|
||||
if(gravity_in_level() == TRUE)
|
||||
alert = TRUE
|
||||
investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY)
|
||||
|
||||
BIN
sound/machines/computer/computer_end.ogg
Normal file
BIN
sound/machines/computer/computer_end.ogg
Normal file
Binary file not shown.
BIN
sound/machines/computer/computer_mid1.ogg
Normal file
BIN
sound/machines/computer/computer_mid1.ogg
Normal file
Binary file not shown.
BIN
sound/machines/computer/computer_mid2.ogg
Normal file
BIN
sound/machines/computer/computer_mid2.ogg
Normal file
Binary file not shown.
BIN
sound/machines/computer/computer_start.ogg
Normal file
BIN
sound/machines/computer/computer_start.ogg
Normal file
Binary file not shown.
BIN
sound/machines/gravgen/gravgen_mid1.ogg
Normal file
BIN
sound/machines/gravgen/gravgen_mid1.ogg
Normal file
Binary file not shown.
BIN
sound/machines/gravgen/gravgen_mid2.ogg
Normal file
BIN
sound/machines/gravgen/gravgen_mid2.ogg
Normal file
Binary file not shown.
BIN
sound/machines/gravgen/gravgen_mid3.ogg
Normal file
BIN
sound/machines/gravgen/gravgen_mid3.ogg
Normal file
Binary file not shown.
BIN
sound/machines/gravgen/gravgen_mid4.ogg
Normal file
BIN
sound/machines/gravgen/gravgen_mid4.ogg
Normal file
Binary file not shown.
BIN
sound/machines/tcomms/tcomms_mid1.ogg
Normal file
BIN
sound/machines/tcomms/tcomms_mid1.ogg
Normal file
Binary file not shown.
BIN
sound/machines/tcomms/tcomms_mid2.ogg
Normal file
BIN
sound/machines/tcomms/tcomms_mid2.ogg
Normal file
Binary file not shown.
BIN
sound/machines/tcomms/tcomms_mid3.ogg
Normal file
BIN
sound/machines/tcomms/tcomms_mid3.ogg
Normal file
Binary file not shown.
BIN
sound/machines/tcomms/tcomms_mid4.ogg
Normal file
BIN
sound/machines/tcomms/tcomms_mid4.ogg
Normal file
Binary file not shown.
BIN
sound/machines/tcomms/tcomms_mid5.ogg
Normal file
BIN
sound/machines/tcomms/tcomms_mid5.ogg
Normal file
Binary file not shown.
BIN
sound/machines/tcomms/tcomms_mid6.ogg
Normal file
BIN
sound/machines/tcomms/tcomms_mid6.ogg
Normal file
Binary file not shown.
BIN
sound/machines/tcomms/tcomms_mid7.ogg
Normal file
BIN
sound/machines/tcomms/tcomms_mid7.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user