diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 5913dbf913..8e6cdc0be2 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -52,7 +52,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() @@ -142,6 +142,7 @@ area/space/atmosalert() /area/shuttle requires_power = 0 + sound_env = SMALL_ENCLOSED /area/shuttle/arrival name = "\improper Arrival Shuttle" @@ -397,15 +398,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 @@ -431,6 +435,7 @@ area/space/atmosalert() icon_state = "thunder" requires_power = 0 lighting_use_dynamic = 0 + sound_env = ARENA /area/tdome/tdome1 name = "\improper Thunderdome (Team 1)" @@ -635,6 +640,7 @@ area/space/atmosalert() /area/maintenance flags = RAD_SHIELDED + sound_env = TUNNEL_ENCLOSED /area/maintenance/aft name = "Aft Maintenance" @@ -769,6 +775,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" @@ -801,7 +808,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" @@ -866,10 +873,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" @@ -917,6 +926,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" @@ -925,10 +935,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" @@ -941,6 +953,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" @@ -949,6 +962,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" @@ -957,6 +971,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" @@ -973,19 +988,23 @@ 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" icon_state = "library" + sound_env = LARGE_SOFTFLOOR /area/chapel/main 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" @@ -1002,6 +1021,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" @@ -1011,21 +1031,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" @@ -1035,22 +1061,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 @@ -1062,26 +1094,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" @@ -1110,6 +1148,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" @@ -1159,22 +1198,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" @@ -1386,6 +1430,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" @@ -1460,6 +1505,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" @@ -1810,10 +1856,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 = "Messaging Server Room" icon_state = "ai_server" + sound_env = SMALL_ENCLOSED /area/turret_protected/ai name = "\improper AI Chamber" @@ -1823,6 +1871,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..0146f70d1d 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 = ASTEROID /area/mine/explored name = "Mine" diff --git a/code/game/sound.dm b/code/game/sound.dm index 1cc6f98807..ce2b992d9b 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,3 +1,41 @@ +//Sound environment defines. Reverb preset for sounds played in an area, see sound datum reference for more. +#define GENERIC 0 +#define PADDED_CELL 1 +#define ROOM 2 +#define BATHROOM 3 +#define LIVINGROOM 4 +#define STONEROOM 5 +#define AUDITORIUM 6 +#define CONCERT_HALL 7 +#define CAVE 8 +#define ARENA 9 +#define HANGAR 10 +#define CARPETED_HALLWAY 11 +#define HALLWAY 12 +#define STONE_CORRIDOR 13 +#define ALLEY 14 +#define FOREST 15 +#define CITY 16 +#define MOUNTAINS 17 +#define QUARRY 18 +#define PLAIN 19 +#define PARKING_LOT 20 +#define SEWER_PIPE 21 +#define UNDERWATER 22 +#define DRUGGED 23 +#define DIZZY 24 +#define PSYCHOTIC 25 + +#define STANDARD_STATION STONEROOM +#define LARGE_ENCLOSED HANGAR +#define SMALL_ENCLOSED BATHROOM +#define TUNNEL_ENCLOSED CAVE +#define LARGE_SOFTFLOOR CARPETED_HALLWAY +#define MEDIUM_SOFTFLOOR LIVINGROOM +#define SMALL_SOFTFLOOR ROOM +#define ASTEROID CAVE +#define SPACE UNDERWATER + var/list/shatter_sound = list('sound/effects/Glassbr1.ogg','sound/effects/Glassbr2.ogg','sound/effects/Glassbr3.ogg') var/list/explosion_sound = list('sound/effects/Explosion1.ogg','sound/effects/Explosion2.ogg') var/list/spark_sound = list('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg') @@ -50,6 +88,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 +100,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 +128,30 @@ 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(istype(src,/mob/living/)) + var/mob/living/M = src + if (M.hallucination) + S.environment = PSYCHOTIC + else if (M.druggy) + S.environment = DRUGGED + else if (M.drowsyness) + S.environment = DIZZY + else if (M.confused) + S.environment = DIZZY + else if (M.sleeping) + S.environment = UNDERWATER + else if (pressure_factor < 0.5) + S.environment = SPACE + else + var/area/A = get_area(src) + S.environment = A.sound_env + + else if (pressure_factor < 0.5) + S.environment = SPACE + 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 93e86c22a5..c4ff6da22e 100644 --- a/code/modules/holodeck/HolodeckControl.dm +++ b/code/modules/holodeck/HolodeckControl.dm @@ -288,6 +288,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") diff --git a/html/changelogs/RavingManiac-PR-9942.yml b/html/changelogs/RavingManiac-PR-9942.yml new file mode 100644 index 0000000000..b30712e423 --- /dev/null +++ b/html/changelogs/RavingManiac-PR-9942.yml @@ -0,0 +1,6 @@ +author: RavingManiac +delete-after: True +changes: + - tweak: "Sound environments tweaked to feel more claustrophobic" + - rscadd: "Being drugged, hallucinating, dizzy, or in low-pressure or vacuum will alter sounds you hear" + - rscadd: "Sound environment in holodeck will change to reflect the loaded program"