diff --git a/code/__defines/sound.dm b/code/__defines/sound.dm index bd225bde45..fcdb53edd6 100644 --- a/code/__defines/sound.dm +++ b/code/__defines/sound.dm @@ -70,7 +70,9 @@ // Restricted, military, or mercenary aligned locations like the armory, the merc ship/base, BSD, etc. #define AMBIENCE_HIGHSEC list(\ 'sound/ambience/highsec/highsec1.ogg',\ - 'sound/ambience/highsec/highsec2.ogg'\ + 'sound/ambience/highsec/highsec2.ogg',\ + 'sound/ambience/highsec/highsec3.ogg',\ + 'sound/ambience/highsec/highsec4.ogg'\ ) // Ruined structures found on the surface or in the caves. @@ -108,14 +110,19 @@ #define AMBIENCE_GENERIC list(\ 'sound/ambience/generic/generic1.ogg',\ 'sound/ambience/generic/generic2.ogg',\ - 'sound/ambience/generic/generic3.ogg',\ - 'sound/ambience/generic/generic4.ogg'\ + 'sound/ambience/generic/generic3.ogg'\ ) +// 'sound/ambience/generic/generic4.ogg'\ // VOREStation Edit: Comment out entry 4 as this doesn't fit on Virgo, and we have our own weather system. // Sounds of PA announcements, presumably involving shuttles? #define AMBIENCE_ARRIVALS list(\ 'sound/ambience/arrivals/arrivals1.ogg',\ - 'sound/ambience/arrivals/arrivals2.ogg'\ + 'sound/ambience/arrivals/arrivals2.ogg',\ + 'sound/ambience/arrivals/arrivals3.ogg',\ + 'sound/ambience/arrivals/arrivals4.ogg',\ + 'sound/ambience/arrivals/arrivals5.ogg',\ + 'sound/ambience/arrivals/arrivals6.ogg',\ + 'sound/ambience/arrivals/arrivals7.ogg'\ ) // Sounds suitable for being inside dark, tight corridors in the underbelly of the station. @@ -124,7 +131,11 @@ 'sound/ambience/maintenance/maintenance2.ogg',\ 'sound/ambience/maintenance/maintenance3.ogg',\ 'sound/ambience/maintenance/maintenance4.ogg',\ - 'sound/ambience/maintenance/maintenance5.ogg'\ + 'sound/ambience/maintenance/maintenance5.ogg',\ + 'sound/ambience/maintenance/maintenance6.ogg',\ + 'sound/ambience/maintenance/maintenance7.ogg',\ + 'sound/ambience/maintenance/maintenance8.ogg',\ + 'sound/ambience/maintenance/maintenance9.ogg'\ ) // Life support machinery at work, keeping everyone breathing. @@ -136,7 +147,9 @@ // Creepy AI/borg stuff. #define AMBIENCE_AI list(\ - 'sound/ambience/ai/ai1.ogg'\ + 'sound/ambience/ai/ai1.ogg',\ + 'sound/ambience/ai/ai2.ogg',\ + 'sound/ambience/ai/ai3.ogg'\ ) // Peaceful sounds when floating in the void. @@ -179,4 +192,32 @@ // For the memes. #define AMBIENCE_AESTHETIC list(\ 'sound/ambience/vaporwave.ogg'\ + ) + +#define AMBIENCE_OUTPOST list(\ + 'sound/ambience/expoutpost/expoutpost1.ogg',\ + 'sound/ambience/expoutpost/expoutpost2.ogg',\ + 'sound/ambience/expoutpost/expoutpost3.ogg',\ + 'sound/ambience/expoutpost/expoutpost4.ogg'\ + ) + +#define AMBIENCE_SUBSTATION list(\ + 'sound/ambience/substation/substation1.ogg',\ + 'sound/ambience/substation/substation2.ogg'\ + ) + +#define AMBIENCE_HANGAR list(\ + 'sound/ambience/hangar/hangar1.ogg',\ + 'sound/ambience/hangar/hangar2.ogg',\ + 'sound/ambience/hangar/hangar3.ogg',\ + 'sound/ambience/hangar/hangar4.ogg',\ + 'sound/ambience/hangar/hangar5.ogg',\ + 'sound/ambience/hangar/hangar6.ogg'\ + ) + +#define AMBIENCE_ATMOS list(\ + 'sound/ambience/engineering/engineering1.ogg',\ + 'sound/ambience/engineering/engineering2.ogg',\ + 'sound/ambience/engineering/engineering3.ogg',\ + 'sound/ambience/atmospherics/atmospherics1.ogg'\ ) \ No newline at end of file diff --git a/code/__defines/xenoarcheaology.dm b/code/__defines/xenoarcheaology.dm index e4b0a3935a..20781a8356 100644 --- a/code/__defines/xenoarcheaology.dm +++ b/code/__defines/xenoarcheaology.dm @@ -49,6 +49,7 @@ #define DIGSITE_TECHNICAL 4 #define DIGSITE_TEMPLE 5 #define DIGSITE_WAR 6 +#define DIGSITE_MIDDEN 7 #define EFFECT_TOUCH 0 #define EFFECT_AURA 1 diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 7138482301..43a85b6b50 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -205,16 +205,18 @@ var/list/gamemode_cache = list() var/static/enter_allowed = 1 - var/static/use_irc_bot = 0 - var/static/use_node_bot = 0 - var/static/irc_bot_port = 0 - var/static/irc_bot_host = "" - var/static/irc_bot_export = 0 // whether the IRC bot in use is a Bot32 (or similar) instance; Bot32 uses world.Export() instead of nudge.py/libnudge - var/static/main_irc = "" - var/static/admin_irc = "" - var/static/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix - var/static/use_lib_nudge = 0 //Use the C library nudge instead of the python nudge. - var/static/use_overmap = 0 + var/use_irc_bot = 0 + var/use_node_bot = 0 + var/irc_bot_port = 0 + var/irc_bot_host = "" + var/irc_bot_export = 0 // whether the IRC bot in use is a Bot32 (or similar) instance; Bot32 uses world.Export() instead of nudge.py/libnudge + var/main_irc = "" + var/admin_irc = "" + var/python_path = "" //Path to the python executable. Defaults to "python" on windows and "/usr/bin/env python2" on unix + var/use_lib_nudge = 0 //Use the C library nudge instead of the python nudge. + var/use_overmap = 0 + + var/static/list/engine_map // Comma separated list of engines to choose from. Blank means fully random. // Event settings var/static/expected_round_length = 3 * 60 * 60 * 10 // 3 hours @@ -787,6 +789,9 @@ var/list/gamemode_cache = list() if("use_overmap") config.use_overmap = 1 + + if("engine_map") + config.engine_map = splittext(value, ",") /* if("station_levels") using_map.station_levels = text2numlist(value, ";") diff --git a/code/controllers/configuration_vr.dm b/code/controllers/configuration_vr.dm index a91c04e517..a1740212f0 100644 --- a/code/controllers/configuration_vr.dm +++ b/code/controllers/configuration_vr.dm @@ -3,7 +3,6 @@ // /datum/configuration - var/static/list/engine_map // Comma separated list of engines to choose from. Blank means fully random. var/static/time_off = FALSE var/static/pto_job_change = FALSE var/static/limit_interns = -1 //Unlimited by default @@ -42,8 +41,6 @@ config.chat_webhook_url = value if ("chat_webhook_key") config.chat_webhook_key = value - if ("engine_map") - config.engine_map = splittext(value, ",") if ("fax_export_dir") config.fax_export_dir = value if ("items_survive_digestion") diff --git a/code/controllers/subsystems/mapping.dm b/code/controllers/subsystems/mapping.dm index e48b9f557f..b7f14bf74f 100644 --- a/code/controllers/subsystems/mapping.dm +++ b/code/controllers/subsystems/mapping.dm @@ -6,6 +6,12 @@ SUBSYSTEM_DEF(mapping) var/list/map_templates = list() var/dmm_suite/maploader = null + var/obj/effect/landmark/engine_loader/engine_loader + var/list/shelter_templates = list() + +/datum/controller/subsystem/mapping/Recover() + flags |= SS_NO_INIT // Make extra sure we don't initialize twice. + shelter_templates = SSmapping.shelter_templates /datum/controller/subsystem/mapping/Initialize(timeofday) if(subsystem_initialized) @@ -17,7 +23,15 @@ SUBSYSTEM_DEF(mapping) if(config.generate_map) // Map-gen is still very specific to the map, however putting it here should ensure it loads in the correct order. using_map.perform_map_generation() - + + loadEngine() + preloadShelterTemplates() // VOREStation EDIT: Re-enable Shelter Capsules + // Mining generation probably should be here too + // TODO - Other stuff related to maps and areas could be moved here too. Look at /tg + // Lateload Code related to Expedition areas. + if(using_map) // VOREStation Edit: Re-enable this. + loadLateMaps() + ..() /datum/controller/subsystem/mapping/proc/load_map_templates() for(var/T in subtypesof(/datum/map_template)) @@ -27,3 +41,84 @@ SUBSYSTEM_DEF(mapping) template = new T() map_templates[template.name] = template return TRUE + +/datum/controller/subsystem/mapping/proc/loadEngine() + if(!engine_loader) + return // Seems this map doesn't need an engine loaded. + + var/turf/T = get_turf(engine_loader) + if(!isturf(T)) + to_world_log("[log_info_line(engine_loader)] not on a turf! Cannot place engine template.") + return + + // Choose an engine type + var/datum/map_template/engine/chosen_type = null + if (LAZYLEN(config.engine_map)) + var/chosen_name = pick(config.engine_map) + chosen_type = map_templates[chosen_name] + if(!istype(chosen_type)) + error("Configured engine map [chosen_name] is not a valid engine map name!") + if(!istype(chosen_type)) + var/list/engine_types = list() + for(var/map in map_templates) + var/datum/map_template/engine/MT = map_templates[map] + if(istype(MT)) + engine_types += MT + chosen_type = pick(engine_types) + to_world_log("Chose Engine Map: [chosen_type.name]") + admin_notice("Chose Engine Map: [chosen_type.name]", R_DEBUG) + + // Annihilate movable atoms + engine_loader.annihilate_bounds() + //CHECK_TICK //Don't let anything else happen for now + // Actually load it + chosen_type.load(T) + +// VOREStation Edit Start: Enable This +/datum/controller/subsystem/mapping/proc/loadLateMaps() + var/list/deffo_load = using_map.lateload_z_levels + var/list/maybe_load = using_map.lateload_single_pick + + for(var/list/maplist in deffo_load) + if(!islist(maplist)) + error("Lateload Z level [maplist] is not a list! Must be in a list!") + continue + for(var/mapname in maplist) + var/datum/map_template/MT = map_templates[mapname] + if(!istype(MT)) + error("Lateload Z level \"[mapname]\" is not a valid map!") + continue + MT.load_new_z(centered = FALSE) + CHECK_TICK + + if(LAZYLEN(maybe_load)) + var/picklist = pick(maybe_load) + + if(!picklist) //No lateload maps at all + return + + if(!islist(picklist)) //So you can have a 'chain' of z-levels that make up one away mission + error("Randompick Z level [picklist] is not a list! Must be in a list!") + return + + for(var/map in picklist) + var/datum/map_template/MT = map_templates[map] + if(!istype(MT)) + error("Randompick Z level \"[map]\" is not a valid map!") + else + MT.load_new_z(centered = FALSE) + +/datum/controller/subsystem/mapping/proc/preloadShelterTemplates() + for(var/item in subtypesof(/datum/map_template/shelter)) + var/datum/map_template/shelter/shelter_type = item + if(!(initial(shelter_type.mappath))) + continue + var/datum/map_template/shelter/S = new shelter_type() + + shelter_templates[S.shelter_id] = S +// VOREStation Edit End: Re-enable this + +/datum/controller/subsystem/mapping/stat_entry(msg) + if (!Debug2) + return // Only show up in stat panel if debugging is enabled. + . = ..() \ No newline at end of file diff --git a/code/controllers/subsystems/mapping_vr.dm b/code/controllers/subsystems/mapping_vr.dm deleted file mode 100644 index 665f0e5756..0000000000 --- a/code/controllers/subsystems/mapping_vr.dm +++ /dev/null @@ -1,124 +0,0 @@ -// -// Mapping subsystem handles initialization of random map elements at server start -// On VOREStation that means loading our random roundstart engine! -// -SUBSYSTEM_DEF(mapping) - name = "Mapping" - init_order = INIT_ORDER_MAPPING - flags = SS_NO_FIRE - - var/list/map_templates = list() - var/dmm_suite/maploader = null - var/obj/effect/landmark/engine_loader/engine_loader - var/list/shelter_templates = list() - -/datum/controller/subsystem/mapping/Recover() - flags |= SS_NO_INIT // Make extra sure we don't initialize twice. - shelter_templates = SSmapping.shelter_templates - -/datum/controller/subsystem/mapping/Initialize(timeofday) - if(subsystem_initialized) - return - world.max_z_changed() // This is to set up the player z-level list, maxz hasn't actually changed (probably) - maploader = new() - load_map_templates() - - if(config.generate_map) - // Map-gen is still very specific to the map, however putting it here should ensure it loads in the correct order. - using_map.perform_map_generation() - - loadEngine() - preloadShelterTemplates() - // Mining generation probably should be here too - // TODO - Other stuff related to maps and areas could be moved here too. Look at /tg - if(using_map) - loadLateMaps() - ..() - -/datum/controller/subsystem/mapping/proc/load_map_templates() - for(var/T in subtypesof(/datum/map_template)) - var/datum/map_template/template = T - if(!(initial(template.mappath))) // If it's missing the actual path its probably a base type or being used for inheritence. - continue - template = new T() - map_templates[template.name] = template - return TRUE - -/datum/controller/subsystem/mapping/proc/loadEngine() - if(!engine_loader) - return // Seems this map doesn't need an engine loaded. - - var/turf/T = get_turf(engine_loader) - if(!isturf(T)) - to_world_log("[log_info_line(engine_loader)] not on a turf! Cannot place engine template.") - return - - // Choose an engine type - var/datum/map_template/engine/chosen_type = null - if (LAZYLEN(config.engine_map)) - var/chosen_name = pick(config.engine_map) - chosen_type = map_templates[chosen_name] - if(!istype(chosen_type)) - error("Configured engine map [chosen_name] is not a valid engine map name!") - if(!istype(chosen_type)) - var/list/engine_types = list() - for(var/map in map_templates) - var/datum/map_template/engine/MT = map_templates[map] - if(istype(MT)) - engine_types += MT - chosen_type = pick(engine_types) - to_world_log("Chose Engine Map: [chosen_type.name]") - admin_notice("Chose Engine Map: [chosen_type.name]", R_DEBUG) - - // Annihilate movable atoms - engine_loader.annihilate_bounds() - //CHECK_TICK //Don't let anything else happen for now - // Actually load it - chosen_type.load(T) - -/datum/controller/subsystem/mapping/proc/loadLateMaps() - var/list/deffo_load = using_map.lateload_z_levels - var/list/maybe_load = using_map.lateload_single_pick - - for(var/list/maplist in deffo_load) - if(!islist(maplist)) - error("Lateload Z level [maplist] is not a list! Must be in a list!") - continue - for(var/mapname in maplist) - var/datum/map_template/MT = map_templates[mapname] - if(!istype(MT)) - error("Lateload Z level \"[mapname]\" is not a valid map!") - continue - MT.load_new_z(centered = FALSE) - CHECK_TICK - - if(LAZYLEN(maybe_load)) - var/picklist = pick(maybe_load) - - if(!picklist) //No lateload maps at all - return - - if(!islist(picklist)) //So you can have a 'chain' of z-levels that make up one away mission - error("Randompick Z level [picklist] is not a list! Must be in a list!") - return - - for(var/map in picklist) - var/datum/map_template/MT = map_templates[map] - if(!istype(MT)) - error("Randompick Z level \"[map]\" is not a valid map!") - else - MT.load_new_z(centered = FALSE) - -/datum/controller/subsystem/mapping/proc/preloadShelterTemplates() - for(var/item in subtypesof(/datum/map_template/shelter)) - var/datum/map_template/shelter/shelter_type = item - if(!(initial(shelter_type.mappath))) - continue - var/datum/map_template/shelter/S = new shelter_type() - - shelter_templates[S.shelter_id] = S - -/datum/controller/subsystem/mapping/stat_entry(msg) - if (!Debug2) - return // Only show up in stat panel if debugging is enabled. - . = ..() diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index eb19477181..939fbe00e6 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -78,6 +78,7 @@ var/global/datum/controller/subsystem/ticker/ticker /datum/controller/subsystem/ticker/proc/pregame_welcome() to_world("Welcome to the pregame lobby!") to_world("Please set up your character and select ready. The round will start in [pregame_timeleft] seconds.") + world << sound('sound/misc/server-ready.ogg', volume = 100) // Called during GAME_STATE_PREGAME (RUNLEVEL_LOBBY) /datum/controller/subsystem/ticker/proc/pregame_tick() @@ -434,7 +435,7 @@ var/global/datum/controller/subsystem/ticker/ticker var/captainless=1 for(var/mob/living/carbon/human/player in player_list) if(player && player.mind && player.mind.assigned_role) - if(player.mind.assigned_role == "Colony Director") + if(player.mind.assigned_role == "Site Manager") captainless=0 if(!player_is_antag(player.mind, only_offstation_roles = 1)) job_master.EquipRank(player, player.mind.assigned_role, 0) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index bb9372749a..5046575b0b 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -218,7 +218,7 @@ var/global/list/PDA_Manifest = list() heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 depthead = 1 - if(rank=="Colony Director" && heads.len != 1) + if(rank=="Site Manager" && heads.len != 1) heads.Swap(1,heads.len) if(SSjob.is_job_in_department(real_rank, DEPARTMENT_SECURITY)) diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index 99af50bf42..b16f9ddc35 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -28,6 +28,8 @@ var/volume = 100 var/max_loops var/direct + var/vary + var/extra_range var/opacity_check var/pref_check @@ -89,7 +91,7 @@ continue SEND_SOUND(thing, S) else - playsound(thing, S, volume, ignore_walls = !opacity_check, preference = pref_check) + playsound(thing, S, volume, vary, extra_range, ignore_walls = !opacity_check, preference = pref_check) /datum/looping_sound/proc/get_sound(starttime, _mid_sounds) if(!_mid_sounds) diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index e8b0c2aa78..0330811428 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -9,9 +9,10 @@ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/looping_sound/supermatter - mid_sounds = list('sound/machines/sm/supermatter1.ogg'=1,'sound/machines/sm/supermatter2.ogg'=1,'sound/machines/sm/supermatter3.ogg'=1) - mid_length = 10 - volume = 1 + mid_sounds = list('sound/machines/sm/loops/calm.ogg'=1) + mid_length = 60 + volume = 40 + extra_range = 10 pref_check = /datum/client_preference/supermatter_hum /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -28,25 +29,74 @@ /datum/looping_sound/deep_fryer - start_sound = 'sound/machines/fryer/deep_fryer_immerse.ogg' //my immersions + start_sound = 'sound/machines/kitchen/fryer/deep_fryer_immerse.ogg' //my immersions start_length = 10 - mid_sounds = list('sound/machines/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/fryer/deep_fryer_2.ogg' = 1) + mid_sounds = list('sound/machines/kitchen/fryer/deep_fryer_1.ogg' = 1, 'sound/machines/kitchen/fryer/deep_fryer_2.ogg' = 1) mid_length = 2 - end_sound = 'sound/machines/fryer/deep_fryer_emerge.ogg' + end_sound = 'sound/machines/kitchen/fryer/deep_fryer_emerge.ogg' volume = 15 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/looping_sound/microwave - start_sound = 'sound/machines/microwave/microwave-start.ogg' + start_sound = 'sound/machines/kitchen/microwave/microwave-start.ogg' start_length = 10 - mid_sounds = list('sound/machines/microwave/microwave-mid1.ogg'=10, 'sound/machines/microwave/microwave-mid2.ogg'=1) + mid_sounds = list('sound/machines/kitchen/microwave/microwave-mid1.ogg'=10, 'sound/machines/kitchen/microwave/microwave-mid2.ogg'=1) mid_length = 10 - end_sound = 'sound/machines/microwave/microwave-end.ogg' + end_sound = 'sound/machines/kitchen/microwave/microwave-end.ogg' volume = 90 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/datum/looping_sound/oven + start_sound = 'sound/machines/kitchen/oven/oven-start.ogg' + start_length = 10 + mid_sounds = list('sound/machines/kitchen/oven/oven-mid1.ogg'=10) + mid_length = 40 + end_sound = 'sound/machines/kitchen/oven/oven-stop.ogg' + volume = 50 + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/grill + start_sound = 'sound/machines/kitchen/grill/grill-start.ogg' + start_length = 10 + mid_sounds = list('sound/machines/kitchen/grill/grill-mid1.ogg'=10) + mid_length = 40 + end_sound = 'sound/machines/kitchen/grill/grill-stop.ogg' + volume = 50 + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/mixer + start_sound = 'sound/machines/kitchen/mixer/mixer-start.ogg' + start_length = 10 + mid_sounds = list('sound/machines/kitchen/mixer/mixer-mid1.ogg'=10) + mid_length = 10 + end_sound = 'sound/machines/kitchen/mixer/mixer-stop.ogg' + volume = 50 + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/cerealmaker + start_sound = 'sound/machines/kitchen/cerealmaker/cerealmaker-start.ogg' + start_length = 10 + mid_sounds = list('sound/machines/kitchen/cerealmaker/cerealmaker-mid1.ogg'=10) + mid_length = 60 + end_sound = 'sound/machines/kitchen/cerealmaker/cerealmaker-stop.ogg' + volume = 50 + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/datum/looping_sound/candymaker + start_sound = 'sound/machines/kitchen/candymaker/candymaker-start.ogg' + start_length = 10 + mid_sounds = list('sound/machines/kitchen/candymaker/candymaker-mid1.ogg'=10) + mid_length = 40 + end_sound = 'sound/machines/kitchen/candymaker/candymaker-stop.ogg' + volume = 20 + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/looping_sound/air_pump start_sound = 'sound/machines/air_pump/airpumpstart.ogg' start_length = 10 diff --git a/code/datums/supplypacks/costumes.dm b/code/datums/supplypacks/costumes.dm index f9b61d9572..9afd0fd60f 100644 --- a/code/datums/supplypacks/costumes.dm +++ b/code/datums/supplypacks/costumes.dm @@ -101,7 +101,7 @@ /obj/item/clothing/under/lawyer/bluesuit, /obj/item/clothing/under/lawyer/purpsuit, /obj/item/clothing/shoes/black = 2, - /obj/item/clothing/shoes/leather, + /obj/item/clothing/shoes/laceup/brown, /obj/item/clothing/accessory/wcoat ) name = "Formalwear (Suits)" diff --git a/code/datums/supplypacks/costumes_vr.dm b/code/datums/supplypacks/costumes_vr.dm index 1e44beacbf..995e935648 100644 --- a/code/datums/supplypacks/costumes_vr.dm +++ b/code/datums/supplypacks/costumes_vr.dm @@ -174,7 +174,7 @@ /obj/item/clothing/under/pants/chaps, /obj/item/clothing/under/pants/chaps/black, /obj/item/clothing/under/harness, - /obj/item/clothing/shoes/leather, + /obj/item/clothing/shoes/laceup/brown, /obj/item/clothing/shoes/boots/jungle, /obj/item/clothing/shoes/boots/jackboots, /obj/item/clothing/shoes/boots/cowboy, diff --git a/code/datums/supplypacks/hospitality.dm b/code/datums/supplypacks/hospitality.dm index c776317ffa..2771caa538 100644 --- a/code/datums/supplypacks/hospitality.dm +++ b/code/datums/supplypacks/hospitality.dm @@ -54,19 +54,12 @@ containertype = /obj/structure/largecrate containername = "cooking oil tank crate" -/datum/supply_pack/randomised/hospitality/ - group = "Hospitality" - -/datum/supply_pack/randomised/hospitality/pizza +/datum/supply_pack/hospitality/pizza + name = "Surprise pack of five pizzas" contains = list( - /obj/random/pizzabox, - /obj/random/pizzabox, - /obj/random/pizzabox, - /obj/random/pizzabox, - /obj/random/pizzabox, + /obj/random/pizzabox = 5, /obj/item/weapon/material/knife/plastic ) - name = "Surprise pack of five pizzas" cost = 15 containertype = /obj/structure/closet/crate/freezer/centauri containername = "Pizza crate" @@ -83,4 +76,8 @@ ) cost = 10 containertype = /obj/structure/closet/crate/allico - containername = "crate of gifts" \ No newline at end of file + containername = "crate of gifts" + +/datum/supply_pack/randomised/hospitality/ + group = "Hospitality" + diff --git a/code/defines/obj.dm b/code/defines/obj.dm index de7800acfb..18f889ffae 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -97,6 +97,7 @@ throw_speed = 1 throw_range = 20 drop_sound = 'sound/items/drop/rubber.ogg' + pickup_sound = 'sound/items/pickup/rubber.ogg' afterattack(atom/target as mob|obj|turf|area, mob/user as mob) user.drop_item() diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 8e7ccb4070..6c05e65438 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -79,6 +79,8 @@ /obj/item/weapon/disk name = "disk" icon = 'icons/obj/discs_vr.dmi' //VOREStation Edit + drop_sound = 'sound/items/drop/disk.ogg' + pickup_sound = 'sound/items/pickup/disk.ogg' /obj/item/weapon/disk/nuclear name = "nuclear authentication disk" diff --git a/code/game/antagonist/mutiny/mutineer.dm b/code/game/antagonist/mutiny/mutineer.dm index b08931b61d..480fc83c70 100644 --- a/code/game/antagonist/mutiny/mutineer.dm +++ b/code/game/antagonist/mutiny/mutineer.dm @@ -6,7 +6,7 @@ var/datum/antagonist/mutineer/mutineers role_text_plural = "Mutineers" id = MODE_MUTINEER antag_indicator = "mutineer" - restricted_jobs = list("Colony Director") + restricted_jobs = list("Site Manager") /datum/antagonist/mutineer/New(var/no_reference) ..() @@ -39,7 +39,7 @@ var/datum/antagonist/mutineer/mutineers proc/get_head_loyalist_candidates() var/list/candidates[0] for(var/mob/loyalist in player_list) - if(loyalist.mind && loyalist.mind.assigned_role == "Colony Director") + if(loyalist.mind && loyalist.mind.assigned_role == "Site Manager") candidates.Add(loyalist.mind) return candidates @@ -47,7 +47,7 @@ var/datum/antagonist/mutineer/mutineers var/list/candidates[0] for(var/mob/mutineer in player_list) if(mutineer.client.prefs.be_special & BE_MUTINEER) - for(var/job in command_positions - "Colony Director") + for(var/job in command_positions - "Site Manager") if(mutineer.mind && mutineer.mind.assigned_role == job) candidates.Add(mutineer.mind) return candidates diff --git a/code/game/antagonist/outsider/ert.dm b/code/game/antagonist/outsider/ert.dm index 8b3301afc7..f1d1aeee4f 100644 --- a/code/game/antagonist/outsider/ert.dm +++ b/code/game/antagonist/outsider/ert.dm @@ -14,7 +14,7 @@ var/datum/antagonist/ert/ert and before taking extreme actions, please try to also contact the administration! \ Think through your actions and make the roleplay immersive! Please remember all \ rules aside from those without explicit exceptions apply to the ERT." - leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Colony Director where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the Colony Director where possible, however." + leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the Site Manager where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the Site Manager where possible, however." landmark_id = "Response Team" id_type = /obj/item/weapon/card/id/centcom/ERT diff --git a/code/game/antagonist/station/changeling.dm b/code/game/antagonist/station/changeling.dm index 694c4a3634..2c1cb77f26 100644 --- a/code/game/antagonist/station/changeling.dm +++ b/code/game/antagonist/station/changeling.dm @@ -6,7 +6,7 @@ bantype = "changeling" feedback_tag = "changeling_objective" avoid_silicons = TRUE - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Colony Director") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Site Manager") welcome_text = "Use say \"#g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them." antag_sound = 'sound/effects/antag_notice/ling_alert.ogg' flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm index 06aab654b4..57271900b1 100644 --- a/code/game/antagonist/station/cultist.dm +++ b/code/game/antagonist/station/cultist.dm @@ -13,8 +13,8 @@ var/datum/antagonist/cultist/cult bantype = "cultist" restricted_jobs = list("Chaplain") avoid_silicons = TRUE - protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Colony Director") - roundstart_restricted = list("Internal Affairs Agent", "Head of Security", "Colony Director") + protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Site Manager") + roundstart_restricted = list("Internal Affairs Agent", "Head of Security", "Site Manager") role_type = BE_CULTIST feedback_tag = "cult_objective" antag_indicator = "cult" diff --git a/code/game/antagonist/station/infiltrator.dm b/code/game/antagonist/station/infiltrator.dm index 2a1ad74025..f3e7f8a149 100644 --- a/code/game/antagonist/station/infiltrator.dm +++ b/code/game/antagonist/station/infiltrator.dm @@ -11,7 +11,7 @@ var/datum/antagonist/traitor/infiltrator/infiltrators role_text = "Infiltrator" role_text_plural = "Infiltrators" welcome_text = "To speak on your team's private channel, use :t." - protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Colony Director") + protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Site Manager") flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE can_speak_aooc = TRUE diff --git a/code/game/antagonist/station/revolutionary.dm b/code/game/antagonist/station/revolutionary.dm index 1db40f396a..8f6a7c79e9 100644 --- a/code/game/antagonist/station/revolutionary.dm +++ b/code/game/antagonist/station/revolutionary.dm @@ -30,8 +30,8 @@ var/datum/antagonist/revolutionary/revs faction_invisible = 1 avoid_silicons = TRUE - protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Colony Director", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") - roundstart_restricted = list("Internal Affairs Agent", "Colony Director", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") + protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Site Manager", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") + roundstart_restricted = list("Internal Affairs Agent", "Site Manager", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") /datum/antagonist/revolutionary/New() ..() diff --git a/code/game/antagonist/station/traitor.dm b/code/game/antagonist/station/traitor.dm index 23d0758e8b..f01784c048 100644 --- a/code/game/antagonist/station/traitor.dm +++ b/code/game/antagonist/station/traitor.dm @@ -4,7 +4,7 @@ var/datum/antagonist/traitor/traitors /datum/antagonist/traitor id = MODE_TRAITOR antag_sound = 'sound/effects/antag_notice/traitor_alert.ogg' - protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Colony Director") + protected_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "Head of Security", "Site Manager") flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE can_speak_aooc = FALSE // If they want to plot and plan as this sort of traitor, they'll need to do it ICly. diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index fe1d311674..ec368f6c0b 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -280,6 +280,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/centcom/bathroom name = "\improper CentCom Bathroom" icon_state = "centcom_crew" + sound_env = SMALL_ENCLOSED //SYNDICATES @@ -736,6 +737,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Substation" icon_state = "substation" sound_env = SMALL_ENCLOSED + ambience = AMBIENCE_SUBSTATION /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" @@ -950,7 +952,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station sound_env = MEDIUM_SOFTFLOOR /area/crew_quarters/captain - name = "\improper Command - Colony Director's Office" + name = "\improper Command - Site Manager's Office" icon_state = "captain" sound_env = MEDIUM_SOFTFLOOR @@ -1207,6 +1209,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/recreation_area_restroom name = "\improper Recreation Area Restroom" icon_state = "recreation_area_restroom" + sound_env = SMALL_ENCLOSED /area/crew_quarters/pool name = "\improper Pool" @@ -1232,6 +1235,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/barrestroom name = "\improper Cafeteria Restroom" icon_state = "bar" + sound_env = SMALL_ENCLOSED /area/crew_quarters/theatre name = "\improper Theatre" @@ -1381,6 +1385,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Atmospherics" icon_state = "atmos" sound_env = LARGE_ENCLOSED + ambience = AMBIENCE_ATMOS /area/engineering/atmos/monitoring name = "\improper Atmospherics Monitoring Room" @@ -1603,6 +1608,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/medical_restroom name = "\improper Medbay Restroom" icon_state = "medbay_restroom" + sound_env = SMALL_ENCLOSED /area/medical/patients_rooms name = "\improper Patient's Rooms" @@ -1796,6 +1802,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/security/security_bathroom name = "\improper Security - Restroom" icon_state = "security_bathroom" + sound_env = SMALL_ENCLOSED /area/security/security_cell_hallway name = "\improper Security - Cell Hallway" @@ -1944,6 +1951,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/rnd/research_restroom name = "\improper Research Restroom" icon_state = "research_restroom" + sound_env = SMALL_ENCLOSED /area/rnd/research_storage name = "\improper Research Storage" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 1229a0a9cb..b56db48dab 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -488,7 +488,7 @@ // Use for objects performing visible actions // message is output to anyone who can see, e.g. "The [src] does something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/atom/proc/visible_message(var/message, var/blind_message) +/atom/proc/visible_message(var/message, var/blind_message, var/list/exclude_mobs = null) //VOREStation Edit var/list/see @@ -501,6 +501,8 @@ var/list/seeing_mobs = see["mobs"] var/list/seeing_objs = see["objs"] + if(LAZYLEN(exclude_mobs)) + seeing_mobs -= exclude_mobs for(var/obj in seeing_objs) var/obj/O = obj diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 827e9730da..df3750275d 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -7,6 +7,8 @@ force = 30 throwforce = 10 hitsound = 'sound/weapons/bladeslice.ogg' + drop_sound = 'sound/items/drop/sword.ogg' + pickup_sound = 'sound/items/pickup/sword.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") edge = 1 sharp = 1 diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm index 575d48d06a..b185208fbd 100644 --- a/code/game/gamemodes/newobjective.dm +++ b/code/game/gamemodes/newobjective.dm @@ -564,7 +564,7 @@ datum captainslaser steal_target = /obj/item/weapon/gun/energy/captain - explanation_text = "Steal the Colony Director's antique laser gun." + explanation_text = "Steal the Site Manager's antique laser gun." weight = 20 get_points(var/job) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index a410ebfe24..2834b81cbd 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -427,11 +427,11 @@ datum/objective/steal var/target_name var/global/possible_items[] = list( - "the Colony Director's antique laser gun" = /obj/item/weapon/gun/energy/captain, + "the Site Manager's antique laser gun" = /obj/item/weapon/gun/energy/captain, "a hand teleporter" = /obj/item/weapon/hand_tele, "an RCD" = /obj/item/weapon/rcd, "a jetpack" = /obj/item/weapon/tank/jetpack, - "a colony director's jumpsuit" = /obj/item/clothing/under/rank/captain, + "a site manager's jumpsuit" = /obj/item/clothing/under/rank/captain, "a functional AI" = /obj/item/device/aicard, "a pair of magboots" = /obj/item/clothing/shoes/magboots, "the station blueprints" = /obj/item/blueprints, @@ -445,7 +445,7 @@ datum/objective/steal "a head of security's jumpsuit" = /obj/item/clothing/under/rank/head_of_security, "a head of personnel's jumpsuit" = /obj/item/clothing/under/rank/head_of_personnel, "the hypospray" = /obj/item/weapon/reagent_containers/hypospray/vial, - "the colony director's pinpointer" = /obj/item/weapon/pinpointer, + "the site manager's pinpointer" = /obj/item/weapon/pinpointer, "an ablative armor vest" = /obj/item/clothing/suit/armor/laserproof, ) diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm index 084b54cb5c..2dc02614d0 100644 --- a/code/game/jobs/access_datum.dm +++ b/code/game/jobs/access_datum.dm @@ -127,7 +127,7 @@ /var/const/access_captain = 20 /datum/access/captain id = access_captain - desc = "Colony Director" + desc = "Site Manager" region = ACCESS_REGION_COMMAND /var/const/access_all_personal_lockers = 21 diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index e58587ca66..596f078eca 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -5,7 +5,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) ////////////////////////////////// /datum/job/captain - title = "Colony Director" + title = "Site Manager" flag = CAPTAIN departments = list(DEPARTMENT_COMMAND) sorting_order = 3 // Above everyone. @@ -26,11 +26,10 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) ideal_character_age = 70 // Old geezer captains ftw outfit_type = /decl/hierarchy/outfit/job/captain - job_description = "The Colony Director manages the other Command Staff, and through them the rest of the station. Though they have access to everything, \ - they do not understand everything, and are expected to delegate tasks to the appropriate crew member. The Colony Director is expected to \ + job_description = "The Site Manager manages the other Command Staff, and through them the rest of the station. Though they have access to everything, \ + they do not understand everything, and are expected to delegate tasks to the appropriate crew member. The Site Manager is expected to \ have an understanding of Standard Operating Procedure, and is subject to it, and legal action, in the same way as every other crew member." - alt_titles = list("Site Manager" = /datum/alt_title/site_manager, - "Overseer" = /datum/alt_title/overseer) + alt_titles = list("Overseer"= /datum/alt_title/overseer) /* /datum/job/captain/equip(var/mob/living/carbon/human/H) @@ -44,9 +43,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) // Captain Alt Titles -/datum/alt_title/site_manager - title = "Site Manager" - /datum/alt_title/overseer title = "Overseer" @@ -63,7 +59,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the Colony Director" + supervisors = "the Site Manager" selection_color = "#1D1D4F" req_admin_notify = 1 minimal_player_age = 10 diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 285c3dc814..ae937d106b 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -11,7 +11,7 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the Colony Director" + supervisors = "the Site Manager" selection_color = "#7F6E2C" req_admin_notify = 1 economic_modifier = 10 diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index d276c96648..e74b0798b6 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -11,7 +11,7 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the Colony Director" + supervisors = "the Site Manager" selection_color = "#026865" req_admin_notify = 1 economic_modifier = 10 diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index c096209915..2364486285 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -11,7 +11,7 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the Colony Director" + supervisors = "the Site Manager" selection_color = "#AD6BAD" req_admin_notify = 1 economic_modifier = 15 diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index a36ad97301..631b81e16e 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -11,7 +11,7 @@ faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "the Colony Director" + supervisors = "the Site Manager" selection_color = "#8E2929" req_admin_notify = 1 economic_modifier = 10 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 2470fdc114..403efbf4fe 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -394,7 +394,7 @@ var/global/datum/controller/occupations/job_master var/datum/gear/G = gear_datums[thing] if(!G) //Not a real gear datum (maybe removed, as this is loaded from their savefile) continue - + var/permitted // Check if it is restricted to certain roles if(G.allowed_roles) @@ -435,13 +435,13 @@ var/global/datum/controller/occupations/job_master // Set up their account job.setup_account(H) - + // Equip job items. job.equip(H, H.mind ? H.mind.role_alt_title : "") - + // Stick their fingerprints on literally everything job.apply_fingerprints(H) - + // Only non-silicons get post-job-equip equipment if(!(job.mob_type & JOB_SILICON)) H.equip_post_job() @@ -487,11 +487,11 @@ var/global/datum/controller/occupations/job_master return H.Robotize() if(job.mob_type & JOB_SILICON_AI) return H - + // TWEET PEEP - if(rank == "Colony Director") + if(rank == "Site Manager") var/sound/announce_sound = (ticker.current_state <= GAME_STATE_SETTING_UP) ? null : sound('sound/misc/boatswain.ogg', volume=20) - captain_announcement.Announce("All hands, [alt_title ? alt_title : "Colony Director"] [H.real_name] on deck!", new_sound = announce_sound, zlevel = H.z) + captain_announcement.Announce("All hands, [alt_title ? alt_title : "Site Manager"] [H.real_name] on deck!", new_sound = announce_sound, zlevel = H.z) //Deferred item spawning. if(spawn_in_storage && spawn_in_storage.len) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index a3e4d2eeb3..267524b979 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -57,6 +57,7 @@ M.forceMove(src) occupant = M update_icon() //icon_state = "body_scanner_1" //VOREStation Edit - Health display for consoles with light and such. + playsound(src, 'sound/machines/medbayscanner1.ogg', 50) // Beepboop you're being scanned. <3 add_fingerprint(user) qdel(G) SStgui.update_uis(src) @@ -101,6 +102,7 @@ O.forceMove(src) occupant = O update_icon() //icon_state = "body_scanner_1" //VOREStation Edit - Health display for consoles with light and such. + playsound(src, 'sound/machines/medbayscanner1.ogg', 50) // Beepboop you're being scanned. <3 add_fingerprint(user) SStgui.update_uis(src) @@ -332,6 +334,7 @@ if("print_p") var/atom/target = console ? console : src visible_message("[target] rattles and prints out a sheet of paper.") + playsound(src, 'sound/machines/printer.ogg', 50, 1) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(target)) var/name = occupant ? occupant.name : "Unknown" P.info = "