diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 60544c3b735..9df84ba0c71 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -64,6 +64,11 @@ var/station_area = FALSE var/centcomm_area = FALSE + /// A text-based description of the area, can be used for sounds, notable things in the room, etc. + var/area_blurb + /// This list of ckeys is here to make sure we don't state our descriptive blurb to a person more than once. + var/list/blurbed_stated_to = list() + // Don't move this to Initialize(). Things in here need to run before SSatoms does. /area/New() // DMMS hook - Required for areas to work properly. @@ -312,6 +317,7 @@ var/list/mob/living/forced_ambiance_list = new // Stop playing music. else stop_music(L) + do_area_blurb(L) // Play Ambience /area/proc/play_ambience(var/mob/living/L) @@ -466,6 +472,43 @@ var/list/mob/living/forced_ambiance_list = new for(var/obj/machinery/M in T) M.shuttle_move(T) +/** +* Displays an area blurb on a mob's screen. +* +* Areas with blurbs set [/area/var/area_blurb] will display their blurb. Otherwise no blurb will be shown. Contains checks to avoid duplicate blurbs, pass the `override` variable to bypass this. If passed when an area has no blurb, will show a generic "no blurb" message. +* +* * `target_mob` - The mob to show an area blurb. +* * `override` - Pass `TRUE` to override duplicate checks, for usage with verbs etc. +*/ +/area/proc/do_area_blurb(mob/living/target_mob, override) + if(isnull(area_blurb)) + if(override) + to_chat(target_mob, SPAN_NOTICE("No blurb set for this area.")) + return + + if(!(target_mob.ckey in blurbed_stated_to) || override) + blurbed_stated_to |= target_mob.ckey + to_chat(target_mob, SPAN_NOTICE("[area_blurb]")) + +/// A verb to view an area's blurb on demand. Overrides the check for if you have seen the blurb before so you can always see it when used. +/mob/living/verb/show_area_blurb() + set name = "Show area blurb" + set category = "IC" + + if(!incapacitated(INCAPACITATION_KNOCKOUT)) + var/area/blurb_verb = get_area(src) + if(blurb_verb) + blurb_verb.do_area_blurb(src, TRUE) + +/// A ghost version of the view area blurb verb so you can view it while observing. +/mob/abstract/observer/verb/ghost_show_area_blurb() + set name = "Show area blurb" + set category = "IC" + + var/area/blurb_verb = get_area(src) + if(blurb_verb) + blurb_verb.do_area_blurb(src, TRUE) + #undef VOLUME_AMBIENCE #undef VOLUME_AMBIENT_HUM #undef VOLUME_MUSIC diff --git a/html/changelogs/greenjoe12345 - areablurb.yml b/html/changelogs/greenjoe12345 - areablurb.yml new file mode 100644 index 00000000000..eec2cd86dfd --- /dev/null +++ b/html/changelogs/greenjoe12345 - areablurb.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: greenjoe12345 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Adds a system for adding blurbs to areas, little bits of flavor text that that play as you enter for the first time." diff --git a/maps/_common/areas/station/command.dm b/maps/_common/areas/station/command.dm index 0e61736c37a..ccb67d7f30e 100644 --- a/maps/_common/areas/station/command.dm +++ b/maps/_common/areas/station/command.dm @@ -6,6 +6,7 @@ no_light_control = 1 station_area = 1 holomap_color = HOLOMAP_AREACOLOR_COMMAND + area_blurb = "The sound here seems to carry more than others, every click of a shoe or clearing of a throat amplified. The smell of ink wafts notably through the air." /area/bridge/minibar name = "Command Break Room" @@ -41,6 +42,7 @@ icon_state = "bridge" ambience = list() sound_env = MEDIUM_SOFTFLOOR + area_blurb = "A place for behind-closed-doors meetings to get things done, or argue for hours in..." /area/bridge/selfdestruct name = "Command - Station Authentication Terminal Safe" @@ -48,6 +50,7 @@ /area/bridge/controlroom // Horizon. name = "Command - Control Room" + area_blurb = "The full expanse of space lies beyond a thick pane of glass, all that protects you from a cold death. The computers all hum with various displays and holographic signs, overwhelming if you were not used to such an environment. Even at full power, the sensors fail to map even a fraction of the dots of light making up the cosmic filament." area_flags = AREA_FLAG_RAD_SHIELDED /area/crew_quarters/captain diff --git a/maps/_common/areas/station/engineering.dm b/maps/_common/areas/station/engineering.dm index de076a99df1..6433325d540 100644 --- a/maps/_common/areas/station/engineering.dm +++ b/maps/_common/areas/station/engineering.dm @@ -14,6 +14,7 @@ sound_env = LARGE_ENCLOSED no_light_control = 1 ambience = list(AMBIENCE_ENGINEERING, AMBIENCE_ATMOS) + area_blurb = "Many tanks are here, providing life support systems for the vessel." /area/engineering/atmos/monitoring name = "Engineering - Atmospherics Monitoring Room" @@ -94,6 +95,7 @@ name = "Engineering - Break Room" icon_state = "engineering_break" sound_env = MEDIUM_SOFTFLOOR + area_blurb = "The smells of coffee and motor oil linger in the air." /area/engineering/engine_eva name = "Engineering - Engine EVA" diff --git a/maps/_common/areas/station/maintenance.dm b/maps/_common/areas/station/maintenance.dm index 116f5628a16..ae9edca3965 100644 --- a/maps/_common/areas/station/maintenance.dm +++ b/maps/_common/areas/station/maintenance.dm @@ -6,6 +6,7 @@ turf_initializer = new /datum/turf_initializer/maintenance() ambience = AMBIENCE_MAINTENANCE station_area = 1 + area_blurb = "Dark, tight, and filled with barely filtered air. This place feels alien compared to the interior of the ship, a place where one could get lost or badly hurt. Around you hisses compressed air through pipes, a buzz of electrical charge through wires, and rumbles of the hull settling through damp maintenance corridors." /area/maintenance/civ name = "Civilian Maintenance" @@ -253,6 +254,7 @@ icon_state = "substation" sound_env = SMALL_ENCLOSED ambience = AMBIENCE_SUBSTATION + area_blurb = "Clearly a substation, designed to downgrade voltage to departments in case of electrical hazards, and to act as an emergency battery in case of engine failure. Unlike the maintenance corridors, these stations are far less dusty." /area/maintenance/substation/engineering // Engineering name = "Engineering Substation" diff --git a/maps/_common/areas/station/medical.dm b/maps/_common/areas/station/medical.dm index d73cf8b7c28..11877aad69b 100644 --- a/maps/_common/areas/station/medical.dm +++ b/maps/_common/areas/station/medical.dm @@ -12,6 +12,7 @@ lightswitch = TRUE icon_state = "medbay" ambience = list('sound/ambience/signal.ogg') + area_blurb = "The smells of a hospital waft through the air: strong sterilizing agents, various medicines, and sterile gloves. It's not a pleasant smell, but one you could grow to ignore." /area/medical/medbay2 name = "Medbay Hallway - Starboard" @@ -52,6 +53,7 @@ /area/medical/psych name = "Medical - Psych Room" icon_state = "medbay3" + area_blurb = "With wooden floors and carpets, this room has a warmer feeling compared to the sterility of the rest of the medical wing." /area/medical/upperlevel name = "Medical - Upper-Level Hallway" @@ -124,6 +126,7 @@ name = "Medical - Long-term Morgue" icon_state = "morgue" ambience = AMBIENCE_GHOSTLY + area_blurb = "Morgue trays sit within this room to hold the deceased until their postmortem wishes can be attended to." /area/medical/pharmacy name = "Medical - Pharmacy" @@ -179,6 +182,7 @@ /area/medical/icu name = "Medical - Intensive Care Unit" icon_state = "cryo" + area_blurb = "The sounds of life support equipment can be heard within the room." /area/medical/triage name = "Medical - Triage Room" diff --git a/maps/_common/areas/telecomms.dm b/maps/_common/areas/telecomms.dm index e294769592a..fd9239518d2 100644 --- a/maps/_common/areas/telecomms.dm +++ b/maps/_common/areas/telecomms.dm @@ -15,6 +15,7 @@ /area/tcommsat/chamber name = "Telecoms Central Compartment" icon_state = "tcomsatcham" + area_blurb = "Countless machines sit here, an unfathomably complicated network that runs every radio and computer connection. The air lacks any notable scent, so filtered of dust or pollutants before being allowed into the sensitive machinery." /area/turret_protected/tcomsat name = "Telecoms Exterior" diff --git a/maps/away/away_site/blueriver/blueriver_areas.dm b/maps/away/away_site/blueriver/blueriver_areas.dm index 33dfd50e3be..3c16a83845c 100644 --- a/maps/away/away_site/blueriver/blueriver_areas.dm +++ b/maps/away/away_site/blueriver/blueriver_areas.dm @@ -4,6 +4,7 @@ icon = 'maps/away/away_site/blueriver/blueriver.dmi' ambience = list('sound/effects/wind/spooky0.ogg','sound/effects/wind/spooky1.ogg') sound_env = ASTEROID + area_blurb = "A strange, glowing blue river can be seen flowing through the cave. In it you can see yourself touching it, becoming one with it. As you see that image, smells of the past, of pleasant memories waft through the air. For just a flicker of a second you consider it before common sense kicks in. This is unnatural, this is wrong. Touching that is a horrible idea." /area/bluespaceriver/ground name = "\improper Arctic Planet Surface" diff --git a/maps/away/away_site/konyang/point_verdant/point_verdant_areas.dm b/maps/away/away_site/konyang/point_verdant/point_verdant_areas.dm index 4ecb14f3864..efd4e59b371 100644 --- a/maps/away/away_site/konyang/point_verdant/point_verdant_areas.dm +++ b/maps/away/away_site/konyang/point_verdant/point_verdant_areas.dm @@ -14,6 +14,7 @@ /area/point_verdant/coast name = "Point Verdant - Waterside" ambience = AMBIENCE_KONYANG_WATER + area_blurb = "The crashing sounds of waves on the shore punctuates the air. The vast ocean spreads out as far as the eye can see, looking almost flat." /area/point_verdant/reservoir name = "Point Verdant - Reservoir" @@ -23,6 +24,7 @@ /area/point_verdant/sewer name = "Point Verdant - Sewers" sound_env = SEWER_PIPE + area_blurb = "Tainted water flows through these dark and grimy sewers, it smells utterly horrible down here. It's best not to think what you are breathing in, or touching." //All walls and interior stuff uses this area, otherwise rain will appear over walls. suboptimal! /area/point_verdant/interior @@ -46,6 +48,7 @@ /area/point_verdant/interior/arcade name = "Point Verdant - Arcade" + area_blurb = "The deafening avalanche of arcade machines begging for your attention fill the air, all promising fantastic gaming experiences for fun and prizes." /area/point_verdant/interior/police name = "Point Verdant - Police Department" @@ -62,6 +65,7 @@ /area/point_verdant/interior/decrepit name = "Point Verdant - Decrepit Apartments" + area_blurb = "A damp smell lingers in the air inside these dusty apartments, it might be wise to keep an eye out for mould." /area/point_verdant/interior/pharmacy name = "Point Verdant - Pharmacy" @@ -81,6 +85,7 @@ /area/point_verdant/interior/tunnels name = "Point Verdant - Tunnels" + area_blurb = "Sounds echo impressively through these tunnels." /area/point_verdant/interior/shallow//For open-walled areas, like awnings and balconies sound_env = CITY @@ -90,6 +95,7 @@ /area/point_verdant/outdoors name = "Point Verdant - Outdoors" ambience = AMBIENCE_KONYANG_RAIN + area_blurb = "The sounds and smells of Point Verdant bombard you from all directions. Skyscrapers tower up further into the city. Rain batters down on your body, encouraging you to seek shelter." //alter this if a dynamic weather system is added, so its isn't always raining. /area/point_verdant/outdoors/Initialize() . = ..() diff --git a/maps/sccv_horizon/code/sccv_horizon_areas.dm b/maps/sccv_horizon/code/sccv_horizon_areas.dm index 1692f4c03ae..527c8d7eed3 100644 --- a/maps/sccv_horizon/code/sccv_horizon_areas.dm +++ b/maps/sccv_horizon/code/sccv_horizon_areas.dm @@ -59,6 +59,7 @@ /area/medical/ward/isolation name = "Medical - Isolation Ward" + area_blurb = "This seldom-used ward somehow smells sterile and musty at the same time." /area/medical/emergency_storage name = "Medical - Lower Deck Emergency Storage" @@ -74,6 +75,7 @@ /area/medical/smoking name = "Medical - Smoking Lounge" + area_blurb = "The smell of cigarette smoke lingers within this room." /area/medical/washroom name = "Medical - Washroom" @@ -118,6 +120,7 @@ /area/hangar/intrepid name = "Intrepid Hangar" + area_blurb = "A big, open room, often housing the Horizon's largest shuttle, the Intrepid." /area/hangar/intrepid/interstitial name = "Intrepid Hangar Access" @@ -155,10 +158,12 @@ name = "Operations Equipment Storage" icon_state = "dark160" sound_env = LARGE_ENCLOSED + area_blurb = "Scuff marks scar the floor from the movement of many crates and stored goods." /area/operations/lower/machinist name = "Machinist Workshop" icon_state = "machinist_workshop" + area_blurb = "The scents of oil and machine lubricant fill the air in this workshop." /area/operations/lobby name = "Operations Lobby" @@ -665,6 +670,7 @@ name = "Horizon - Deck 3 Cafeteria" icon_state = "cafeteria" holomap_color = HOLOMAP_AREACOLOR_CIVILIAN + area_blurb = "The smell of coffee wafts over from the cafe. Patience the tree stands proudly in the centre of the atrium." // Custodial /area/horizon/custodial @@ -674,11 +680,13 @@ sound_env = LARGE_ENCLOSED ambience = list(AMBIENCE_FOREBODING, AMBIENCE_ENGINEERING) holomap_color = HOLOMAP_AREACOLOR_CIVILIAN + area_blurb = "A strong, concentrated smell of many cleaning supplies sits within this room." /area/horizon/custodial/disposals name = "Horizon - Disposals and Recycling" icon_state = "disposal" ambience = list(AMBIENCE_ENGINEERING, AMBIENCE_ATMOS) // Industrial sounds. + area_blurb = "A large trash compactor takes up much of the room, ready to crush the ship's rubbish." /area/horizon/custodial/auxiliary name = "Horizon - Auxiliary Custodial Closet" @@ -821,6 +829,7 @@ icon_state = "zta" sound_env = LARGE_ENCLOSED ambience = AMBIENCE_SINGULARITY + area_blurb = "A gargantuan machine dominates the room, covered in components and moving parts. Its name is befitting of its size." area_flags = AREA_FLAG_HIDE_FROM_HOLOMAP // Longbow