diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index d9f0f9078d..7a8a669f4f 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -13,6 +13,24 @@ NOTE: there are two lists of areas in the end of this file: centcom and station */ +//Sound environment defines. Reverb preset for sounds played in this area, see sound datum reference for more. +//Note that the environment of a sound is automatically set to 22 (underwater) for low-pressure in sound.dm +#define STANDARD_STATION 5 //stoneroom +#define LARGE_ENCLOSED 10 //hangar +#define SMALL_ENCLOSED 3 //bathroom +#define TUNNEL_ENCLOSED 8 //cave +#define LARGE_SOFTFLOOR 11 //carpetted hallway +#define MEDIUM_SOFTFLOOR 4 //livingroom +#define SMALL_SOFTFLOOR 2 //room +#define ASTEROID 8 //cave + +//for holodeck +#define SPACE 22 //underwater +#define ARENA 9 //arena +#define PLAIN 19 //plain +#define FOREST 15 //forest +#define AUDITORIUM 6 //auditorium +#define CONCERT_HALL 7 //concert hall /area @@ -53,7 +71,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/air_doors_activated = 0 var/list/ambience = list('sound/ambience/ambigen1.ogg','sound/ambience/ambigen3.ogg','sound/ambience/ambigen4.ogg','sound/ambience/ambigen5.ogg','sound/ambience/ambigen6.ogg','sound/ambience/ambigen7.ogg','sound/ambience/ambigen8.ogg','sound/ambience/ambigen9.ogg','sound/ambience/ambigen10.ogg','sound/ambience/ambigen11.ogg','sound/ambience/ambigen12.ogg','sound/ambience/ambigen14.ogg') var/list/forced_ambience = null - var/sound_env = 2 //reverb preset for sounds played in this area, see sound datum reference for more + var/sound_env = STANDARD_STATION /*Adding a wizard area teleport list because motherfucking lag -- Urist*/ /*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/ var/list/teleportlocs = list() @@ -143,6 +161,7 @@ area/space/atmosalert() /area/shuttle requires_power = 0 + sound_env = SMALL_ENCLOSED /area/shuttle/arrival name = "\improper Arrival Shuttle" @@ -405,15 +424,18 @@ area/space/atmosalert() name = "\improper Moon" icon_state = "asteroid" requires_power = 0 + sound_env = ASTEROID /area/asteroid/cave // -- TLE name = "\improper Moon - Underground" icon_state = "cave" requires_power = 0 + sound_env = ASTEROID /area/asteroid/artifactroom name = "\improper Moon - Artifact" icon_state = "cave" + sound_env = SMALL_ENCLOSED @@ -438,6 +460,7 @@ area/space/atmosalert() name = "\improper Thunderdome" icon_state = "thunder" requires_power = 0 + sound_env = ARENA /area/tdome/tdome1 name = "\improper Thunderdome (Team 1)" @@ -634,6 +657,7 @@ area/space/atmosalert() /area/maintenance flags = RAD_SHIELDED + sound_env = TUNNEL_ENCLOSED /area/maintenance/aft name = "Aft Maintenance" @@ -768,6 +792,7 @@ area/space/atmosalert() /area/maintenance/substation name = "Substation" icon_state = "substation" + sound_env = SMALL_ENCLOSED /area/maintenance/substation/engineering // Probably will be connected to engineering SMES room, as wires cannot be crossed properly without them sharing powernets. name = "Engineering Substation" @@ -800,7 +825,7 @@ area/space/atmosalert() //Hallway /area/hallway/primary/ - sound_env = 12 //hallway + sound_env = LARGE_ENCLOSED /area/hallway/primary/fore name = "\improper Fore Primary Hallway" @@ -865,10 +890,12 @@ area/space/atmosalert() name = "\improper Heads of Staff Meeting Room" icon_state = "bridge" music = null + sound_env = MEDIUM_SOFTFLOOR /area/crew_quarters/captain name = "\improper Command - Captain's Office" icon_state = "captain" + sound_env = MEDIUM_SOFTFLOOR /area/crew_quarters/heads/hop name = "\improper Command - HoP's Office" @@ -916,6 +943,7 @@ area/space/atmosalert() /area/crew_quarters/toilet name = "\improper Dormitory Toilets" icon_state = "toilet" + sound_env = SMALL_ENCLOSED /area/crew_quarters/sleep name = "\improper Dormitories" @@ -924,10 +952,12 @@ area/space/atmosalert() /area/crew_quarters/sleep/engi_wash name = "\improper Engineering Washroom" icon_state = "toilet" + sound_env = SMALL_ENCLOSED /area/crew_quarters/sleep/bedrooms name = "\improper Dormitory Bedroom One" icon_state = "Sleep" + sound_env = SMALL_SOFTFLOOR /area/crew_quarters/sleep/cryo name = "\improper Cryogenic Storage" @@ -940,6 +970,7 @@ area/space/atmosalert() /area/crew_quarters/sleep_male/toilet_male name = "\improper Male Toilets" icon_state = "toilet" + sound_env = SMALL_ENCLOSED /area/crew_quarters/sleep_female name = "\improper Female Dorm" @@ -948,6 +979,7 @@ area/space/atmosalert() /area/crew_quarters/sleep_female/toilet_female name = "\improper Female Toilets" icon_state = "toilet" + sound_env = SMALL_ENCLOSED /area/crew_quarters/locker name = "\improper Locker Room" @@ -956,6 +988,7 @@ area/space/atmosalert() /area/crew_quarters/locker/locker_toilet name = "\improper Locker Toilets" icon_state = "toilet" + sound_env = SMALL_ENCLOSED /area/crew_quarters/fitness name = "\improper Fitness Room" @@ -972,10 +1005,12 @@ area/space/atmosalert() /area/crew_quarters/bar name = "\improper Bar" icon_state = "bar" + sound_env = LARGE_SOFTFLOOR /area/crew_quarters/theatre name = "\improper Theatre" icon_state = "Theatre" + sound_env = LARGE_SOFTFLOOR /area/library name = "\improper Library" @@ -985,6 +1020,7 @@ area/space/atmosalert() name = "\improper Chapel" icon_state = "chapel" ambience = list('sound/ambience/ambicha1.ogg','sound/ambience/ambicha2.ogg','sound/ambience/ambicha3.ogg','sound/ambience/ambicha4.ogg','sound/music/traitor.ogg') + sound_env = LARGE_ENCLOSED /area/chapel/office name = "\improper Chapel Office" @@ -1001,6 +1037,7 @@ area/space/atmosalert() name = "\improper Holodeck" icon_state = "Holodeck" lighting_use_dynamic = 0 + sound_env = LARGE_ENCLOSED /area/holodeck/alphadeck name = "\improper Holodeck Alpha" @@ -1010,21 +1047,27 @@ area/space/atmosalert() /area/holodeck/source_emptycourt name = "\improper Holodeck - Empty Court" + sound_env = ARENA /area/holodeck/source_boxingcourt name = "\improper Holodeck - Boxing Court" + sound_env = ARENA /area/holodeck/source_basketball name = "\improper Holodeck - Basketball Court" + sound_env = ARENA /area/holodeck/source_thunderdomecourt name = "\improper Holodeck - Thunderdome Court" + sound_env = ARENA /area/holodeck/source_courtroom name = "\improper Holodeck - Courtroom" + sound_env = AUDITORIUM /area/holodeck/source_beach name = "\improper Holodeck - Beach" + sound_env = PLAIN /area/holodeck/source_burntest name = "\improper Holodeck - Atmospheric Burn Test" @@ -1034,22 +1077,28 @@ area/space/atmosalert() /area/holodeck/source_meetinghall name = "\improper Holodeck - Meeting Hall" + sound_env = AUDITORIUM /area/holodeck/source_theatre name = "\improper Holodeck - Theatre" + sound_env = CONCERT_HALL /area/holodeck/source_picnicarea name = "\improper Holodeck - Picnic Area" + sound_env = PLAIN /area/holodeck/source_snowfield name = "\improper Holodeck - Snow Field" + sound_env = FOREST /area/holodeck/source_desert name = "\improper Holodeck - Desert" + sound_env = PLAIN /area/holodeck/source_space name = "\improper Holodeck - Space" has_gravity = 0 + sound_env = SPACE //Engineering @@ -1061,26 +1110,32 @@ area/space/atmosalert() /area/engineering/atmos name = "\improper Atmospherics" icon_state = "atmos" + sound_env = LARGE_ENCLOSED /area/engineering/atmos/monitoring name = "\improper Atmospherics Monitoring Room" icon_state = "atmos_monitoring" + sound_env = STANDARD_STATION /area/engineering/atmos/storage name = "\improper Atmospherics Storage" icon_state = "atmos_storage" + sound_env = SMALL_ENCLOSED /area/engineering/drone_fabrication name = "\improper Engineering Drone Fabrication" icon_state = "drone_fab" + sound_env = SMALL_ENCLOSED /area/engineering/engine_smes name = "\improper Engineering SMES" icon_state = "engine_smes" + sound_env = SMALL_ENCLOSED /area/engineering/engine_room name = "\improper Engine Room" icon_state = "engine" + sound_env = LARGE_ENCLOSED /area/engineering/engine_airlock name = "\improper Engine Room Airlock" @@ -1109,6 +1164,7 @@ area/space/atmosalert() /area/engineering/break_room name = "\improper Engineering Break Room" icon_state = "engineering_break" + sound_env = MEDIUM_SOFTFLOOR /area/engineering/engine_eva name = "\improper Engine EVA" @@ -1158,22 +1214,27 @@ area/space/atmosalert() /area/maintenance/auxsolarport name = "Solar Maintenance - Fore Port" icon_state = "SolarcontrolP" + sound_env = SMALL_ENCLOSED /area/maintenance/starboardsolar name = "Solar Maintenance - Aft Starboard" icon_state = "SolarcontrolS" + sound_env = SMALL_ENCLOSED /area/maintenance/portsolar name = "Solar Maintenance - Aft Port" icon_state = "SolarcontrolP" + sound_env = SMALL_ENCLOSED /area/maintenance/auxsolarstarboard name = "Solar Maintenance - Fore Starboard" icon_state = "SolarcontrolS" + sound_env = SMALL_ENCLOSED /area/maintenance/foresolar name = "Solar Maintenance - Fore" icon_state = "SolarcontrolA" + sound_env = SMALL_ENCLOSED /area/assembly/chargebay name = "\improper Mech Bay" @@ -1385,6 +1446,7 @@ area/space/atmosalert() /area/security/detectives_office name = "\improper Security - Forensic Office" icon_state = "detective" + sound_env = MEDIUM_SOFTFLOOR /area/security/range name = "\improper Security - Firing Range" @@ -1459,6 +1521,7 @@ area/space/atmosalert() /area/quartermaster/storage name = "\improper Cargo Bay" icon_state = "quartstorage" + sound_env = LARGE_ENCLOSED /area/quartermaster/qm name = "\improper Cargo - Quartermaster's Office" @@ -1809,10 +1872,12 @@ area/space/atmosalert() name = "AI Upload Access" icon_state = "ai_foyer" ambience = list('sound/ambience/ambimalf.ogg') + sound_env = SMALL_ENCLOSED /area/turret_protected/ai_server_room name = "AI Server Room" icon_state = "ai_server" + sound_env = SMALL_ENCLOSED /area/turret_protected/ai name = "\improper AI Chamber" @@ -1822,6 +1887,7 @@ area/space/atmosalert() /area/turret_protected/ai_cyborg_station name = "\improper Cyborg Station" icon_state = "ai_cyborg" + sound_env = SMALL_ENCLOSED /area/turret_protected/aisat name = "\improper AI Satellite" diff --git a/code/game/area/asteroid_areas.dm b/code/game/area/asteroid_areas.dm index 12ae5377ce..9783a2fe22 100644 --- a/code/game/area/asteroid_areas.dm +++ b/code/game/area/asteroid_areas.dm @@ -3,7 +3,7 @@ /area/mine icon_state = "mining" music = 'sound/ambience/song_game.ogg' - sound_env = 5 //stoneroom + sound_env = 8 //cave /area/mine/explored name = "Mine" diff --git a/code/game/sound.dm b/code/game/sound.dm index 1cc6f98807..76ae32b0e0 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -50,6 +50,9 @@ var/const/FALLOFF_SOUNDS = 0.5 else S.frequency = get_rand_frequency() + //sound volume falloff with pressure + var/pressure_factor = 1.0 + if(isturf(turf_source)) // 3D sounds, the technology is here! var/turf/T = get_turf(src) @@ -59,9 +62,6 @@ var/const/FALLOFF_SOUNDS = 0.5 S.volume -= max(distance - world.view, 0) * 2 //multiplicative falloff to add on top of natural audio falloff. - //sound volume falloff with pressure - var/pressure_factor = 1.0 - var/datum/gas_mixture/hearer_env = T.return_air() var/datum/gas_mixture/source_env = turf_source.return_air() @@ -90,8 +90,11 @@ var/const/FALLOFF_SOUNDS = 0.5 S.falloff = (falloff ? falloff : FALLOFF_SOUNDS) if(!is_global) - var/area/A = get_area(src) - S.environment = A.sound_env + if (pressure_factor < 0.5) + S.environment = 22 //underwater + else + var/area/A = get_area(src) + S.environment = A.sound_env src << S diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm index f14cdb8ebc..ffbbbe479e 100644 --- a/code/modules/holodeck/HolodeckControl.dm +++ b/code/modules/holodeck/HolodeckControl.dm @@ -287,6 +287,8 @@ if(M.mind) linkedholodeck.play_ambience(M) + linkedholodeck.sound_env = A.sound_env + spawn(30) for(var/obj/effect/landmark/L in linkedholodeck) if(L.name=="Atmospheric Test Start")