mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-22 20:56:33 +01:00
Adds area soundproofing. (#7881)
* Adds area soundproofing. Areas now have a var for soundproofing in order to block sounds from other areas from entering or sounds from within leaving the area. * Update sound.dm * Update sound.dm
This commit is contained in:
@@ -50,6 +50,7 @@
|
||||
var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf
|
||||
var/forbid_events = FALSE // If true, random events will not start inside this area.
|
||||
var/no_spoilers = FALSE // If true, makes it much more difficult to see what is inside an area with things like mesons.
|
||||
var/soundproofed = FALSE // If true, blocks sounds from other areas and prevents hearers on other areas from hearing the sounds within.
|
||||
|
||||
/area/Initialize()
|
||||
. = ..()
|
||||
@@ -367,9 +368,9 @@ var/list/mob/living/forced_ambiance_list = new
|
||||
// Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch
|
||||
if(!(L && L.is_preference_enabled(/datum/client_preference/play_ambiance)))
|
||||
return
|
||||
|
||||
|
||||
var/volume_mod = L.get_preference_volume_channel(VOLUME_CHANNEL_AMBIENCE)
|
||||
|
||||
|
||||
// If we previously were in an area with force-played ambiance, stop it.
|
||||
if((L in forced_ambiance_list) && initial)
|
||||
L << sound(null, channel = CHANNEL_AMBIENCE_FORCED)
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
return
|
||||
|
||||
var/turf/turf_source = get_turf(source)
|
||||
if(!turf_source)
|
||||
return
|
||||
var/area/area_source = turf_source.loc
|
||||
|
||||
//allocate a channel if necessary now so its the same for everyone
|
||||
channel = channel || open_sound_channel()
|
||||
@@ -19,6 +22,11 @@
|
||||
if(!M || !M.client)
|
||||
continue
|
||||
var/turf/T = get_turf(M)
|
||||
if(!T)
|
||||
continue
|
||||
var/area/A = T.loc
|
||||
if((A.soundproofed || area_source.soundproofed) && (A != area_source))
|
||||
continue
|
||||
var/distance = get_dist(T, turf_source)
|
||||
|
||||
if(distance <= maxdistance)
|
||||
|
||||
Reference in New Issue
Block a user