From 9594a65526f089034ff89da3641c19cd43a7eaff Mon Sep 17 00:00:00 2001 From: QuoteFox <49098813+quotefox@users.noreply.github.com> Date: Tue, 23 Mar 2021 10:03:03 +0000 Subject: [PATCH] areas now have reverbs --- code/__DEFINES/sound.dm | 53 +++++++++++++-- code/datums/diseases/heart_failure.dm | 4 +- code/datums/status_effects/buffs.dm | 4 +- code/game/area/Space_Station_13_areas.dm | 68 ++++++++++++++++++- code/game/area/ai_monitored.dm | 1 + code/game/area/areas.dm | 3 + code/game/area/areas/away_content.dm | 1 + code/game/area/areas/holodeck.dm | 1 + code/game/area/areas/mining.dm | 2 + code/game/area/areas/ruins/_ruins.dm | 1 + code/game/area/areas/shuttles.dm | 1 + code/game/sound.dm | 41 ++++++++++- .../modules/mob/living/carbon/status_procs.dm | 2 + code/modules/mob/mob_defines.dm | 3 + 14 files changed, 173 insertions(+), 12 deletions(-) diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 581bb2bc..ce21da39 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -5,10 +5,10 @@ #define CHANNEL_JUKEBOX 1021 #define CHANNEL_JUKEBOX_START 1016 //The gap between this and CHANNEL_JUKEBOX determines the amount of free jukebox channels. This currently allows 6 jukebox channels to exist. #define CHANNEL_JUSTICAR_ARK 1015 -#define CHANNEL_HEARTBEAT 1014 //sound channel for heartbeats -#define CHANNEL_AMBIENCE 1013 -#define CHANNEL_BUZZ 1012 -#define CHANNEL_BICYCLE 1011 +#define CHANNEL_HEARTBEAT 1020 //sound channel for heartbeats +#define CHANNEL_AMBIENCE 1019 +#define CHANNEL_BUZZ 1018 +#define CHANNEL_BICYCLE 1017 //CIT CHANNELS - TRY NOT TO REGRESS #define CHANNEL_PRED 1010 @@ -79,3 +79,48 @@ 'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg', 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\ 'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg', 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\ 'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg', 'sound/hallucinations/veryfar_noise.ogg', 'sound/hallucinations/wail.ogg') + + +//default byond sound environments +#define SOUND_ENVIRONMENT_NONE -1 +#define SOUND_ENVIRONMENT_GENERIC 0 +#define SOUND_ENVIRONMENT_PADDED_CELL 1 +#define SOUND_ENVIRONMENT_ROOM 2 +#define SOUND_ENVIRONMENT_BATHROOM 3 +#define SOUND_ENVIRONMENT_LIVINGROOM 4 +#define SOUND_ENVIRONMENT_STONEROOM 5 +#define SOUND_ENVIRONMENT_AUDITORIUM 6 +#define SOUND_ENVIRONMENT_CONCERT_HALL 7 +#define SOUND_ENVIRONMENT_CAVE 8 +#define SOUND_ENVIRONMENT_ARENA 9 +#define SOUND_ENVIRONMENT_HANGAR 10 +#define SOUND_ENVIRONMENT_CARPETED_HALLWAY 11 +#define SOUND_ENVIRONMENT_HALLWAY 12 +#define SOUND_ENVIRONMENT_STONE_CORRIDOR 13 +#define SOUND_ENVIRONMENT_ALLEY 14 +#define SOUND_ENVIRONMENT_FOREST 15 +#define SOUND_ENVIRONMENT_CITY 16 +#define SOUND_ENVIRONMENT_MOUNTAINS 17 +#define SOUND_ENVIRONMENT_QUARRY 18 +#define SOUND_ENVIRONMENT_PLAIN 19 +#define SOUND_ENVIRONMENT_PARKING_LOT 20 +#define SOUND_ENVIRONMENT_SEWER_PIPE 21 +#define SOUND_ENVIRONMENT_UNDERWATER 22 +#define SOUND_ENVIRONMENT_DRUGGED 23 +#define SOUND_ENVIRONMENT_DIZZY 24 +#define SOUND_ENVIRONMENT_PSYCHOTIC 25 +//If we ever make custom ones add them here + +//"sound areas": easy way of keeping different types of areas consistent. +#define SOUND_AREA_STANDARD_STATION SOUND_ENVIRONMENT_PARKING_LOT +#define SOUND_AREA_LARGE_ENCLOSED SOUND_ENVIRONMENT_QUARRY +#define SOUND_AREA_SMALL_ENCLOSED SOUND_ENVIRONMENT_BATHROOM +#define SOUND_AREA_TUNNEL_ENCLOSED SOUND_ENVIRONMENT_STONEROOM +#define SOUND_AREA_LARGE_SOFTFLOOR SOUND_ENVIRONMENT_CARPETED_HALLWAY +#define SOUND_AREA_MEDIUM_SOFTFLOOR SOUND_ENVIRONMENT_LIVINGROOM +#define SOUND_AREA_SMALL_SOFTFLOOR SOUND_ENVIRONMENT_ROOM +#define SOUND_AREA_ASTEROID SOUND_ENVIRONMENT_CAVE +#define SOUND_AREA_SPACE SOUND_ENVIRONMENT_UNDERWATER +#define SOUND_AREA_LAVALAND SOUND_ENVIRONMENT_MOUNTAINS +#define SOUND_AREA_ICEMOON SOUND_ENVIRONMENT_CAVE +#define SOUND_AREA_WOODFLOOR SOUND_ENVIRONMENT_CITY \ No newline at end of file diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index 196cd95f..19beb4b3 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -37,7 +37,7 @@ to_chat(H, "You feel [pick("full", "nauseated", "sweaty", "weak", "tired", "short on breath", "uneasy")].") if(3 to 4) if(!sound) - H.playsound_local(H, 'sound/health/slowbeat.ogg',40,0, channel = CHANNEL_HEARTBEAT) + H.playsound_local(H, 'sound/health/slowbeat.ogg',channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) sound = TRUE if(prob(3)) to_chat(H, "You feel a sharp pain in your chest!") @@ -53,7 +53,7 @@ H.emote("cough") if(5) H.stop_sound_channel(CHANNEL_HEARTBEAT) - H.playsound_local(H, 'sound/effects/singlebeat.ogg', 100, 0) + H.playsound_local(H, 'sound/effects/singlebeat.ogg', 100, FALSE, use_reverb = FALSE) if(H.stat == CONSCIOUS) H.visible_message("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!") H.adjustStaminaLoss(60) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 77735847..af0230ea 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -307,7 +307,7 @@ last_staminaloss = owner.getStaminaLoss() owner.log_message("gained blood-drunk stun immunity", LOG_ATTACK) owner.add_stun_absorption("blooddrunk", INFINITY, 4) - owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, 1) + owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, 1, use_reverb = FALSE) /datum/status_effect/blooddrunk/tick() //multiply the effect of healing by 10 if(owner.health > last_health) @@ -362,7 +362,7 @@ if(needs_health_update) owner.updatehealth() - owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, 1) + owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, 1, use_reverb = FALSE) last_health = owner.health /datum/status_effect/blooddrunk/on_remove() diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 8e1ec730..93618597 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -43,6 +43,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station outdoors = TRUE ambientsounds = SPACE blob_allowed = FALSE //Eating up space doesn't count for victory as a blob. + sound_environment = SOUND_AREA_SPACE /area/space/nearstation icon_state = "space_near" @@ -66,6 +67,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station blob_allowed = FALSE //Nope, no winning on the asteroid as a blob. Gotta eat the station. valid_territory = FALSE ambientsounds = MINING + sound_environment = SOUND_AREA_ASTEROID /area/asteroid/nearstation dynamic_lighting = DYNAMIC_LIGHTING_FORCED @@ -73,6 +75,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station always_unpowered = FALSE requires_power = TRUE blob_allowed = TRUE + sound_environment = SOUND_AREA_TUNNEL_ENCLOSED /area/asteroid/nearstation/bomb_site name = "Bomb Testing Asteroid" @@ -122,6 +125,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/maintenance/department/crew_quarters/dorms name = "Dormitory Maintenance" icon_state = "maint_dorms" + sound_environment = SOUND_AREA_WOODFLOOR /area/maintenance/department/crew_quarters/locker name = "Locker Room Maintenance" @@ -254,6 +258,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station //Hallway +/area/hallway + sound_environment = SOUND_AREA_STANDARD_STATION + /area/hallway/primary/aft name = "Aft Primary Hallway" icon_state = "hallA" @@ -320,29 +327,35 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Bridge" icon_state = "bridge" music = "signal" + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/bridge/meeting_room name = "Heads of Staff Meeting Room" icon_state = "meeting" music = null + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/bridge/meeting_room/council name = "Council Chamber" icon_state = "meeting" music = null + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/bridge/showroom/corporate name = "Corporate Showroom" icon_state = "showroom" music = null + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/crew_quarters/heads/captain name = "Captain's Office" icon_state = "captain" + sound_environment = SOUND_AREA_WOODFLOOR /area/crew_quarters/heads/captain/private name = "Captain's Quarters" icon_state = "captain" + sound_environment = SOUND_AREA_WOODFLOOR /area/crew_quarters/heads/chief name = "Chief Engineer's Office" @@ -387,12 +400,16 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/comms name = "Communications Relay" icon_state = "tcomsatcham" + sound_environment = SOUND_AREA_STANDARD_STATION /area/server name = "Messaging Server Room" icon_state = "server" + sound_environment = SOUND_AREA_STANDARD_STATION //Crew +/area/crew_quarters + sound_environment = SOUND_AREA_STANDARD_STATION /area/crew_quarters/dorms name = "Dormitories" @@ -414,6 +431,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/toilet name = "Dormitory Toilets" icon_state = "toilet" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/crew_quarters/toilet/auxiliary name = "Auxiliary Restrooms" @@ -446,6 +464,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/lounge name = "Lounge" icon_state = "yellow" + sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/crew_quarters/fitness name = "Fitness Room" @@ -470,14 +489,17 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/kitchen/backroom name = "Kitchen Coldroom" icon_state = "kitchen" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/crew_quarters/bar name = "Bar" icon_state = "bar" + sound_environment = SOUND_AREA_WOODFLOOR /area/crew_quarters/bar/atrium name = "Atrium" icon_state = "bar" + sound_environment = SOUND_AREA_WOODFLOOR /area/crew_quarters/electronic_marketing_den name = "Electronic Marketing Den" @@ -493,6 +515,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/theatre name = "Theatre" icon_state = "Theatre" + sound_environment = SOUND_AREA_WOODFLOOR /area/crew_quarters/theatre/abandoned name = "Abandoned Theatre" @@ -502,10 +525,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Library" icon_state = "library" flags_1 = NONE + sound_environment = SOUND_AREA_LARGE_SOFTFLOOR /area/library/lounge name = "Library Lounge" icon_state = "library" + sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/library/abandoned name = "Abandoned Library" @@ -521,9 +546,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/chapel/main name = "Chapel" + sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/chapel/main/monastery name = "Monastery" + sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/chapel/office name = "Chapel Office" @@ -549,6 +576,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/engine ambientsounds = ENGINEERING + sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/engine/engine_smes name = "Engineering SMES" @@ -566,14 +594,17 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/engine/atmospherics_engine name = "Atmospherics Engine" icon_state = "atmos_engine" + sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/engine/supermatter name = "Supermatter Engine" icon_state = "engine_sm" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/engine/break_room name = "Engineering Foyer" icon_state = "engine_foyer" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/engine/gravity_generator name = "Gravity Generator Room" @@ -588,10 +619,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/engine/storage name = "Engineering Storage" icon_state = "engi_storage" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/engine/storage_shared name = "Shared Engineering Storage" icon_state = "engi_storage" + sound_environment = SOUND_AREA_SPACE /area/engine/transit_tube name = "Transit Tube" @@ -611,6 +644,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/solar/fore name = "Fore Solar Array" icon_state = "yellow" + sound_environment = SOUND_AREA_STANDARD_STATION /area/solar/aft name = "Aft Solar Array" @@ -716,6 +750,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "gateway" music = "signal" ambientsounds = ENGINEERING + sound_environment = SOUND_AREA_STANDARD_STATION //MedBay @@ -723,16 +758,19 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Medical" icon_state = "medbay3" ambientsounds = MEDICAL + sound_environment = SOUND_AREA_STANDARD_STATION /area/medical/abandoned name = "Abandoned Medbay" icon_state = "medbay3" music = 'sound/ambience/signal.ogg' + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/medical/medbay/central name = "Medbay Central" icon_state = "medbay" music = 'sound/ambience/signal.ogg' + sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/medical/medbay/front_office name = "Medbay Front Office" @@ -787,6 +825,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Morgue" icon_state = "morgue" ambientsounds = SPOOKY + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/medical/chemistry name = "Chemistry" @@ -823,6 +862,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Security" icon_state = "security" ambientsounds = HIGHSEC + sound_environment = SOUND_AREA_STANDARD_STATION /area/security/main name = "Security Office" @@ -835,10 +875,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/security/courtroom name = "Courtroom" icon_state = "courtroom" + sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/security/prison name = "Prison Wing" icon_state = "sec_prison" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/security/processing name = "Labor Shuttle Dock" @@ -851,6 +893,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/security/warden name = "Brig Control" icon_state = "Warden" + sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/security/armory name = "Armory" @@ -860,6 +903,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Detective's Office" icon_state = "detective" ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg') + sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/security/detectives_office/private_investigators_office name = "Private Investigator's Office" @@ -941,16 +985,19 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/quartermaster name = "Quartermasters" icon_state = "quart" + sound_environment = SOUND_AREA_STANDARD_STATION ///////////WORK IN PROGRESS////////// /area/quartermaster/sorting name = "Delivery Office" icon_state = "cargo_delivery" + sound_environment = SOUND_AREA_STANDARD_STATION /area/quartermaster/warehouse name = "Warehouse" icon_state = "cargo_warehouse" + sound_environment = SOUND_AREA_LARGE_ENCLOSED ////////////WORK IN PROGRESS////////// @@ -961,10 +1008,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/quartermaster/storage name = "Cargo Bay" icon_state = "cargo_bay" + sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/quartermaster/qm name = "Quartermaster's Office" icon_state = "quart" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/quartermaster/qm/private name = "Quartermaster's Private Quarters" @@ -994,6 +1043,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/hydroponics name = "Hydroponics" icon_state = "hydro" + sound_environment = SOUND_AREA_STANDARD_STATION /area/hydroponics/garden name = "Garden" @@ -1002,10 +1052,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/hydroponics/garden/abandoned name = "Abandoned Garden" icon_state = "abandoned_garden" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/hydroponics/garden/monastery name = "Monastery Garden" icon_state = "hydro" + sound_environment = SOUND_AREA_STANDARD_STATION //Science @@ -1017,6 +1069,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/science/lab name = "Research and Development" icon_state = "toxlab" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/science/xenobiology name = "Xenobiology Lab" @@ -1101,6 +1154,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "toxmisc" //Storage +/area/storage + sound_environment = SOUND_AREA_STANDARD_STATION /area/storage/tools name = "Auxiliary Tool Storage" @@ -1166,6 +1221,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Construction Area" icon_state = "yellow" ambientsounds = ENGINEERING + sound_environment = SOUND_AREA_STANDARD_STATION /area/construction/minisat_exterior name = "Minisat Exterior" @@ -1174,6 +1230,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/construction/mining/aux_base name = "Auxiliary Base Construction" icon_state = "yellow" + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/construction/mining/aux_base/closet name = "Auxiliary Closet Construction" @@ -1214,6 +1271,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station //AI +/area/ai_monitored + sound_environment = SOUND_AREA_STANDARD_STATION + /area/ai_monitored/security/armory name = "Armory" icon_state = "armory" @@ -1237,14 +1297,17 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/ai_monitored/turret_protected/ai_upload name = "AI Upload Chamber" icon_state = "ai_upload" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/ai_monitored/turret_protected/ai_upload_foyer name = "AI Upload Access" icon_state = "ai_foyer" + sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/ai_monitored/turret_protected/ai name = "AI Chamber" icon_state = "ai_chamber" + sound_environment = SOUND_ENVIRONMENT_ROOM /area/ai_monitored/turret_protected/aisat name = "AI Satellite" @@ -1326,6 +1389,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/tcommsat/computer name = "Telecomms Control Room" icon_state = "tcomsatcomp" + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/tcommsat/server name = "Telecomms Server Room" @@ -1361,11 +1425,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/xenoarch/sec name = "Xenoarchaeology Security" - icon_state = "xenosec" + icon_state = "xenosec" /area/xenoarch/med name = "Xenoarchaeology Medical" - icon_state = "xenomed" + icon_state = "xenomed" //Pool /area/crew_quarters/fitness/pool diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm index 87b44291..ee8012af 100644 --- a/code/game/area/ai_monitored.dm +++ b/code/game/area/ai_monitored.dm @@ -3,6 +3,7 @@ clockwork_warp_allowed = FALSE var/list/obj/machinery/camera/motioncameras = list() var/list/datum/weakref/motionTargets = list() + sound_environment = SOUND_ENVIRONMENT_ROOM /area/ai_monitored/Initialize(mapload) . = ..() diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 544d7983..ab693fae 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -70,6 +70,9 @@ var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default? var/list/canSmoothWithAreas //typecache to limit the areas that atoms in this area can smooth with + ///Used to decide what kind of reverb the area makes sound have + var/sound_environment = SOUND_ENVIRONMENT_NONE + /*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*/ GLOBAL_LIST_EMPTY(teleportlocs) diff --git a/code/game/area/areas/away_content.dm b/code/game/area/areas/away_content.dm index b724c926..bb3182ee 100644 --- a/code/game/area/areas/away_content.dm +++ b/code/game/area/areas/away_content.dm @@ -9,6 +9,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30" icon_state = "away" has_gravity = STANDARD_GRAVITY ambientsounds = AWAY_MISSION + sound_environment = SOUND_ENVIRONMENT_ROOM /area/awaymission/beach name = "Beach" diff --git a/code/game/area/areas/holodeck.dm b/code/game/area/areas/holodeck.dm index 10e3249d..497b51eb 100644 --- a/code/game/area/areas/holodeck.dm +++ b/code/game/area/areas/holodeck.dm @@ -4,6 +4,7 @@ dynamic_lighting = DYNAMIC_LIGHTING_DISABLED flags_1 = 0 hidden = TRUE + sound_environment = SOUND_ENVIRONMENT_PADDED_CELL var/obj/machinery/computer/holodeck/linked var/restricted = 0 // if true, program goes on emag list diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index 6497ca54..908c83d7 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -17,6 +17,7 @@ outdoors = TRUE flags_1 = NONE ambientsounds = MINING + sound_environment = SOUND_AREA_STANDARD_STATION /area/mine/unexplored name = "Mine" @@ -31,6 +32,7 @@ outdoors = TRUE flags_1 = NONE ambientsounds = MINING + sound_environment = SOUND_AREA_LAVALAND /area/mine/lobby name = "Mining Station" diff --git a/code/game/area/areas/ruins/_ruins.dm b/code/game/area/areas/ruins/_ruins.dm index b97c3f0e..17ba4f77 100644 --- a/code/game/area/areas/ruins/_ruins.dm +++ b/code/game/area/areas/ruins/_ruins.dm @@ -7,6 +7,7 @@ hidden = TRUE dynamic_lighting = DYNAMIC_LIGHTING_FORCED ambientsounds = RUINS + sound_environment = SOUND_ENVIRONMENT_STONEROOM /area/ruin/unpowered diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index ab4fa10d..99dc1afc 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -12,6 +12,7 @@ icon_state = "shuttle" // Loading the same shuttle map at a different time will produce distinct area instances. unique = FALSE + sound_environment = SOUND_ENVIRONMENT_ROOM /area/shuttle/Initialize() if(!canSmoothWithAreas) diff --git a/code/game/sound.dm b/code/game/sound.dm index 11e02610..d2c6f165 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -1,4 +1,29 @@ -/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE, soundenvwet = -10000, soundenvdry = 0) +///Default override for echo +/sound + echo = list( + 0, // Direct + 0, // DirectHF + -10000, // Room, -10000 means no low frequency sound reverb + -10000, // RoomHF, -10000 means no high frequency sound reverb + 0, // Obstruction + 0, // ObstructionLFRatio + 0, // Occlusion + 0.25, // OcclusionLFRatio + 1.5, // OcclusionRoomRatio + 1.0, // OcclusionDirectRatio + 0, // Exclusion + 1.0, // ExclusionLFRatio + 0, // OutsideVolumeHF + 0, // DopplerFactor + 0, // RolloffFactor + 0, // RoomRolloffFactor + 1.0, // AirAbsorptionFactor + 0, // Flags (1 = Auto Direct, 2 = Auto Room, 4 = Auto RoomHF) + ) + environment = SOUND_ENVIRONMENT_NONE //Default to none so sounds without overrides dont get reverb + + +/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE, soundenvwet = -10000, soundenvdry = 0, use_reverb = TRUE) if(isarea(source)) throw EXCEPTION("playsound(): source is an area") return @@ -27,7 +52,7 @@ if(get_dist(M, turf_source) <= maxdistance) M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry) -/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S, envwet = -10000, envdry = 0, manual_x, manual_y) +/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S, envwet = -10000, envdry = 0, manual_x, manual_y, use_reverb = TRUE) if(audiovisual_redirect) var/turf/T = get_turf(src) audiovisual_redirect.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, 0, -1000, turf_source.x - T.x, turf_source.y - T.y) @@ -98,6 +123,18 @@ S.y = 1 S.falloff = (falloff ? falloff : FALLOFF_SOUNDS) + if(S.environment == SOUND_ENVIRONMENT_NONE) + if(sound_environment_override != SOUND_ENVIRONMENT_NONE) + S.environment = sound_environment_override + else + var/area/A = get_area(src) + if(A.sound_environment != SOUND_ENVIRONMENT_NONE) + S.environment = A.sound_environment + + if(use_reverb && S.environment != SOUND_ENVIRONMENT_NONE) //We have reverb, reset our echo setting + S.echo[3] = 0 //Room setting, 0 means normal reverb + S.echo[4] = 0 //RoomHF setting, 0 means normal reverb. + SEND_SOUND(src, S) /proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, falloff = FALSE, channel = 0, pressure_affected = FALSE, sound/S) diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index 766bd376..353e196f 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -46,10 +46,12 @@ overlay_fullscreen("high", /obj/screen/fullscreen/high) throw_alert("high", /obj/screen/alert/high) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/high) + sound_environment_override = SOUND_ENVIRONMENT_DRUGGED else clear_fullscreen("high") clear_alert("high") SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "high") + sound_environment_override = SOUND_ENVIRONMENT_NONE /mob/living/carbon/set_drugginess(amount) druggy = max(amount, 0) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index ed901ee6..a63b569e 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -129,6 +129,9 @@ ///Whether the mob is updating glide size when movespeed updates or not var/updating_glide_size = TRUE + ///Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb) + var/sound_environment_override = SOUND_ENVIRONMENT_NONE + var/flavor_text = "" var/ooc_text = "" var/flavor_text_2 = "" //version of the above that only lasts for the current round.