mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 18:22:14 +00:00
Refactors ambience to a subsystem (#56723)
Ambience is now in a subsystem, and plays every now and then without you having to move to a new area for it to play
This commit is contained in:
27
code/controllers/subsystem/ambience.dm
Normal file
27
code/controllers/subsystem/ambience.dm
Normal file
@@ -0,0 +1,27 @@
|
||||
/// The subsystem used to play ambience to users every now and then, makes them real excited.
|
||||
SUBSYSTEM_DEF(ambience)
|
||||
name = "Ambience"
|
||||
flags = SS_BACKGROUND|SS_NO_INIT
|
||||
priority = FIRE_PRIORITY_AMBIENCE
|
||||
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
|
||||
wait = 1 SECONDS
|
||||
///Assoc list of listening client - next ambience time
|
||||
var/list/ambience_listening_clients = list()
|
||||
|
||||
/datum/controller/subsystem/ambience/fire(resumed)
|
||||
for(var/client/client_iterator as anything in ambience_listening_clients)
|
||||
|
||||
if(isnull(client_iterator))
|
||||
ambience_listening_clients -= client_iterator
|
||||
continue
|
||||
|
||||
if(ambience_listening_clients[client_iterator] > world.time)
|
||||
continue //Not ready for the next sound
|
||||
|
||||
var/area/current_area = get_area(client_iterator.mob)
|
||||
|
||||
var/sound = pick(current_area.ambientsounds)
|
||||
|
||||
SEND_SOUND(client_iterator.mob, sound(sound, repeat = 0, wait = 0, volume = 25, channel = CHANNEL_AMBIENCE))
|
||||
|
||||
ambience_listening_clients[client_iterator] = world.time + rand(current_area.min_ambience_cooldown, current_area.max_ambience_cooldown)
|
||||
Reference in New Issue
Block a user