From d1cc0517ce2406bdfff5bac2df45f9054865e580 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Sat, 27 Jun 2015 03:47:37 +1000 Subject: [PATCH 1/3] Sound environment changes. Different values for hallways, carpeted rooms, maintenance tunnels, etc. Holodeck sound environment changes with the loaded program In low-pressure or space, sounds will be heard in sound environment 22 (underwater)) --- code/game/area/Space Station 13 areas.dm | 70 +++++++++++++++++++++++- code/game/area/asteroid_areas.dm | 2 +- code/game/sound.dm | 13 +++-- code/modules/holodeck/HolodeckControl.dm | 2 + 4 files changed, 79 insertions(+), 8 deletions(-) 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") From 769577516cca0bd8f6902d67474edfdb227df487 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Sat, 27 Jun 2015 03:57:21 +1000 Subject: [PATCH 2/3] Changelog update --- html/changelogs/RavingManiac-PR-9942.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/RavingManiac-PR-9942.yml diff --git a/html/changelogs/RavingManiac-PR-9942.yml b/html/changelogs/RavingManiac-PR-9942.yml new file mode 100644 index 0000000000..fcb1b8bc6c --- /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 in low-pressure or vacuum will alter sounds you hear" + - rscadd: "Sound environment in holodeck will change to reflect the loaded program" From 389b3fdf74ed5925699120796724b428952383be Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Sat, 27 Jun 2015 15:33:01 +1000 Subject: [PATCH 3/3] Changed the way sound environments are defined. More tweaks to sound environments. Hallucination, drugging and dizziness affect sound environment --- code/game/area/Space Station 13 areas.dm | 19 +------- code/game/area/asteroid_areas.dm | 2 +- code/game/sound.dm | 61 +++++++++++++++++++++++- html/changelogs/RavingManiac-PR-9942.yml | 2 +- 4 files changed, 62 insertions(+), 22 deletions(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 7a8a669f4f..9787803d0e 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -13,24 +13,6 @@ 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 @@ -1015,6 +997,7 @@ area/space/atmosalert() /area/library name = "\improper Library" icon_state = "library" + sound_env = LARGE_SOFTFLOOR /area/chapel/main name = "\improper Chapel" diff --git a/code/game/area/asteroid_areas.dm b/code/game/area/asteroid_areas.dm index 9783a2fe22..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 = 8 //cave + sound_env = ASTEROID /area/mine/explored name = "Mine" diff --git a/code/game/sound.dm b/code/game/sound.dm index 76ae32b0e0..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') @@ -90,8 +128,27 @@ var/const/FALLOFF_SOUNDS = 0.5 S.falloff = (falloff ? falloff : FALLOFF_SOUNDS) if(!is_global) - if (pressure_factor < 0.5) - S.environment = 22 //underwater + + 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 diff --git a/html/changelogs/RavingManiac-PR-9942.yml b/html/changelogs/RavingManiac-PR-9942.yml index fcb1b8bc6c..b30712e423 100644 --- a/html/changelogs/RavingManiac-PR-9942.yml +++ b/html/changelogs/RavingManiac-PR-9942.yml @@ -2,5 +2,5 @@ author: RavingManiac delete-after: True changes: - tweak: "Sound environments tweaked to feel more claustrophobic" - - rscadd: "Being in low-pressure or vacuum will alter sounds you hear" + - 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"