diff --git a/code/__DEFINES/ARES.dm b/code/__DEFINES/ARES.dm index 7eee073aca51..55aa68f97309 100644 --- a/code/__DEFINES/ARES.dm +++ b/code/__DEFINES/ARES.dm @@ -15,7 +15,7 @@ /// High Command, can read the deletion log. #define ARES_ACCESS_HIGH 9 #define ARES_ACCESS_WY_COMMAND 10 -/// Debugging. Allows me to view everything without using a high command rank. Unlikely to stay in a full merge. +/// Debugging. Allows me to view everything without using a high command rank. #define ARES_ACCESS_DEBUG 11 #define ARES_RECORD_ANNOUNCE "Announcement Record" @@ -78,6 +78,7 @@ /// Cooldowns #define COOLDOWN_ARES_SENSOR 60 SECONDS #define COOLDOWN_ARES_ACCESS_CONTROL 20 SECONDS +#define COOLDOWN_ARES_VENT 60 SECONDS /// Time until someone can respawn as Working Joe #define JOE_JOIN_DEAD_TIME (15 MINUTES) diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm index b607215e215d..943e70c8814f 100644 --- a/code/__DEFINES/__game.dm +++ b/code/__DEFINES/__game.dm @@ -79,6 +79,8 @@ #define SEE_INVISIBLE_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. #define INVISIBILITY_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized. +#define HIDE_INVISIBLE_OBSERVER 59 // define for when we want to hide all observer mobs. + #define INVISIBILITY_OBSERVER 60 #define SEE_INVISIBLE_OBSERVER 60 diff --git a/code/__HELPERS/logging.dm b/code/__HELPERS/logging.dm index 59e4c7710992..1e72f51a8d60 100644 --- a/code/__HELPERS/logging.dm +++ b/code/__HELPERS/logging.dm @@ -125,11 +125,11 @@ GLOBAL_VAR_INIT(log_end, world.system_type == UNIX ? ascii2text(13) : "") GLOB.STUI.admin.Add("\[[time]]OVERWATCH: [text]") GLOB.STUI.processing |= STUI_LOG_ADMIN -/proc/log_idmod(obj/item/card/id/target_id, msg) +/proc/log_idmod(obj/item/card/id/target_id, msg, changer) var/time = time_stamp() if (CONFIG_GET(flag/log_idmod)) - WRITE_LOG(GLOB.world_game_log, "ID MOD: [msg]") - LOG_REDIS("idmod", "\[[time]\] [msg]") + WRITE_LOG(GLOB.world_game_log, "ID MOD: ([changer]) [msg]") + LOG_REDIS("idmod", "\[[time]\] ([changer]) [msg]") target_id.modification_log += "\[[time]]: [msg]" /proc/log_vote(text) diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index e2572e5e2d61..1cf93e998a4e 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -640,3 +640,27 @@ This maintains a list of ip addresses that are able to bypass topic filtering. splitter = "|" key_mode = KEY_MODE_TEXT_UNALTERED value_mode = VALUE_MODE_TEXT + +/datum/config_entry/number/client_warn_version + default = null + min_val = 500 + +/datum/config_entry/number/client_warn_build + default = null + min_val = 0 + +/datum/config_entry/string/client_warn_message + default = "Your version of BYOND may have issues or be blocked from accessing this server in the future." + +/datum/config_entry/flag/client_warn_popup + +/datum/config_entry/number/client_error_version + default = null + min_val = 500 + +/datum/config_entry/number/client_error_build + default = null + min_val = 0 + +/datum/config_entry/string/client_error_message + default = "Your version of BYOND is too old, may have issues, and is blocked from accessing this server." diff --git a/code/datums/ammo/bullet/revolver.dm b/code/datums/ammo/bullet/revolver.dm index 0688e615378e..def0a8e31952 100644 --- a/code/datums/ammo/bullet/revolver.dm +++ b/code/datums/ammo/bullet/revolver.dm @@ -7,14 +7,13 @@ /datum/ammo/bullet/revolver name = "revolver bullet" headshot_state = HEADSHOT_OVERLAY_MEDIUM - - damage = 55 + damage = 72 penetration = ARMOR_PENETRATION_TIER_1 accuracy = HIT_ACCURACY_TIER_1 /datum/ammo/bullet/revolver/marksman name = "marksman revolver bullet" - + damage = 55 shrapnel_chance = 0 damage_falloff = 0 accurate_range = 12 diff --git a/code/datums/skills/uscm.dm b/code/datums/skills/uscm.dm index 8a6d2fd2c8c2..1e0dedf5dd05 100644 --- a/code/datums/skills/uscm.dm +++ b/code/datums/skills/uscm.dm @@ -292,6 +292,7 @@ COMMAND STAFF SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_SURGERY = SKILL_SURGERY_NOVICE, SKILL_POLICE = SKILL_POLICE_FLASH, SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_VEHICLE = SKILL_VEHICLE_SMALL, diff --git a/code/game/machinery/ARES/ARES_interface.dm b/code/game/machinery/ARES/ARES_interface.dm index d6f58f371715..6cc7c220fd04 100644 --- a/code/game/machinery/ARES/ARES_interface.dm +++ b/code/game/machinery/ARES/ARES_interface.dm @@ -214,6 +214,8 @@ data["active_ref"] = active_ref data["conversations"] = logged_convos + data["security_vents"] = link.get_ares_vents() + return data /obj/structure/machinery/computer/ares_console/ui_status(mob/user, datum/ui_state/state) @@ -227,19 +229,19 @@ . = ..() if(.) return - - playsound(src, "keyboard_alt", 15, 1) - var/mob/living/carbon/human/operator = ui.user + var/mob/user = ui.user + var/playsound = TRUE switch (action) if("go_back") if(!last_menu) - return to_chat(operator, SPAN_WARNING("Error, no previous page detected.")) + return to_chat(user, SPAN_WARNING("Error, no previous page detected.")) var/temp_holder = current_menu current_menu = last_menu last_menu = temp_holder if("login") + var/mob/living/carbon/human/operator = user var/obj/item/card/id/idcard = operator.get_active_hand() if(istype(idcard)) authentication = get_ares_access(idcard) @@ -250,7 +252,7 @@ authentication = get_ares_access(idcard) last_login = idcard.registered_name else - to_chat(operator, SPAN_WARNING("You require an ID card to access this terminal!")) + to_chat(user, SPAN_WARNING("You require an ID card to access this terminal!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(authentication) @@ -258,14 +260,14 @@ current_menu = "main" if("sudo") - var/new_user = tgui_input_text(operator, "Enter Sudo Username", "Sudo User", encode = FALSE) + var/new_user = tgui_input_text(user, "Enter Sudo Username", "Sudo User", encode = FALSE) if(new_user) if(new_user == sudo_holder) last_login = sudo_holder sudo_holder = null return FALSE if(new_user == last_login) - to_chat(operator, SPAN_WARNING("Already remote logged in as this user.")) + to_chat(user, SPAN_WARNING("Already remote logged in as this user.")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE sudo_holder = last_login @@ -331,6 +333,9 @@ if("page_tech") last_menu = current_menu current_menu = "tech_log" + if("page_core_sec") + last_menu = current_menu + current_menu = "core_security" // -- Delete Button -- // if("delete_record") @@ -388,9 +393,9 @@ datacore.records_talking -= conversation if("message_ares") - var/message = tgui_input_text(operator, "What do you wish to say to ARES?", "ARES Message", encode = FALSE) + var/message = tgui_input_text(user, "What do you wish to say to ARES?", "ARES Message", encode = FALSE) if(message) - message_ares(message, operator, params["active_convo"]) + message_ares(message, user, params["active_convo"]) if("read_record") var/datum/ares_record/deleted_talk/conversation = locate(params["record"]) @@ -403,36 +408,36 @@ // -- Emergency Buttons -- // if("general_quarters") if(!COOLDOWN_FINISHED(datacore, ares_quarters_cooldown)) - to_chat(operator, SPAN_WARNING("It has not been long enough since the last General Quarters call!")) + to_chat(user, SPAN_WARNING("It has not been long enough since the last General Quarters call!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(GLOB.security_level < SEC_LEVEL_RED) set_security_level(SEC_LEVEL_RED, no_sound = TRUE, announce = FALSE) shipwide_ai_announcement("ATTENTION! GENERAL QUARTERS. ALL HANDS, MAN YOUR BATTLESTATIONS.", MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') - log_game("[key_name(operator)] has called for general quarters via ARES.") - message_admins("[key_name_admin(operator)] has called for general quarters via ARES.") + log_game("[key_name(user)] has called for general quarters via ARES.") + message_admins("[key_name_admin(user)] has called for general quarters via ARES.") log_ares_security("General Quarters", "[last_login] has called for general quarters via ARES.") COOLDOWN_START(datacore, ares_quarters_cooldown, 10 MINUTES) . = TRUE if("evacuation_start") if(GLOB.security_level < SEC_LEVEL_RED) - to_chat(operator, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) + to_chat(user, SPAN_WARNING("The ship must be under red alert in order to enact evacuation procedures.")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(SShijack.evac_admin_denied) - to_chat(operator, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) + to_chat(user, SPAN_WARNING("The USCM has placed a lock on deploying the evacuation pods.")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(!SShijack.initiate_evacuation()) - to_chat(operator, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) + to_chat(user, SPAN_WARNING("You are unable to initiate an evacuation procedure right now!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE - log_game("[key_name(operator)] has called for an emergency evacuation via ARES.") - message_admins("[key_name_admin(operator)] has called for an emergency evacuation via ARES.") + log_game("[key_name(user)] has called for an emergency evacuation via ARES.") + message_admins("[key_name_admin(user)] has called for an emergency evacuation via ARES.") log_ares_security("Initiate Evacuation", "[last_login] has called for an emergency evacuation via ARES.") . = TRUE @@ -440,27 +445,27 @@ if(!SSticker.mode) return FALSE //Not a game mode? if(world.time < DISTRESS_TIME_LOCK) - to_chat(operator, SPAN_WARNING("You have been here for less than six minutes... what could you possibly have done!")) + to_chat(user, SPAN_WARNING("You have been here for less than six minutes... what could you possibly have done!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(!COOLDOWN_FINISHED(datacore, ares_distress_cooldown)) - to_chat(operator, SPAN_WARNING("The distress launcher is cooling down!")) + to_chat(user, SPAN_WARNING("The distress launcher is cooling down!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(GLOB.security_level == SEC_LEVEL_DELTA) - to_chat(operator, SPAN_WARNING("The ship is already undergoing self destruct procedures!")) + to_chat(user, SPAN_WARNING("The ship is already undergoing self destruct procedures!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(GLOB.security_level < SEC_LEVEL_RED) - to_chat(operator, SPAN_WARNING("The ship must be under red alert to launch a distress beacon!")) + to_chat(user, SPAN_WARNING("The ship must be under red alert to launch a distress beacon!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE for(var/client/admin in GLOB.admins) if((R_ADMIN|R_MOD) & admin.admin_holder.rights) playsound_client(admin,'sound/effects/sos-morse-code.ogg',10) - SSticker.mode.request_ert(operator, TRUE) - to_chat(operator, SPAN_NOTICE("A distress beacon request has been sent to USCM High Command.")) + SSticker.mode.request_ert(user, TRUE) + to_chat(user, SPAN_NOTICE("A distress beacon request has been sent to USCM High Command.")) COOLDOWN_START(datacore, ares_distress_cooldown, COOLDOWN_COMM_REQUEST) return TRUE @@ -468,28 +473,50 @@ if(!SSticker.mode) return FALSE //Not a game mode? if(world.time < NUCLEAR_TIME_LOCK) - to_chat(operator, SPAN_WARNING("It is too soon to request Nuclear Ordnance!")) + to_chat(user, SPAN_WARNING("It is too soon to request Nuclear Ordnance!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(!COOLDOWN_FINISHED(datacore, ares_nuclear_cooldown)) - to_chat(operator, SPAN_WARNING("The ordnance request frequency is garbled, wait for reset!")) + to_chat(user, SPAN_WARNING("The ordnance request frequency is garbled, wait for reset!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE if(GLOB.security_level == SEC_LEVEL_DELTA || SSticker.mode.is_in_endgame) - to_chat(operator, SPAN_WARNING("The mission has failed catastrophically, what do you want a nuke for?!")) + to_chat(user, SPAN_WARNING("The mission has failed catastrophically, what do you want a nuke for?!")) playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) return FALSE - var/reason = tgui_input_text(operator, "Please enter reason nuclear ordnance is required.", "Reason for Nuclear Ordnance") + var/reason = tgui_input_text(user, "Please enter reason nuclear ordnance is required.", "Reason for Nuclear Ordnance") if(!reason) return FALSE for(var/client/admin in GLOB.admins) if((R_ADMIN|R_MOD) & admin.admin_holder.rights) playsound_client(admin,'sound/effects/sos-morse-code.ogg',10) - message_admins("[key_name(operator)] has requested use of Nuclear Ordnance (via ARES)! Reason: [reason] [CC_MARK(operator)] (APPROVE) (DENY) [ADMIN_JMP_USER(operator)] [CC_REPLY(operator)]") - to_chat(operator, SPAN_NOTICE("A nuclear ordnance request has been sent to USCM High Command for the following reason: [reason]")) + message_admins("[key_name(user)] has requested use of Nuclear Ordnance (via ARES)! Reason: [reason] [CC_MARK(user)] (APPROVE) (DENY) [ADMIN_JMP_USER(user)] [CC_REPLY(user)]") + to_chat(user, SPAN_NOTICE("A nuclear ordnance request has been sent to USCM High Command for the following reason: [reason]")) log_ares_security("Nuclear Ordnance Request", "[last_login] has sent a request for nuclear ordnance for the following reason: [reason]") if(ares_can_interface()) ai_silent_announcement("[last_login] has sent a request for nuclear ordnance to USCM High Command.", ".V") ai_silent_announcement("Reason given: [reason].", ".V") COOLDOWN_START(datacore, ares_nuclear_cooldown, COOLDOWN_COMM_DESTRUCT) return TRUE + + if("trigger_vent") + playsound = FALSE + var/obj/structure/pipes/vents/pump/no_boom/gas/sec_vent = locate(params["vent"]) + if(!istype(sec_vent) || sec_vent.welded) + to_chat(user, SPAN_WARNING("ERROR: Gas release failure.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!COOLDOWN_FINISHED(sec_vent, vent_trigger_cooldown)) + to_chat(user, SPAN_WARNING("ERROR: Insufficient gas reserve for this vent.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + to_chat(user, SPAN_WARNING("Initiating gas release from [sec_vent.vent_tag].")) + playsound(src, 'sound/machines/chime.ogg', 15, 1) + COOLDOWN_START(sec_vent, vent_trigger_cooldown, COOLDOWN_ARES_VENT) + ares_apollo_talk("Nerve Gas release imminent from [sec_vent.vent_tag].") + log_ares_security("Nerve Gas Release", "[last_login] released Nerve Gas from Vent '[sec_vent.vent_tag]'.") + sec_vent.create_gas(VENT_GAS_CN20_XENO, 6, 5 SECONDS) + log_admin("[key_name(user)] released nerve gas from Vent '[sec_vent.vent_tag]' via ARES.") + + if(playsound) + playsound(src, "keyboard_alt", 15, 1) diff --git a/code/game/machinery/ARES/ARES_interface_admin.dm b/code/game/machinery/ARES/ARES_interface_admin.dm index 5ca7a9ba171d..586b01a51af9 100644 --- a/code/game/machinery/ARES/ARES_interface_admin.dm +++ b/code/game/machinery/ARES/ARES_interface_admin.dm @@ -231,6 +231,8 @@ logged_access += list(current_ticket) data["access_tickets"] = logged_access + data["security_vents"] = get_ares_vents() + return data @@ -321,6 +323,9 @@ if("page_tech") admin_interface.last_menu = admin_interface.current_menu admin_interface.current_menu = "tech_log" + if("page_core_sec") + admin_interface.last_menu = admin_interface.current_menu + admin_interface.current_menu = "core_security" if("page_access_management") admin_interface.last_menu = admin_interface.current_menu admin_interface.current_menu = "access_management" @@ -491,3 +496,21 @@ ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been [choice] by [MAIN_AI_SYSTEM].") to_chat(user, SPAN_NOTICE("[ticket.ticket_type] [ticket.ticket_id] marked as [choice].")) return TRUE + + if("trigger_vent") + var/obj/structure/pipes/vents/pump/no_boom/gas/sec_vent = locate(params["vent"]) + if(!istype(sec_vent) || sec_vent.welded) + to_chat(user, SPAN_WARNING("ERROR: Gas release failure.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!COOLDOWN_FINISHED(sec_vent, vent_trigger_cooldown)) + to_chat(user, SPAN_WARNING("ERROR: Insufficient gas reserve for this vent.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + to_chat(user, SPAN_WARNING("Initiating gas release from [sec_vent.vent_tag].")) + playsound(src, 'sound/machines/chime.ogg', 15, 1) + COOLDOWN_START(sec_vent, vent_trigger_cooldown, COOLDOWN_ARES_VENT) + ares_apollo_talk("Nerve Gas release imminent from [sec_vent.vent_tag].") + log_ares_security("Nerve Gas Release", "[MAIN_AI_SYSTEM] released Nerve Gas from Vent '[sec_vent.vent_tag]'.") + sec_vent.create_gas(VENT_GAS_CN20_XENO, 6, 5 SECONDS) + log_admin("[key_name(user)] released nerve gas from Vent '[sec_vent.vent_tag]' via ARES.") diff --git a/code/game/machinery/ARES/ARES_interface_apollo.dm b/code/game/machinery/ARES/ARES_interface_apollo.dm index c1c936676dc5..48fcad588574 100644 --- a/code/game/machinery/ARES/ARES_interface_apollo.dm +++ b/code/game/machinery/ARES/ARES_interface_apollo.dm @@ -141,6 +141,8 @@ requesting_access += access_ticket.ticket_name data["access_tickets"] = logged_access + data["security_vents"] = link.get_ares_vents() + return data /obj/structure/machinery/computer/working_joe/ui_status(mob/user, datum/ui_state/state) @@ -211,6 +213,9 @@ if("page_maintenance") last_menu = current_menu current_menu = "maint_claim" + if("page_core_gas") + last_menu = current_menu + current_menu = "core_security_gas" if("toggle_sound") notify_sounds = !notify_sounds @@ -413,6 +418,25 @@ playsound_client(id_owner?.client, 'sound/machines/pda_ping.ogg', src, 25, 0) return TRUE + if("trigger_vent") + playsound = FALSE + var/obj/structure/pipes/vents/pump/no_boom/gas/sec_vent = locate(params["vent"]) + if(!istype(sec_vent) || sec_vent.welded) + to_chat(operator, SPAN_WARNING("ERROR: Gas release failure.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!COOLDOWN_FINISHED(sec_vent, vent_trigger_cooldown)) + to_chat(operator, SPAN_WARNING("ERROR: Insufficient gas reserve for this vent.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + to_chat(operator, SPAN_WARNING("Initiating gas release from [sec_vent.vent_tag].")) + playsound(src, 'sound/machines/chime.ogg', 15, 1) + COOLDOWN_START(sec_vent, vent_trigger_cooldown, COOLDOWN_ARES_VENT) + ares_apollo_talk("Nerve Gas release imminent from [sec_vent.vent_tag].") + log_ares_security("Nerve Gas Release", "[last_login] released Nerve Gas from Vent '[sec_vent.vent_tag]'.") + sec_vent.create_gas(VENT_GAS_CN20_XENO, 6, 5 SECONDS) + log_admin("[key_name(operator)] released nerve gas from Vent '[sec_vent.vent_tag]' via ARES.") + if(playsound) playsound(src, "keyboard_alt", 15, 1) diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index 1212d1509a01..05f110ec1a0c 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -29,6 +29,10 @@ GLOBAL_LIST_INIT(maintenance_categories, list( var/datum/ares_datacore/datacore var/list/obj/structure/machinery/computer/working_joe/ticket_computers = list() + /// Linked security gas vents. + var/list/linked_vents = list() + /// The tag number for generated vent labels, if none is manually set. + var/tag_num = 1 /// Working Joe stuff var/list/tickets_maintenance = list() @@ -50,6 +54,23 @@ GLOBAL_LIST_INIT(maintenance_categories, list( alert.delink() ..() +/datum/ares_link/proc/get_ares_vents() + var/list/security_vents = list() + var/datum/ares_link/link = GLOB.ares_link + for(var/obj/structure/pipes/vents/pump/no_boom/gas/vent in link.linked_vents) + if(!vent.vent_tag) + vent.vent_tag = "Security Vent #[link.tag_num]" + link.tag_num++ + + var/list/current_vent = list() + var/is_available = COOLDOWN_FINISHED(vent, vent_trigger_cooldown) + current_vent["vent_tag"] = vent.vent_tag + current_vent["ref"] = "\ref[vent]" + current_vent["available"] = is_available + security_vents += list(current_vent) + return security_vents + + /* BELOW ARE IN AdminAres.dm /datum/ares_link/tgui_interact(mob/user, datum/tgui/ui) /datum/ares_link/ui_data(mob/user) @@ -144,11 +165,11 @@ GLOBAL_LIST_INIT(maintenance_categories, list( var/datum/ares_datacore/datacore = GLOB.ares_datacore datacore.records_bioscan.Add(new /datum/ares_record/bioscan(title, input)) -/proc/log_ares_bombardment(user_name, ob_name, coordinates) +/proc/log_ares_bombardment(user_name, ob_name, message) if(!ares_can_log()) return FALSE var/datum/ares_datacore/datacore = GLOB.ares_datacore - datacore.records_bombardment.Add(new /datum/ares_record/bombardment(ob_name, "Bombardment fired at [coordinates].", user_name)) + datacore.records_bombardment.Add(new /datum/ares_record/bombardment(ob_name, message, user_name)) /proc/log_ares_announcement(title, message) if(!ares_can_log()) diff --git a/code/game/machinery/ARES/apollo_pda.dm b/code/game/machinery/ARES/apollo_pda.dm index 69e774cf0da3..e447bb6f7ee7 100644 --- a/code/game/machinery/ARES/apollo_pda.dm +++ b/code/game/machinery/ARES/apollo_pda.dm @@ -166,6 +166,8 @@ requesting_access += access_ticket.ticket_name data["access_tickets"] = logged_access + data["security_vents"] = link.get_ares_vents() + return data /obj/item/device/working_joe_pda/ui_status(mob/user, datum/ui_state/state) @@ -237,6 +239,9 @@ if("page_maintenance") last_menu = current_menu current_menu = "maint_claim" + if("page_core_gas") + last_menu = current_menu + current_menu = "core_security_gas" if("toggle_sound") notify_sounds = !notify_sounds @@ -439,6 +444,25 @@ playsound_client(id_owner?.client, 'sound/machines/pda_ping.ogg', src, 25, 0) return TRUE + if("trigger_vent") + playsound = FALSE + var/obj/structure/pipes/vents/pump/no_boom/gas/sec_vent = locate(params["vent"]) + if(!istype(sec_vent) || sec_vent.welded) + to_chat(operator, SPAN_WARNING("ERROR: Gas release failure.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!COOLDOWN_FINISHED(sec_vent, vent_trigger_cooldown)) + to_chat(operator, SPAN_WARNING("ERROR: Insufficient gas reserve for this vent.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + to_chat(operator, SPAN_WARNING("Initiating gas release from [sec_vent.vent_tag].")) + playsound(src, 'sound/machines/chime.ogg', 15, 1) + COOLDOWN_START(sec_vent, vent_trigger_cooldown, COOLDOWN_ARES_VENT) + ares_apollo_talk("Nerve Gas release imminent from [sec_vent.vent_tag].") + log_ares_security("Nerve Gas Release", "[last_login] released Nerve Gas from Vent '[sec_vent.vent_tag]'.") + sec_vent.create_gas(VENT_GAS_CN20_XENO, 6, 5 SECONDS) + log_admin("[key_name(operator)] released nerve gas from Vent '[sec_vent.vent_tag]' via ARES.") + if(playsound) var/sound = pick('sound/machines/pda_button1.ogg', 'sound/machines/pda_button2.ogg') playsound(src, sound, 15, TRUE) diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 3fa96ca0bc3a..4b68b397116e 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -105,15 +105,28 @@ to_chat(user, SPAN_WARNING("You need a better grip to do that!")) return - if(victim.abiotic(1)) + if(victim.abiotic(TRUE)) to_chat(user, SPAN_WARNING("Subject may not have abiotic items on.")) return user.visible_message(SPAN_DANGER("[user] starts to put [victim] into the gibber!")) add_fingerprint(user) + ///If synth is getting gibbed, we will 'soft gib' them, but this is still pretty LRP so let admin know. + if(issynth(victim) && ishuman_strict(user) && !occupant) + var/turf/turf_ref = get_turf(user) + var/area/area = get_area(user) + message_admins("ALERT: [user] ([user.key]) is trying to shove [victim] in a gibber! (They are a synth, so this will delimb them) ([victim.key]) in [area.name] [ADMIN_JMP(turf_ref)]") + log_attack("[key_name(user)] tried to delimb [victim] using a gibber ([victim.key]) in [area.name]") + to_chat(user, SPAN_DANGER("What are you doing...")) + if(do_after(user, 30 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE && grabbed && grabbed.grabbed_thing && !occupant)) + user.visible_message(SPAN_DANGER("[user] stuffs [victim] into the gibber!")) + victim.forceMove(src) + occupant = victim + update_icon() + ///If someone's being LRP and doing funny chef shit, this lets admins know. This *shouldn't* flag preds, though. - if(ishuman(victim) && ishuman_strict(user) && !occupant) + else if(ishuman(victim) && ishuman_strict(user) && !occupant) var/turf/turf_ref = get_turf(user) var/area/area = get_area(user) message_admins("ALERT: [user] ([user.key]) is trying to gib [victim] ([victim.key]) in [area.name] [ADMIN_JMP(turf_ref)]") @@ -142,18 +155,23 @@ add_fingerprint(usr) return -/obj/structure/machinery/gibber/proc/go_out() +/obj/structure/machinery/gibber/proc/go_out(launch = FALSE) if (!occupant) - return + return FALSE for(var/obj/O in src) O.forceMove(loc) if (occupant.client) occupant.client.eye = occupant.client.mob occupant.client.perspective = MOB_PERSPECTIVE occupant.forceMove(loc) + if(launch) + // yeet them out of the gibber + visible_message(SPAN_DANGER("[occupant] suddenly is launched out of the [src]!")) + var/turf/Tx = locate(x - 3, y, z) + occupant.throw_atom(Tx, 3, SPEED_FAST, src, TRUE) occupant = null update_icon() - return + return TRUE /obj/structure/machinery/gibber/proc/startgibbing(mob/user as mob) @@ -162,13 +180,18 @@ if(!occupant) visible_message(SPAN_DANGER("You hear a loud metallic grinding sound.")) return + var/synthetic = issynth(occupant) use_power(1000) - visible_message(SPAN_DANGER("You hear a loud squelchy grinding sound.")) - operating = 1 + if(synthetic) + visible_message(SPAN_BOLDWARNING("[src] begins to emitt sparks out the top as a banging noise can be heard!"), SPAN_BOLDWARNING("You hear a myriad of loud bangs!")) + else + visible_message(SPAN_DANGER("You hear a loud squelchy grinding sound.")) + operating = TRUE update_icon() var/totalslabs = 2 + var/obj/item/reagent_container/food/snacks/meat/meat_template = /obj/item/reagent_container/food/snacks/meat/monkey if(istype(occupant, /mob/living/carbon/xenomorph)) var/mob/living/carbon/xenomorph/X = occupant @@ -186,6 +209,35 @@ meat_template = /obj/item/reagent_container/food/snacks/meat/human totalslabs = 3 + // Synths only get delimbed from this. 1 meat per limb + if(synthetic) + meat_template = /obj/item/reagent_container/food/snacks/meat/synthmeat/synthflesh + totalslabs = 0 + var/mob/living/carbon/human/victim = occupant + + // Remove all limbs to allow synth to park closer at the supermarket + var/obj/limb/limb + + if(victim.has_limb("l_leg")) + limb = victim.get_limb("r_leg") + totalslabs += 1 + limb.droplimb(FALSE, TRUE, "gibber") + + if(victim.has_limb("l_leg")) + limb = victim.get_limb("l_leg") + totalslabs += 1 + limb.droplimb(FALSE, TRUE, "gibber") + + if(victim.has_limb("r_arm")) + limb = victim.get_limb("r_arm") + totalslabs += 1 + limb.droplimb(FALSE, TRUE, "gibber") + + if(victim.has_limb("l_arm")) + limb = victim.get_limb("l_arm") + totalslabs += 1 + limb.droplimb(FALSE, TRUE, "gibber") + var/obj/item/reagent_container/food/snacks/meat/allmeat[totalslabs] for(var/i in 1 to totalslabs) var/obj/item/reagent_container/food/snacks/meat/newmeat @@ -194,26 +246,38 @@ newmeat.name = newmeat.made_from_player + newmeat.name allmeat[i] = newmeat - if(src.occupant.client) // Gibbed a cow with a client in it? log that shit - src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [key_name(user)]" + // Synths wont die to this (on it's own at least), dont log as a gib + if(synthetic) + if(occupant.client) // Log still + occupant.attack_log += "\[[time_stamp()]\] Was delimbed by [key_name(user)]" + user.attack_log += "\[[time_stamp()]\] delimbed [key_name(occupant)]" + msg_admin_attack("[key_name(user)] delimbed [key_name(occupant)] with a gibber in [user.loc.name]([user.x], [user.y], [user.z]).", user.x, user.y, user.z) + continue + + if(occupant.client) // Gibbed a cow with a client in it? log that shit + occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [key_name(user)]" user.attack_log += "\[[time_stamp()]\] Gibbed [key_name(occupant)]" msg_admin_attack("[key_name(user)] gibbed [key_name(occupant)] in [user.loc.name] ([user.x], [user.y], [user.z]).", user.x, user.y, user.z) - src.occupant.death(create_cause_data("gibber", user), TRUE) - src.occupant.ghostize() + occupant.death(create_cause_data("gibber", user), TRUE) + occupant.ghostize() - QDEL_NULL(occupant) + if(synthetic) + to_chat(occupant, SPAN_HIGHDANGER("You can detect your limbs being ripped off your body, but it begins to malfunction as it reaches your torso!")) + addtimer(CALLBACK(src, PROC_REF(create_gibs), totalslabs, allmeat), gibtime) + addtimer(CALLBACK(src, PROC_REF(go_out), TRUE), gibtime) + return - addtimer(CALLBACK(src, PROC_REF(create_gibs), totalslabs, allmeat), gibtime) + QDEL_NULL(occupant) /obj/structure/machinery/gibber/proc/create_gibs(totalslabs, list/obj/item/reagent_container/food/snacks/allmeat) playsound(loc, 'sound/effects/splat.ogg', 25, 1) operating = FALSE + var/turf/Tx = locate(x - 1, y, z) for (var/i in 1 to totalslabs) var/obj/item/meatslab = allmeat[i] - var/turf/Tx = locate(x - i, y, z) meatslab.forceMove(loc) - meatslab.throw_atom(Tx, i, SPEED_FAST, src) + meatslab.throw_atom(Tx, 1, SPEED_FAST, src) if (!Tx.density) if(istype(meatslab, /obj/item/reagent_container/food/snacks/meat/xenomeat)) new /obj/effect/decal/cleanable/blood/gibs/xeno(Tx) diff --git a/code/game/objects/effects/effect_system/foam.dm b/code/game/objects/effects/effect_system/foam.dm index 525cb8c731a9..7a06fa50619c 100644 --- a/code/game/objects/effects/effect_system/foam.dm +++ b/code/game/objects/effects/effect_system/foam.dm @@ -20,6 +20,7 @@ var/expand = 1 animate_movement = 0 var/metal = FOAM_NOT_METAL + var/time_to_solidify = 4 SECONDS /obj/effect/particle_effect/foam/Initialize(mapload, ismetal=0) @@ -28,7 +29,7 @@ metal = ismetal playsound(src, 'sound/effects/bubbles2.ogg', 25, 1, 5) addtimer(CALLBACK(src, PROC_REF(foam_react)), 3 + metal*3) - addtimer(CALLBACK(src, PROC_REF(foam_metal_final_react)), 40) + addtimer(CALLBACK(src, PROC_REF(foam_metal_final_react)), time_to_solidify) /obj/effect/particle_effect/foam/proc/foam_react() process() diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index c9e404ae5b60..6e3869f563a4 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -240,9 +240,9 @@ if(isyautja(M) || isxeno(M)) burn_damage *= xeno_yautja_reduction + var/reagent = new /datum/reagent/napalm/ut() M.burn_skin(burn_damage) - M.adjust_fire_stacks(applied_fire_stacks) - M.fire_reagent = new /datum/reagent/napalm/ut() + M.adjust_fire_stacks(applied_fire_stacks, reagent) M.IgniteMob() M.updatehealth() @@ -316,7 +316,7 @@ if(xeno_affecting) stun_chance = 35 if(prob(stun_chance)) - creature.apply_effect(1, WEAKEN) + creature.apply_effect(2, WEAKEN) //Topical damage (neurotoxin on exposed skin) if(xeno_creature) diff --git a/code/game/objects/effects/landmarks/survivor_spawner.dm b/code/game/objects/effects/landmarks/survivor_spawner.dm index 803d73151aeb..4a6e5272ed05 100644 --- a/code/game/objects/effects/landmarks/survivor_spawner.dm +++ b/code/game/objects/effects/landmarks/survivor_spawner.dm @@ -201,8 +201,8 @@ //CMB Survivors// /obj/effect/landmark/survivor_spawner/fiorina_armory_cmb - equipment = /datum/equipment_preset/survivor/colonial_marshal - synth_equipment = /datum/equipment_preset/synth/survivor/cmb_synth + equipment = /datum/equipment_preset/survivor/cmb/standard + synth_equipment = /datum/equipment_preset/synth/survivor/cmb/synth intro_text = list("

You are a CMB Deputy!

",\ "You are aware of the 'alien' threat.",\ "Your primary objective is to survive the infestation.") @@ -211,8 +211,8 @@ spawn_priority = SPAWN_PRIORITY_VERY_HIGH /obj/effect/landmark/survivor_spawner/fiorina_armory_riot_control - equipment = /datum/equipment_preset/survivor/colonial_marshal/fiorina - synth_equipment = /datum/equipment_preset/synth/survivor/cmb_synth + equipment = /datum/equipment_preset/survivor/cmb/ua + synth_equipment = /datum/equipment_preset/synth/survivor/cmb/ua_synth intro_text = list("

You are a United Americas Riot Control Officer!

",\ "You are aware of the 'alien' threat.",\ "Your primary objective is to survive the infestation.") diff --git a/code/game/objects/items/reagent_containers/food/snacks/meat.dm b/code/game/objects/items/reagent_containers/food/snacks/meat.dm index f68f488f268d..f541986112e5 100644 --- a/code/game/objects/items/reagent_containers/food/snacks/meat.dm +++ b/code/game/objects/items/reagent_containers/food/snacks/meat.dm @@ -28,7 +28,8 @@ name = "synthetic meat" desc = "A synthetic slab of flesh." -/obj/item/reagent_container/food/snacks/meat/synthmeat/synthflesh //meat made from synthetics. Slightly toxic +/// Meat made from synthetics. Slightly toxic +/obj/item/reagent_container/food/snacks/meat/synthmeat/synthflesh name = "synthetic flesh" desc = "A slab of artificial, inorganic 'flesh' that resembles human meat. Probably came from a synth." icon_state = "synthmeat" diff --git a/code/game/objects/items/reagent_containers/glass.dm b/code/game/objects/items/reagent_containers/glass.dm index fc8d03f5d24d..e0f432bd5b09 100644 --- a/code/game/objects/items/reagent_containers/glass.dm +++ b/code/game/objects/items/reagent_containers/glass.dm @@ -365,6 +365,14 @@ ground_offset_x = 9 ground_offset_y = 8 +/obj/item/reagent_container/glass/beaker/vial/epinephrine + name = "epinephrine vial" + +/obj/item/reagent_container/glass/beaker/vial/epinephrine/Initialize() + . = ..() + reagents.add_reagent("adrenaline", 30) + update_icon() + /obj/item/reagent_container/glass/beaker/vial/tricordrazine name = "tricordrazine vial" diff --git a/code/game/objects/items/reagent_containers/glass/bottle.dm b/code/game/objects/items/reagent_containers/glass/bottle.dm index 9e0215b535b6..61cdee01c8f8 100644 --- a/code/game/objects/items/reagent_containers/glass/bottle.dm +++ b/code/game/objects/items/reagent_containers/glass/bottle.dm @@ -396,3 +396,13 @@ . = ..() reagents.add_reagent("tricordrazine", 60) update_icon() + +/obj/item/reagent_container/glass/bottle/epinephrine + name = "\improper Epinephrine bottle" + desc = "A small bottle. Contains epinephrine - Used to increase a patients arterial blood pressure, amongst other actions, to assist in cardiopulmonary resuscitation." //"I can't lie to you about your odds of a successful resuscitation, but you have my sympathies" + volume = 60 + +/obj/item/reagent_container/glass/bottle/epinephrine/Initialize() + . = ..() + reagents.add_reagent("adrenaline", 60) + update_icon() diff --git a/code/game/objects/items/reagent_containers/hypospray.dm b/code/game/objects/items/reagent_containers/hypospray.dm index 5e268d35a33d..05b76568d702 100644 --- a/code/game/objects/items/reagent_containers/hypospray.dm +++ b/code/game/objects/items/reagent_containers/hypospray.dm @@ -237,6 +237,9 @@ /obj/item/reagent_container/hypospray/tricordrazine starting_vial = /obj/item/reagent_container/glass/beaker/vial/tricordrazine +/obj/item/reagent_container/hypospray/epinephrine + starting_vial = /obj/item/reagent_container/glass/beaker/vial/epinephrine + /obj/item/reagent_container/hypospray/sedative name = "Sedative Hypospray" starting_vial = /obj/item/reagent_container/glass/beaker/vial/sedative diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index a977eb880ff5..1daffa2908f0 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -319,6 +319,29 @@ new /obj/item/storage/pill_bottle/inaprovaline(src) new /obj/item/storage/pill_bottle/tramadol(src) +/obj/item/storage/belt/medical/lifesaver/upp/synth/fill_preset_inventory() + new /obj/item/storage/pill_bottle/bicaridine(src) + new /obj/item/storage/pill_bottle/bicaridine(src) + new /obj/item/storage/pill_bottle/kelotane(src) + new /obj/item/storage/pill_bottle/kelotane(src) + new /obj/item/storage/pill_bottle/tramadol(src) + new /obj/item/storage/pill_bottle/tramadol(src) + new /obj/item/storage/pill_bottle/antitox(src) + new /obj/item/storage/pill_bottle/alkysine(src) + new /obj/item/storage/pill_bottle/imidazoline(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/reagent_container/hypospray/autoinjector/dexalinp(src) + new /obj/item/reagent_container/hypospray/autoinjector/oxycodone(src) + new /obj/item/device/healthanalyzer(src) + /obj/item/storage/belt/security name = "\improper M276 pattern security rig" desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This configuration is commonly seen among USCM Military Police and peacekeepers, though it can hold some light munitions." @@ -383,6 +406,13 @@ new /obj/item/reagent_container/spray/pepper(src) new /obj/item/device/clue_scanner(src) +/obj/item/storage/belt/security/MP/full/synth/fill_preset_inventory() + new /obj/item/explosive/grenade/flashbang(src) + new /obj/item/device/flash(src) + new /obj/item/weapon/baton(src) + new /obj/item/reagent_container/spray/pepper(src) + new /obj/item/device/clue_scanner(src) + new /obj/item/handcuffs(src) /obj/item/storage/belt/security/MP/UPP name = "\improper Type 43 military police rig" diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index c3df7547776d..1b75a1a7d89d 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -1272,6 +1272,21 @@ new /obj/item/explosive/plastic(src) new /obj/item/explosive/plastic(src) +/obj/item/storage/pouch/tools/tactical/upp + name = "synthetic tools pouch" + desc = "Special issue tools pouch for UPP synthetics. Due to the enhanced strength of the synthetic and its inability to feel discomfort, this pouch is designed to maximize internal space with no concern for its wearer's comfort." + icon_state = "tools" + storage_slots = 7 + +/obj/item/storage/pouch/tools/tactical/upp/fill_preset_inventory() + new /obj/item/tool/wrench(src) + new /obj/item/tool/crowbar(src) + new /obj/item/tool/wirecutters(src) + new /obj/item/device/multitool(src) + new /obj/item/tool/weldingtool(src) + new /obj/item/stack/cable_coil(src) + new /obj/item/stack/cable_coil(src) + /obj/item/storage/pouch/tools/uppsynth/fill_preset_inventory() new /obj/item/tool/crowbar(src) new /obj/item/tool/wirecutters(src) diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 0497a410a373..92400e2d3184 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -89,7 +89,7 @@ /obj/item/weapon/shield/riot/attackby(obj/item/W as obj, mob/user as mob) if(cooldown < world.time - 25) - if(istype(W, /obj/item/weapon/baton) || istype(W, /obj/item/weapon/sword) || istype(W, /obj/item/weapon/baseballbat) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/chainofcommand)) + if(istype(W, /obj/item/weapon/baton) || istype(W, /obj/item/weapon/sword) || istype(W, /obj/item/weapon/telebaton) || istype(W, /obj/item/weapon/baseballbat) || istype(W, /obj/item/weapon/classic_baton) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/chainofcommand)) user.visible_message(SPAN_WARNING("[user] bashes [src] with [W]!")) playsound(user.loc, 'sound/effects/shieldbash.ogg', 25, 1) cooldown = world.time diff --git a/code/game/objects/structures/pipes/vents/pump_scrubber.dm b/code/game/objects/structures/pipes/vents/pump_scrubber.dm index a4565c610ad5..acc8b4784af9 100644 --- a/code/game/objects/structures/pipes/vents/pump_scrubber.dm +++ b/code/game/objects/structures/pipes/vents/pump_scrubber.dm @@ -21,6 +21,35 @@ name = "Reinforced Air Vent" explodey = FALSE +/// Vents that are linked to ARES Security Protocols, allowing the ARES Interface to trigger security measures. +/obj/structure/pipes/vents/pump/no_boom/gas + name = "Security Air Vent" + var/datum/ares_link/link + var/vent_tag + COOLDOWN_DECLARE(vent_trigger_cooldown) + +/obj/structure/pipes/vents/pump/no_boom/gas/Initialize() + link_systems(override = FALSE) + . = ..() + +/obj/structure/pipes/vents/pump/no_boom/gas/Destroy() + delink() + return ..() + +/obj/structure/pipes/vents/pump/no_boom/gas/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(link && !override) + return FALSE + delink() + if(new_link) + link = new_link + new_link.linked_vents += src + return TRUE + +/obj/structure/pipes/vents/pump/no_boom/gas/proc/delink() + if(link) + link.linked_vents -= src + link = null + /obj/structure/pipes/vents/pump/on icon_state = "on" diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index ce02cdb59e20..84298faaa3a1 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -543,27 +543,28 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) log_ahelp(id, "Defer", "Deferred to mentors by [usr.key]", null, usr.ckey) Close(silent = TRUE) -/datum/admin_help/proc/mark_ticket() +/datum/admin_help/proc/mark_ticket(mob/marking_admin) + var/mob/user = marking_admin || usr if(marked_admin) - if(marked_admin == usr.ckey) + if(marked_admin == user.ckey) unmark_ticket() return - to_chat(usr, SPAN_WARNING("This ticket has already been marked by [marked_admin].")) - var/unmark_option = tgui_alert(usr, "This message has been marked by [marked_admin]. Do you want to override?", "Marked Ticket", list("Overwrite Mark", "Unmark", "Cancel")) + to_chat(user, SPAN_WARNING("This ticket has already been marked by [marked_admin].")) + var/unmark_option = tgui_alert(user, "This message has been marked by [marked_admin]. Do you want to override?", "Marked Ticket", list("Overwrite Mark", "Unmark", "Cancel")) if(unmark_option == "Unmark") unmark_ticket() return if(unmark_option != "Overwrite Mark") return - var/key_name = key_name_admin(usr) + var/key_name = key_name_admin(user) AddInteraction("Marked by [key_name].", player_message = "Ticket marked!") to_chat(initiator, SPAN_ADMINHELP("An admin is preparing to respond to your ticket.")) var/msg = "Ticket [TicketHref("#[id]")] marked by [key_name]." message_admins(msg) log_admin_private(msg) - log_ahelp(id, "Marked", "Marked by [usr.key]", sender = usr.ckey) - marked_admin = usr.ckey + log_ahelp(id, "Marked", "Marked by [user.key]", sender = user.ckey) + marked_admin = user.ckey /datum/admin_help/proc/unmark_ticket() var/key_name = key_name_admin(usr) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 76525b2cae96..a6cf0f02a3de 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -60,6 +60,9 @@ var/message_prompt = "Message:" + if(AH && !AH.marked_admin) + AH.mark_ticket() + if((AH?.opening_responders && length(AH.ticket_interactions) == 1 ) || ((AH?.marked_admin && AH?.marked_admin != usr.ckey) && length(AH.ticket_interactions) == 2)) SEND_SOUND(src, sound('sound/machines/buzz-sigh.ogg', volume=30)) message_prompt += "\n\n**This ticket is already being responded to by: [length(AH.opening_responders) ? english_list(AH.opening_responders) : AH.marked_admin]**" diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 63cdcfd8716c..213c54f0e201 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -5,8 +5,6 @@ #define UPLOAD_LIMIT 10485760 //Restricts client uploads to the server to 10MB //Boosted this thing. What's the worst that can happen? #define MIN_CLIENT_VERSION 0 //Just an ambiguously low version for now, I don't want to suddenly stop people playing. //I would just like the code ready should it ever need to be used. -#define GOOD_BYOND_MAJOR 513 -#define GOOD_BYOND_MINOR 1500 GLOBAL_LIST_INIT(blacklisted_builds, list( "1407" = "bug preventing client display overrides from working leads to clients being able to see things/mobs they shouldn't be able to see", @@ -364,14 +362,34 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( INVOKE_ASYNC(src, /client/proc/set_macros) // Version check below if we ever need to start checking against BYOND versions again. - - /*if((byond_version < world.byond_version) || ((byond_version == world.byond_version) && (byond_build < world.byond_build))) - src << "Your version of Byond (v[byond_version].[byond_build]) differs from the server (v[world.byond_version].[world.byond_build]). You may experience graphical glitches, crashes, or other errors. You will be disconnected until your version matches or exceeds the server version.
\ - Direct Download (Windows Installer): http://www.byond.com/download/build/[world.byond_version]/[world.byond_version].[world.byond_build]_byond.exe
\ - Other versions (search for [world.byond_build] or higher): http://www.byond.com/download/build/[world.byond_version]
" + var/breaking_version = CONFIG_GET(number/client_error_version) + var/breaking_build = CONFIG_GET(number/client_error_build) + var/warn_version = CONFIG_GET(number/client_warn_version) + var/warn_build = CONFIG_GET(number/client_warn_build) + + if (byond_version < breaking_version || (byond_version == breaking_version && byond_build < breaking_build)) //Out of date client. + to_chat_immediate(src, SPAN_DANGER("Your version of BYOND is too old:")) + to_chat_immediate(src, CONFIG_GET(string/client_error_message)) + to_chat_immediate(src, "Your version: [byond_version].[byond_build]") + to_chat_immediate(src, "Required version: [breaking_version].[breaking_build] or later") + to_chat_immediate(src, "Visit BYOND's website to get the latest version of BYOND.") qdel(src) - return*/ - //hardcode for now + return + + if (byond_version < warn_version || (byond_version == warn_version && byond_build < warn_build)) //We have words for this client. + if(CONFIG_GET(flag/client_warn_popup)) + var/msg = "Your version of BYOND may be getting out of date:
" + msg += CONFIG_GET(string/client_warn_message) + "

" + msg += "Your version: [byond_version].[byond_build]
" + msg += "Required version to remove this message: [warn_version].[warn_build] or later
" + msg += "Visit BYOND's website to get the latest version of BYOND.
" + src << browse(msg, "window=warning_popup") + else + to_chat(src, SPAN_DANGER("Your version of BYOND may be getting out of date:")) + to_chat(src, CONFIG_GET(string/client_warn_message)) + to_chat(src, "Your version: [byond_version].[byond_build]") + to_chat(src, "Required version to remove this message: [warn_version].[warn_build] or later") + to_chat(src, "Visit BYOND's website to get the latest version of BYOND.") if (num2text(byond_build) in GLOB.blacklisted_builds) log_access("Failed login: [key] - blacklisted byond build ([byond_version].[byond_build])") @@ -382,10 +400,6 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( qdel(src) return - //do this check after the blacklist check to avoid confusion - if((byond_version < GOOD_BYOND_MAJOR) || ((byond_version == GOOD_BYOND_MAJOR) && (byond_build < GOOD_BYOND_MINOR))) - to_chat(src, FONT_SIZE_HUGE(SPAN_BOLDNOTICE("YOUR BYOND VERSION IS NOT WELL SUITED FOR THIS SERVER. Download latest BETA build or you may suffer random crashes or disconnects."))) - // Initialize tgui panel stat_panel.initialize( inline_html = file("html/statbrowser.html"), diff --git a/code/modules/clothing/suits/marine_armor/ert.dm b/code/modules/clothing/suits/marine_armor/ert.dm index 6d2ad9934a40..106b09961103 100644 --- a/code/modules/clothing/suits/marine_armor/ert.dm +++ b/code/modules/clothing/suits/marine_armor/ert.dm @@ -287,6 +287,22 @@ armor_rad = CLOTHING_ARMOR_MEDIUMLOW armor_internaldamage = CLOTHING_ARMOR_HIGH +/obj/item/clothing/suit/storage/marine/faction/UPP/support/synth + name = "\improper UL6 Synthetic personal armor" + desc = "Modified variant of the UL6 personel armor system intended to be useable by Synthetic units. Offers no protection but very little movement impairment." + flags_marine_armor = ARMOR_LAMP_OVERLAY|SYNTH_ALLOWED + armor_melee = CLOTHING_ARMOR_NONE + armor_bullet = CLOTHING_ARMOR_NONE + armor_laser = CLOTHING_ARMOR_NONE + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_NONE + armor_bio = CLOTHING_ARMOR_NONE + armor_rad = CLOTHING_ARMOR_NONE + armor_internaldamage = CLOTHING_ARMOR_NONE + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + time_to_unequip = 0.5 SECONDS + time_to_equip = 1 SECONDS + /obj/item/clothing/suit/storage/marine/faction/UPP/commando name = "\improper UM5CU personal armor" desc = "A modification of the UM5, designed for stealth operations." @@ -731,6 +747,22 @@ uniform_restricted = list(/obj/item/clothing/under/marine/ua_riot) flags_atom = NO_SNOW_TYPE +/obj/item/clothing/suit/storage/marine/veteran/ua_riot/synth + name = "\improper UA-M1S Synthetic body armor" + desc = "Based on the M-3 pattern employed by the USCM, the UA-M1 body armor is employed by UA security, riot control and union-busting teams. The UA-1MS modification is Synthetic programming compliant, sacrificing protection for speed and carrying capacity." + armor_melee = CLOTHING_ARMOR_NONE + armor_bullet = CLOTHING_ARMOR_NONE + armor_laser = CLOTHING_ARMOR_NONE + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_NONE + armor_bio = CLOTHING_ARMOR_NONE + armor_rad = CLOTHING_ARMOR_NONE + armor_internaldamage = CLOTHING_ARMOR_NONE + slowdown = SLOWDOWN_ARMOR_SUPER_LIGHT + storage_slots = 3 + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_marine_armor = ARMOR_SQUAD_OVERLAY|ARMOR_LAMP_OVERLAY|SYNTH_ALLOWED + //================//=ROYAL MARINES=\\====================================\\ //=======================================================================\\ diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 413c2edda0c7..d95c0a593d34 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -676,6 +676,25 @@ /obj/item/clothing/accessory/storage/surg_vest/drop_green/equipped hold = /obj/item/storage/internal/accessory/surg_vest/equipped +/obj/item/clothing/accessory/storage/surg_vest/drop_green/upp + hold = /obj/item/storage/internal/accessory/surg_vest/drop_green/upp + +/obj/item/storage/internal/accessory/surg_vest/drop_green/upp/fill_preset_inventory() + new /obj/item/tool/surgery/scalpel(src) + new /obj/item/tool/surgery/hemostat(src) + new /obj/item/tool/surgery/retractor(src) + new /obj/item/tool/surgery/cautery(src) + new /obj/item/tool/surgery/circular_saw(src) + new /obj/item/tool/surgery/surgicaldrill(src) + new /obj/item/tool/surgery/scalpel/pict_system(src) + new /obj/item/tool/surgery/bonesetter(src) + new /obj/item/tool/surgery/FixOVein(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/nanopaste(src) + new /obj/item/tool/surgery/bonegel(src) + new /obj/item/tool/surgery/bonegel(src) + new /obj/item/reagent_container/blood/OMinus(src) + /obj/item/clothing/accessory/storage/surg_vest/drop_black name = "black surgical drop pouch" desc = "A tactical black synthcotton drop pouch purpose-made for holding surgical tools." diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index 7e57430f081a..e02bb930d416 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -43,12 +43,12 @@ ui = new(user, src, "CardMod", name) ui.open() -/obj/structure/machinery/computer/card/ui_act(action, params) +/obj/structure/machinery/computer/card/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() if(.) return - var/mob/user = usr + var/mob/user = ui.user playsound(src, pick('sound/machines/computer_typing4.ogg', 'sound/machines/computer_typing5.ogg', 'sound/machines/computer_typing6.ogg'), 5, 1) switch(action) @@ -91,18 +91,11 @@ printing = TRUE playsound(src.loc, 'sound/machines/fax.ogg', 15, 1) sleep(40) - var/faction = "N/A" - if(target_id_card.faction_group && islist(target_id_card.faction_group)) - faction = jointext(target_id_card.faction_group, ", ") - if(isnull(target_id_card.faction_group)) - target_id_card.faction_group = list() - else - faction = target_id_card.faction_group var/contents = {"

Access Report

Prepared By: [user_id_card?.registered_name ? user_id_card.registered_name : "Unknown"]
For: [target_id_card.registered_name ? target_id_card.registered_name : "Unregistered"]

- Faction: [faction]
+ Faction: [target_id_card.faction ? target_id_card.faction : "N/A"]
Assignment: [target_id_card.assignment]
Account Number: #[target_id_card.associated_account_number]
Blood Type: [target_id_card.blood_type]

@@ -112,7 +105,10 @@ var/known_access_rights = get_access(ACCESS_LIST_MARINE_ALL) for(var/A in target_id_card.access) if(A in known_access_rights) - contents += " [get_access_desc(A)]" + contents += " [get_access_desc(A)]
" + contents += "
Modification Log:
" + for(var/change in target_id_card.modification_log) + contents += " [change]
" var/obj/item/paper/P = new /obj/item/paper(src.loc) P.name = "Access Report" @@ -139,9 +135,9 @@ GLOB.data_core.manifest_modify(target_id_card.registered_name, target_id_card.registered_ref, target_id_card.assignment, target_id_card.rank) target_id_card.name = text("[target_id_card.registered_name]'s ID Card ([target_id_card.assignment])") if(target_id_card.registered_name != origin_name) - log_idmod(target_id_card, " [key_name_admin(usr)] changed the registered name of the ID to '[target_id_card.registered_name]'. ") + log_idmod(target_id_card, " [user.real_name] changed the registered name of the ID to '[target_id_card.registered_name]'. ", key_name_admin(user)) if(target_id_card.assignment != origin_assignment) - log_idmod(target_id_card, " [key_name_admin(usr)] changed the assignment of the ID to the custom position '[target_id_card.assignment]'. ") + log_idmod(target_id_card, " [user.real_name] changed the assignment of the ID to the custom position '[target_id_card.assignment]'. ", key_name_admin(user)) if(ishuman(user)) target_id_card.forceMove(user.loc) if(!user.get_active_hand()) @@ -170,8 +166,8 @@ target_id_card.assignment = "Terminated" target_id_card.access = list() - log_idmod(target_id_card, " [key_name_admin(usr)] terminated the ID. ") - message_admins("[key_name_admin(usr)] terminated the ID of [target_id_card.registered_name].") + log_idmod(target_id_card, " [user.real_name] terminated the ID. ", key_name_admin(user)) + message_admins("[user.real_name] terminated the ID of [target_id_card.registered_name].", key_name_admin(user)) return TRUE if("PRG_edit") if(!authenticated || !target_id_card) @@ -221,19 +217,19 @@ target_id_card.faction_group = list() if(params["access_target"] in target_id_card.faction_group) target_id_card.faction_group -= params["access_target"] - log_idmod(target_id_card, " [key_name_admin(usr)] revoked [access_type] IFF. ") + log_idmod(target_id_card, " [user.real_name] revoked [access_type] IFF. ", key_name_admin(user)) else target_id_card.faction_group |= params["access_target"] - log_idmod(target_id_card, " [key_name_admin(usr)] granted [access_type] IFF. ") + log_idmod(target_id_card, " [user.real_name] granted [access_type] IFF. ", key_name_admin(user)) return TRUE access_type = text2num(params["access_target"]) if(access_type in (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN))) if(access_type in target_id_card.access) target_id_card.access -= access_type - log_idmod(target_id_card, " [key_name_admin(usr)] revoked access '[access_type]'. ") + log_idmod(target_id_card, " [user.real_name] revoked access '[get_access_desc(access_type)]'. ", key_name_admin(user)) else target_id_card.access |= access_type - log_idmod(target_id_card, " [key_name_admin(usr)] granted access '[access_type]'. ") + log_idmod(target_id_card, " [user.real_name] granted access '[get_access_desc(access_type)]'. ", key_name_admin(user)) return TRUE if("PRG_grantall") if(!authenticated || !target_id_card) @@ -241,7 +237,7 @@ target_id_card.access |= (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN)) target_id_card.faction_group |= factions - log_idmod(target_id_card, " [key_name_admin(usr)] granted the ID all access and USCM IFF. ") + log_idmod(target_id_card, " [user.real_name] granted the ID all access and USCM IFF. ", key_name_admin(user)) return TRUE if("PRG_denyall") if(!authenticated || !target_id_card) @@ -250,7 +246,7 @@ var/list/access = target_id_card.access access.Cut() target_id_card.faction_group -= factions - log_idmod(target_id_card, " [key_name_admin(usr)] removed all accesses and USCM IFF. ") + log_idmod(target_id_card, " [user.real_name] removed all accesses and USCM IFF. ", key_name_admin(user)) return TRUE if("PRG_grantregion") if(!authenticated || !target_id_card) @@ -258,14 +254,14 @@ if(params["region"] == "Faction (IFF system)") target_id_card.faction_group |= factions - log_idmod(target_id_card, " [key_name_admin(usr)] granted USCM IFF. ") + log_idmod(target_id_card, " [user.real_name] granted USCM IFF. ", key_name_admin(user)) return TRUE var/region = text2num(params["region"]) if(isnull(region)) return target_id_card.access |= get_region_accesses(region) var/additions = get_region_accesses_name(region) - log_idmod(target_id_card, " [key_name_admin(usr)] granted all [additions] accesses. ") + log_idmod(target_id_card, " [user.real_name] granted all [additions] accesses. ", key_name_admin(user)) return TRUE if("PRG_denyregion") if(!authenticated || !target_id_card) @@ -273,14 +269,14 @@ if(params["region"] == "Faction (IFF system)") target_id_card.faction_group -= factions - log_idmod(target_id_card, " [key_name_admin(usr)] revoked USCM IFF. ") + log_idmod(target_id_card, " [user.real_name] revoked USCM IFF. ", key_name_admin(user)) return TRUE var/region = text2num(params["region"]) if(isnull(region)) return target_id_card.access -= get_region_accesses(region) var/additions = get_region_accesses_name(region) - log_idmod(target_id_card, " [key_name_admin(usr)] revoked all [additions] accesses. ") + log_idmod(target_id_card, " [user.real_name] revoked all [additions] accesses. ", key_name_admin(user)) return TRUE if("PRG_account") if(!authenticated || !target_id_card) @@ -288,7 +284,7 @@ var/account = text2num(params["account"]) target_id_card.associated_account_number = account - log_idmod(target_id_card, " [key_name_admin(usr)] changed the account number to '[account]'. ") + log_idmod(target_id_card, " [user.real_name] changed the account number to '[account]'. ", key_name_admin(user)) return TRUE /obj/structure/machinery/computer/card/ui_static_data(mob/user) @@ -1084,6 +1080,7 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) // 50-59: Engineering JOB_UPP_COMBAT_SYNTH = 50, JOB_UPP_CREWMAN = 51, + JOB_UPP_SUPPORT_SYNTH = 52, // 60-69: Soldiers JOB_UPP_LEADER = 60, JOB_UPP_SPECIALIST = 61, diff --git a/code/modules/cm_marines/orbital_cannon.dm b/code/modules/cm_marines/orbital_cannon.dm index 23bce06fdc1a..ce69115cee48 100644 --- a/code/modules/cm_marines/orbital_cannon.dm +++ b/code/modules/cm_marines/orbital_cannon.dm @@ -184,9 +184,12 @@ GLOBAL_LIST(ob_type_fuel_requirements) chambered_tray = TRUE var/misfuel = get_misfuel_amount() var/message = "[key_name(user)] chambered the Orbital Bombardment cannon." + var/ares_message = "Shell chambered." if(misfuel) message += " It is misfueled by [misfuel] units!" + ares_message += " Fuel imbalance detected!" message_admins(message, x, y, z) + log_ares_bombardment(user, lowertext(tray.warhead.name), ares_message) update_icon() diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 489a7e528832..70b2b82d8c86 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -800,7 +800,7 @@ notify_ghosts(header = "Bombardment Inbound", message = "\A [ob_name] targeting [get_area(T)] has been fired!", source = T, alert_overlay = warhead_appearance, extra_large = TRUE) /// Project ARES interface log. - log_ares_bombardment(user.name, ob_name, "X[x_bomb], Y[y_bomb] in [get_area(T)]") + log_ares_bombardment(user.name, ob_name, "Bombardment fired at X[x_bomb], Y[y_bomb] in [get_area(T)]") busy = FALSE if(istype(T)) diff --git a/code/modules/cm_tech/droppod/lz_effect.dm b/code/modules/cm_tech/droppod/lz_effect.dm index 6a73916c7b3f..7ab955d8a00c 100644 --- a/code/modules/cm_tech/droppod/lz_effect.dm +++ b/code/modules/cm_tech/droppod/lz_effect.dm @@ -34,6 +34,7 @@ /obj/effect/warning/explosive/proc/disappear() qdel(src) + /obj/effect/warning/explosive/gas name = "gas warning" color = "#42acd6" diff --git a/code/modules/gear_presets/survivors/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm b/code/modules/gear_presets/survivors/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm new file mode 100644 index 000000000000..657439a13f50 --- /dev/null +++ b/code/modules/gear_presets/survivors/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm @@ -0,0 +1,276 @@ +// loadouts for riot_in_progress.dmm nightmare, thematic survivor preset. + +/datum/equipment_preset/survivor/cmb + name = "Survivor - Colonial Marshal" + faction = FACTION_MARSHAL + faction_group = list(FACTION_MARSHAL, FACTION_MARINE, FACTION_SURVIVOR) + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + var/human_versus_human = FALSE + access = list( + ACCESS_LIST_UA, + ) + +//*************************************************CMB****************************************************/ + +/datum/equipment_preset/survivor/cmb/standard + name = "Survivor - Colonial Marshal Deputy(Riot Response)" + paygrade = PAY_SHORT_CMBD + role_comm_title = "CMB DEP" + flags = EQUIPMENT_PRESET_EXTRA + assignment = "CMB Deputy" + rank = JOB_CMB + skills = /datum/skills/cmb + +/datum/equipment_preset/survivor/cmb/standard/load_gear(mob/living/carbon/human/new_human) + + var/choice = rand(1,10) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/holobadge/cord, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/holdout, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15/rubber, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/CMB/full, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/CMB, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/holdout, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/camera, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder, WEAR_IN_BACK) + + switch(choice) + if(1 to 6) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/cmb, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + if(7 to 8) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge/rubber, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + if(9 to 10) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/cmb, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/mp5, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector, WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/mp5, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/mp5, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/mp5, WEAR_IN_R_STORE) + +// cmb synth +/datum/equipment_preset/synth/survivor/cmb/synth + name = "Survivor - Synthetic - CMB Investigative Synthetic(Riot Response)" + paygrade = PAY_SHORT_CMBS + idtype = /obj/item/card/id/deputy + role_comm_title = "CMB Syn" + flags = EQUIPMENT_PRESET_EXTRA + assignment = "CMB Investigative Synthetic" + rank = JOB_CMB_SYN + languages = ALL_SYNTH_LANGUAGES + skills = /datum/skills/synthetic/cmb + +/datum/equipment_preset/synth/survivor/cmb/synth/load_race(mob/living/carbon/human/new_human) + new_human.set_species(SYNTH_COLONY) + +/datum/equipment_preset/synth/survivor/cmb/synth/load_gear(mob/living/carbon/human/new_human) + //backpack + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/security, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/autopsy_scanner, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge/rubber, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/camera, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/pen, WEAR_R_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/CMB, WEAR_HEAD) + //uniform + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/holobadge/cord, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/droppouch, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/upgraded, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/candy, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/storage/pill_bottle/imidazoline, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range/designator, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/telebaton, WEAR_IN_JACKET) + //belt + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/CMB/synth, WEAR_WAIST) + //holding + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + //pouches + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/synth/full, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/wrench, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/multitool, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/cable_coil, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/hugetank, WEAR_IN_R_STORE) + +//************************************************UA RIOT POLICE****************************************************/ + +/datum/equipment_preset/survivor/cmb/ua + name = "Survivor - United Americas Riot Officer(Riot Response)" + paygrade = PAY_SHORT_CPO + role_comm_title = "UA RCP" + flags = EQUIPMENT_PRESET_EXTRA + assignment = "United Americas Police Officer" + skills = /datum/skills/civilian/survivor/marshal + idtype = /obj/item/card/id/silver + +/datum/equipment_preset/survivor/cmb/ua/load_gear(mob/living/carbon/human/new_human) + + var/choice = rand(1,10) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/ua_riot, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/ua_riot, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/riot_shield, WEAR_IN_HELMET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/full, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full, WEAR_L_STORE) + + switch(choice) + if(1 to 6) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/b92fs, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/b92fs, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/b92fs, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m16, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m16, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m16, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/weapon/classic_baton, WEAR_R_HAND) + if(7) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/combat/riot, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/beanbag, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/weapon/classic_baton, WEAR_R_HAND) + new_human.equip_to_slot_or_del(new /obj/item/weapon/shield/riot, WEAR_L_HAND) + if(8) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/m4a3, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/rubber, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/launcher/grenade/m81/riot, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/slug/baton, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/slug/baton, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/slug/baton, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/slug/baton, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_R_STORE) + if(9 to 10) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/highpower/black, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/highpower, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge/rubber, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/mp5, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector, WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/mp5, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/mp5, WEAR_IN_R_STORE) + +// ua synth +/datum/equipment_preset/synth/survivor/cmb/ua_synth + name = "Survivor - Synthetic - UA Police Synthetic(Riot Response)" + paygrade = PAY_SHORT_CMBS + role_comm_title = "UA Syn" + flags = EQUIPMENT_PRESET_EXTRA + assignment = "UA Police Synthetic" + languages = ALL_SYNTH_LANGUAGES + skills = /datum/skills/colonial_synthetic + idtype = /obj/item/card/id/silver + +/datum/equipment_preset/synth/survivor/cmb/ua_synth/load_race(mob/living/carbon/human/new_human) + new_human.set_species(SYNTH_COLONY) + +/datum/equipment_preset/synth/survivor/cmb/ua_synth/load_gear(mob/living/carbon/human/new_human) + //backpack + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/baton_slug, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/m16, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/pen, WEAR_R_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/ua_riot, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/riot_shield, WEAR_IN_HELMET) + //uniform + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/holobadge/cord, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/droppouch, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs/zip, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/storage/box/flashbangs, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/ua_riot/synth, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/telebaton, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/flashbang, WEAR_IN_JACKET) + //belt + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/full/synth, WEAR_WAIST) + //holding + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/classic_baton, WEAR_R_HAND) + new_human.equip_to_slot_or_del(new /obj/item/weapon/shield/riot, WEAR_L_HAND) + //pouches + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/synth/full, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full, WEAR_R_STORE) diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index 30daac203a18..4eb674cf3796 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -418,7 +418,7 @@ WEAR_IN_BACK = /obj/item/device/taperecorder, WEAR_JACKET = /obj/item/clothing/suit/storage/det_suit/black, WEAR_IN_JACKET = /obj/item/weapon/telebaton, - WEAR_WAIST = /obj/item/storage/belt/security/MP/full, + WEAR_WAIST = /obj/item/storage/belt/security/MP/full/synth, WEAR_HANDS = /obj/item/clothing/gloves/black, WEAR_R_HAND = /obj/item/device/camera, WEAR_FEET = /obj/item/clothing/shoes/marine/knife, @@ -464,8 +464,8 @@ WEAR_IN_BACK = /obj/item/handcuffs/zip, WEAR_IN_BACK = /obj/item/handcuffs/zip, WEAR_JACKET = /obj/item/clothing/suit/storage/webbing, + WEAR_WAIST = /obj/item/storage/belt/security/MP/full/synth, WEAR_IN_JACKET = /obj/item/weapon/telebaton, - WEAR_WAIST = /obj/item/storage/belt/security/MP/full, WEAR_HANDS = /obj/item/clothing/gloves/black, WEAR_R_STORE = /obj/item/storage/pouch/tools/full, WEAR_FEET = /obj/item/clothing/shoes/marine/knife, diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index 324fd8b77aa6..39aed17a1fad 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -2600,8 +2600,8 @@ languages = ALL_SYNTH_LANGUAGES_UPP skills = /datum/skills/synthetic - assignment = JOB_UPP_COMBAT_SYNTH - rank = JOB_UPP_COMBAT_SYNTH + assignment = JOB_UPP_SUPPORT_SYNTH + rank = JOB_UPP_SUPPORT_SYNTH paygrade = PAY_SHORT_SYN idtype = /obj/item/card/id/dogtag @@ -2648,14 +2648,15 @@ /datum/equipment_preset/upp/synth/load_gear(mob/living/carbon/human/new_human) //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BACK) //1 - new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv, WEAR_IN_BACK) //2 - new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) //2.33 - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //2.66 - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //3 - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //3.33 + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/blood/OMinus, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/blood/OMinus, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/roller/surgical, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver, WEAR_R_EAR) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) else @@ -2665,25 +2666,29 @@ new_human.equip_to_slot_or_del(new hat, WEAR_HEAD) //body var/obj/item/clothing/under/marine/veteran/UPP/medic/UPP = new() - var/obj/item/clothing/accessory/storage/tool_webbing/equipped/webbing = new() + var/obj/item/clothing/accessory/storage/surg_vest/drop_green/upp/webbing = new() UPP.attach_accessory(new_human, webbing) new_human.equip_to_slot_or_del(UPP, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/support/synth, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/telebaton, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp/naval, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/support, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/bottle/tricordrazine, WEAR_IN_JACKET) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/synth, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/full/pills, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical/upp, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/surgical_line, WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/tricordrazine, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/epinephrine, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/bottle/epinephrine, WEAR_IN_L_STORE) /datum/equipment_preset/upp/synth/get_antag_clothing_equipment() return list( diff --git a/code/modules/gear_presets/uscm_event.dm b/code/modules/gear_presets/uscm_event.dm index dc6eb34161ee..3ab1dbc99b4e 100644 --- a/code/modules/gear_presets/uscm_event.dm +++ b/code/modules/gear_presets/uscm_event.dm @@ -375,6 +375,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/pistol/pmc_mateba(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/MP/provost/marshal(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/cotablet(new_human.back), WEAR_IN_BACK) /datum/equipment_preset/uscm_event/provost/marshal/sector name = "Provost Sector Marshal (MO7)" diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 4f9493cfdf49..d13d5aa94053 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -37,6 +37,7 @@ /// If the observer is an admin, are they excluded from the xeno queue? var/admin_larva_protection = TRUE // Enabled by default var/ghostvision = TRUE + var/self_visibility = TRUE var/can_reenter_corpse var/started_as_observer //This variable is set to 1 when you enter the game as an observer. //If you died in the game and are a ghost - this will remain as null. @@ -71,10 +72,10 @@ set desc = "Toggles your ability to see things only ghosts can see, like other ghosts" set category = "Ghost.Settings" ghostvision = !ghostvision - if(hud_used) - var/atom/movable/screen/plane_master/lighting/lighting = hud_used.plane_masters["[GHOST_PLANE]"] - if (lighting) - lighting.alpha = ghostvision? 255 : 0 + if(ghostvision) + see_invisible = INVISIBILITY_OBSERVER + else + see_invisible = HIDE_INVISIBLE_OBSERVER to_chat(usr, SPAN_NOTICE("You [(ghostvision?"now":"no longer")] have ghost vision.")) /mob/dead/observer/Initialize(mapload, mob/body) @@ -845,11 +846,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/verb/toggle_self_visibility() set name = "Toggle Self Visibility" set category = "Ghost.Settings" - - if (alpha) - alpha = 0 - else + self_visibility = !self_visibility + if (self_visibility) alpha = initial(alpha) + else + alpha = 0 + to_chat(usr, SPAN_NOTICE("You are now [(self_visibility?"visible":"invisible")].")) /mob/dead/observer/verb/view_manifest() set name = "View Crew Manifest" @@ -1189,7 +1191,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!SSticker.HasRoundStarted()) var/time_remaining = SSticker.GetTimeLeft() if(time_remaining > 0) - . += "Time To Start: [round(time_remaining)]s" + . += "Time To Start: [round(time_remaining)]s[SSticker.delay_start ? " (DELAYED)" : ""]" else if(time_remaining == -10) . += "Time To Start: DELAYED" else diff --git a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm index df272387f001..8aa3000092f5 100644 --- a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm @@ -38,6 +38,9 @@ /// the nearest human before dying var/jumps_left = 2 + var/time_to_live = 30 SECONDS + var/death_timer + var/icon_xeno = 'icons/mob/xenos/effects.dmi' var/icon_xenonid = 'icons/mob/xenonids/xenonid_crab.dmi' @@ -55,6 +58,9 @@ set_hive_data(src, hivenumber) go_active() + if (hivenumber != XENO_HIVE_TUTORIAL) + death_timer = addtimer(CALLBACK(src, PROC_REF(end_lifecycle)), time_to_live, TIMER_OVERRIDE|TIMER_STOPPABLE|TIMER_UNIQUE) + /obj/item/clothing/mask/facehugger/Destroy() . = ..() @@ -75,6 +81,10 @@ if(QDESTROYING(src)) return addtimer(CALLBACK(src, PROC_REF(check_turf)), 0.2 SECONDS) + + if(!death_timer && hivenumber != XENO_HIVE_TUTORIAL) + death_timer = addtimer(CALLBACK(src, PROC_REF(end_lifecycle)), time_to_live, TIMER_OVERRIDE|TIMER_STOPPABLE|TIMER_UNIQUE) + if(stat == CONSCIOUS && loc) //Make sure we're conscious and not idle or dead. go_idle() if(attached) @@ -173,9 +183,18 @@ if(exposed_temperature > 300) die() -/obj/item/clothing/mask/facehugger/equipped(mob/M) +/obj/item/clothing/mask/facehugger/equipped(mob/holder) SHOULD_CALL_PARENT(FALSE) // ugh equip sounds // So picking up a hugger does not prematurely kill it + if (!isxeno(holder)) + return + + var/mob/living/carbon/xenomorph/xeno = holder + + if ((xeno.caste.hugger_nurturing || hivenumber == XENO_HIVE_TUTORIAL) && death_timer) + deltimer(death_timer) + death_timer = null + go_idle() /obj/item/clothing/mask/facehugger/Crossed(atom/target) @@ -410,6 +429,10 @@ deltimer(jump_timer) jump_timer = null + if(death_timer) + deltimer(death_timer) + death_timer = null + if(!impregnated) icon_state = "[initial(icon_state)]_dead" stat = DEAD diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm index 0e897335cf10..f62bb9e17421 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm @@ -295,7 +295,6 @@ /datum/action/xeno_action/onclick/toggle_long_range/use_ability(atom/target) var/mob/living/carbon/xenomorph/xeno = owner - xeno.speed_modifier = initial(xeno.speed_modifier)// Reset the speed modifier should you be disrupted while zooming or whatnot if(xeno.observed_xeno) return diff --git a/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm b/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm index 8b268ebfce62..9be9e21fd983 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm @@ -16,9 +16,10 @@ can_be_revived = FALSE build_time_mult = BUILD_TIME_MULT_LESSER_DRONE + behavior_delegate_type = /datum/behavior_delegate/lesser_drone_base caste_desc = "A builder of hives." - can_hold_facehuggers = 1 + can_hold_facehuggers = TRUE can_hold_eggs = CAN_HOLD_TWO_HANDS acid_level = 1 weed_level = WEED_LEVEL_STANDARD @@ -118,3 +119,10 @@ /mob/living/carbon/xenomorph/lesser_drone/handle_ghost_message() return + +/datum/behavior_delegate/lesser_drone_base + name = "Base Lesser Drone Behavior Delegate" + +/datum/behavior_delegate/lesser_drone_base/on_life() + if(bound_xeno.body_position == STANDING_UP && !(locate(/obj/effect/alien/weeds) in get_turf(bound_xeno))) + bound_xeno.adjustBruteLoss(5) diff --git a/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm b/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm index e1d6dc583416..5cb756d8889d 100644 --- a/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm +++ b/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm @@ -1,6 +1,6 @@ /datum/xeno_strain/hedgehog name = RAVAGER_HEDGEHOG - description = "You lose your empower, charge, scissor cut and some slash damage, for a bit more explosive resistance, immunity to small explosions, and you gain several new abilities that allow you to become a spiky tank. You build up shards internally over time and also when taking damage that increase your armor's resilience. You can use these shards to power three new abilities: Spike Shield, which gives you a temporary shield that spits bone shards around you when damaged, Fire Spikes, which launches spikes at your target that slows them and does extra damage if they move, and finally, Spike Shed, which launches spikes all around yourself and gives you a temporary speed boost as an escape plan at the cost of all your stored shards and being unable to gain shards for thirty seconds." + description = "You lose your empower, charge, scissor cut, and some slash damage in exchange for more explosive resistance. Your resistance scales with your shard count and at 50% grants you immunity to some explosive stuns. You accumulate shards over time and when taking damage. You can use these shards to power three new abilities: Spike Shield which gives you a temporary shield that spits bone shards around you when damaged; Fire Spikes which launches spikes at your target to slow them and deal damage when they move; and Spike Shed which launches all your spikes, grants a temporary speed boost, and disables shard generation for thirty seconds." flavor_description = "They will be of iron will and steely muscle. In great armor shall they be clad, and with the mightiest spikes will they be armed." icon_state_prefix = "Hedgehog" @@ -19,7 +19,7 @@ /datum/xeno_strain/hedgehog/apply_strain(mob/living/carbon/xenomorph/ravager/ravager) ravager.plasma_max = 0 - ravager.small_explosives_stun = FALSE + ravager.small_explosives_stun = TRUE ravager.explosivearmor_modifier += XENO_EXPOSIVEARMOR_MOD_SMALL ravager.damage_modifier -= XENO_DAMAGE_MOD_SMALL @@ -72,7 +72,6 @@ bound_xeno.speed_modifier += shard_lock_speed_mod bound_xeno.recalculate_speed() - shards_locked = FALSE // Return true if we have enough shards, false otherwise @@ -103,6 +102,15 @@ var/percentage_shards = round((shards / max_shards) * 100, 10) if(percentage_shards) holder.overlays += image('icons/mob/hud/hud.dmi', "xenoenergy[percentage_shards]") + + if(percentage_shards >= 50) + bound_xeno.small_explosives_stun = FALSE + bound_xeno.add_filter("hedge_unstunnable", 1, list("type" = "outline", "color" = "#421313", "size" = 1)) + else + bound_xeno.small_explosives_stun = TRUE + bound_xeno.remove_filter("hedge_unstunnable", 1, list("type" = "outline", "color" = "#421313", "size" = 1)) + + return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index cb36e919e82a..0f128b5bcb46 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -342,7 +342,7 @@ GLOBAL_LIST_INIT(limb_types_by_name, list( return FALSE -/mob/proc/abiotic(full_body = 0) +/mob/proc/abiotic(full_body = FALSE) if(full_body && ((src.l_hand && !( src.l_hand.flags_item & ITEM_ABSTRACT )) || (src.r_hand && !( src.r_hand.flags_item & ITEM_ABSTRACT )) || (src.back || src.wear_mask))) return TRUE diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 7917394df830..f436863b2f2f 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -451,7 +451,7 @@ var/time_remaining = SSticker.GetTimeLeft() if(time_remaining > 0) - . += "Time To Start: [round(time_remaining)]s" + . += "Time To Start: [round(time_remaining)]s[SSticker.delay_start ? " (DELAYED)" : ""]" else if(time_remaining == -10) . += "Time To Start: DELAYED" else diff --git a/code/modules/movement/launching/launching.dm b/code/modules/movement/launching/launching.dm index 3e188abb1067..778c452a3240 100644 --- a/code/modules/movement/launching/launching.dm +++ b/code/modules/movement/launching/launching.dm @@ -182,17 +182,21 @@ add_temp_pass_flags(pass_flags) + var/turf/start_turf = get_step_towards(src, LM.target) + var/list/turf/path = get_line(start_turf, LM.target) var/last_loc = loc var/early_exit = FALSE LM.dist = 0 - while (src && throwing && loc == last_loc && isturf(src.loc)) // While looks scary at first but it's basically just a for until LM.dist reaches LM.range + for (var/turf/T in path) + if (!src || !throwing || loc != last_loc || !isturf(src.loc)) + break if (!LM || QDELETED(LM)) early_exit = TRUE break if (LM.dist >= LM.range) break - if (!Move(get_step_towards(src, LM.target))) // If this returns FALSE, then a collision happened + if (!Move(T)) // If this returns FALSE, then a collision happened break last_loc = loc if (++LM.dist >= LM.range) diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 943cddd27ff5..a2801821349c 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -3221,6 +3221,10 @@ Defined in conflicts.dm of the #defines folder. to_chat(user, SPAN_WARNING("\The [gun] doesn't have enough fuel to launch a projectile!")) return + if(istype(flamer_reagent, /datum/reagent/foaming_agent/stabilized)) + to_chat(user, SPAN_WARNING("This chemical will clog the nozzle!")) + return + gun.last_fired = world.time gun.current_mag.reagents.remove_reagent(flamer_reagent.id, FLAME_REAGENT_USE_AMOUNT * fuel_per_projectile) diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 5daef0bdff74..64499a71bb12 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -136,7 +136,10 @@ click_empty(user) else user.track_shot(initial(name)) - unleash_flame(target, user) + if(current_mag.reagents.has_reagent("stablefoam")) + unleash_foam(target, user) + else + unleash_flame(target, user) return AUTOFIRE_CONTINUE return NONE @@ -226,6 +229,59 @@ new /obj/flamer_fire(to_fire, create_cause_data(initial(name), user), R, max_range, current_mag.reagents, flameshape, target, CALLBACK(src, PROC_REF(show_percentage), user), fuel_pressure, fire_type) +/obj/item/weapon/gun/flamer/proc/unleash_foam(atom/target, mob/living/user) + last_fired = world.time + if(!current_mag || !current_mag.reagents || !current_mag.reagents.reagent_list.len) + return + + var/source_turf = get_turf(user) + var/foam_range = 6 // the max range the foam will travel + var/distance = 0 // the distance traveled + var/use_multiplier = 3 // if you want to increase the ammount of foam drained from the tank + var/datum/reagent/chemical = current_mag.reagents.reagent_list[1] + + var/turf/turfs[] = get_line(user, target, FALSE) + var/turf/first_turf = turfs[1] + var/ammount_required = (min(turfs.len, foam_range) * use_multiplier) // the ammount of units that this click requires + for(var/turf/turf in turfs) + + if(chemical.volume < ammount_required) + foam_range = round(chemical.volume / use_multiplier) + + if(distance >= foam_range) + break + + if(turf.density) + break + else + var/obj/effect/particle_effect/foam/checker = new() + var/atom/blocked = LinkBlocked(checker, source_turf, turf) + if(blocked) + break + + if(turf == first_turf) // this is so the first foam tile doesn't expand and touch the user + var/datum/effect_system/foam_spread/foam = new() + foam.set_up(0.5, turf, metal_foam = FOAM_METAL_TYPE_IRON) + foam.start() + else + var/datum/effect_system/foam_spread/foam = new() + foam.set_up(1, turf, metal_foam = FOAM_METAL_TYPE_IRON) + foam.start() + sleep(2) + + distance++ + + var/ammount_used = distance * use_multiplier // the actual ammount of units that we used + + chemical.volume = max(chemical.volume - ammount_used, 0) + + current_mag.reagents.total_volume = chemical.volume // this is needed for show_percentage to work + + if(chemical.volume < use_multiplier) // there aren't enough units left for a single tile of foam, empty the tank + current_mag.reagents.clear_reagents() + + show_percentage(user) + /obj/item/weapon/gun/flamer/proc/show_percentage(mob/living/user) if(current_mag) to_chat(user, SPAN_WARNING("The gauge reads: [round(current_mag.get_ammo_percent())]% fuel remains!")) diff --git a/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm index 0f767d679d03..f1d951324930 100644 --- a/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm +++ b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm @@ -317,7 +317,7 @@ /obj/item/weapon/gun/launcher/grenade/m81/riot name = "\improper M81 riot grenade launcher" desc = "A lightweight, single-shot low-angle grenade launcher to launch tear gas grenades. Used by the Colonial Marines Military Police during riots." - valid_munitions = list(/obj/item/explosive/grenade/custom/teargas) + valid_munitions = list(/obj/item/explosive/grenade/custom/teargas, /obj/item/explosive/grenade/slug/baton) preload = /obj/item/explosive/grenade/custom/teargas //------------------------------------------------------- diff --git a/code/modules/projectiles/magazines/flamer.dm b/code/modules/projectiles/magazines/flamer.dm index 7fba325177c6..dfd9eda20d8a 100644 --- a/code/modules/projectiles/magazines/flamer.dm +++ b/code/modules/projectiles/magazines/flamer.dm @@ -90,7 +90,7 @@ to_chat(user, SPAN_WARNING("You can't mix fuel mixtures!")) return - if(!to_add.intensityfire) + if(!to_add.intensityfire && to_add.id != "stablefoam") to_chat(user, SPAN_WARNING("This chemical is not potent enough to be used in a flamethrower!")) return diff --git a/code/modules/reagents/chemistry_reactions/other.dm b/code/modules/reagents/chemistry_reactions/other.dm index 24a8563e0848..28250aa38803 100644 --- a/code/modules/reagents/chemistry_reactions/other.dm +++ b/code/modules/reagents/chemistry_reactions/other.dm @@ -360,6 +360,12 @@ required_reagents = list("fluorine" = 2, "carbon" = 2, "sulphuric acid" = 1) result_amount = 5 +/datum/chemical_reaction/stablefoam + name = "Stabilized metallic foam" + id = "stablefoam" + result = "stablefoam" + required_reagents = list("fluorosurfactant" = 1, "iron" = 1, "sulphuric acid" = 1) + result_amount = 1 /datum/chemical_reaction/foam name = "Foam" diff --git a/code/modules/reagents/chemistry_reagents/other.dm b/code/modules/reagents/chemistry_reagents/other.dm index 786a58857830..dc70d65452fe 100644 --- a/code/modules/reagents/chemistry_reagents/other.dm +++ b/code/modules/reagents/chemistry_reagents/other.dm @@ -613,6 +613,15 @@ color = "#664B63" // rgb: 102, 75, 99 chemclass = CHEM_CLASS_UNCOMMON +/datum/reagent/foaming_agent/stabilized + name = "Stabilized metallic foam" + id = "stablefoam" + description = "Stabilized metallic foam that solidifies when exposed to an open flame" + reagent_state = LIQUID + color = "#d4b8d1" + chemclass = CHEM_CLASS_UNCOMMON + properties = list(PROPERTY_TOXIC = 8) + /datum/reagent/nicotine name = "Nicotine" id = "nicotine" @@ -696,9 +705,11 @@ description = "A custom napalm mix, stickier and lasts longer but lower damage" reagent_state = LIQUID color = "#f8e3b2" - chemfiresupp = FALSE burncolor = "#f8e3b2" burn_sprite = "dynamic" + intensitymod = -1.5 + durationmod = -5 + radiusmod = -0.5 properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_2, PROPERTY_DURATION = BURN_TIME_TIER_5, @@ -710,10 +721,12 @@ id = "highdamagenapalm" description = "A custom napalm mix, higher damage but not as sticky" reagent_state = LIQUID - color = "#742424" - chemfiresupp = FALSE - burncolor = "#742424" + color = "#c51c1c" + burncolor = "#c51c1c" burn_sprite = "dynamic" + intensitymod = -4.5 + durationmod = -1 + radiusmod = -0.5 properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_8, PROPERTY_DURATION = BURN_TIME_TIER_1, diff --git a/colonialmarines.dme b/colonialmarines.dme index eadfd4dbbff5..9a26119cd2f1 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1784,6 +1784,7 @@ #include "code\modules\gear_presets\survivors\survivors.dm" #include "code\modules\gear_presets\survivors\corsat\preset_corsat.dm" #include "code\modules\gear_presets\survivors\fiorina_sciannex\preset_fiorina_sciannex.dm" +#include "code\modules\gear_presets\survivors\fiorina_sciannex\riot_in_progress_insert_fiorina_nightmare.dm" #include "code\modules\gear_presets\survivors\isaacs_lament\preset_isaacs_lament.dm" #include "code\modules\gear_presets\survivors\kutjevo\preset_kutjevo.dm" #include "code\modules\gear_presets\survivors\lv_522\forcon_survivors.dm" diff --git a/config/example/config.txt b/config/example/config.txt index f055a5d65bff..0aff7ee6def9 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -241,3 +241,15 @@ GAMEMODE_DEFAULT Extended ## How long the mob will take to chestburst, in seconds #EMBRYO_BURST_TIMER 450 + +## CLIENT VERSION CONTROL +## This allows you to configure the minimum required client version, as well as a warning version, and message for both. +## These trigger for any version below (non-inclusive) the given version, so 510 triggers on 509 or lower. +## These messages will be followed by one stating the clients current version and the required version for clarity. +#CLIENT_WARN_VERSION 514 +#CLIENT_WARN_BUILD 1589 +#CLIENT_WARN_MESSAGE Your version of BYOND may have issues or be blocked from accessing this server in the future. +#CLIENT_WARN_POPUP +CLIENT_ERROR_VERSION 514 +#CLIENT_ERROR_BUILD 1589 +#CLIENT_ERROR_MESSAGE Your version of BYOND is too old, may have issues, and is blocked from accessing this server. diff --git a/html/changelogs/AutoChangeLog-pr-6108.yml b/html/changelogs/AutoChangeLog-pr-6108.yml deleted file mode 100644 index edfab650390a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6108.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "usnpeepoo" -delete-after: True -changes: - - balance: "Berserker's rage lock-out duration increased slightly" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6116.yml b/html/changelogs/AutoChangeLog-pr-6116.yml deleted file mode 100644 index 7af81eddbd34..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6116.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "QuickLode" -delete-after: True -changes: - - balance: "M3A1 Synthetic Utility Vest only has a 10% slowdown." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6117.yml b/html/changelogs/AutoChangeLog-pr-6117.yml deleted file mode 100644 index 3b2f4ed2cbef..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6117.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - maptweak: "Remodelled the AI Core Reception and WJ spawn area." - - maptweak: "Switches AI Core cameras over to manual naming." - - imageadd: "Added sprites for AI Core windows on black Almayer frames." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6124.yml b/html/changelogs/AutoChangeLog-pr-6124.yml new file mode 100644 index 000000000000..1e02f4897a69 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6124.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Added ID Modification Log to the Access Report printout from an ID Console." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6149.yml b/html/changelogs/AutoChangeLog-pr-6149.yml deleted file mode 100644 index 8deaea969055..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6149.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "iloveloopers" -delete-after: True -changes: - - bugfix: "You can no longer buckle xenos onto chairs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6165.yml b/html/changelogs/AutoChangeLog-pr-6165.yml new file mode 100644 index 000000000000..0f67210d4ce4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6165.yml @@ -0,0 +1,4 @@ +author: "Git-Nivrak" +delete-after: True +changes: + - rscdel: "Reverted back to old throw logic" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6166.yml b/html/changelogs/AutoChangeLog-pr-6166.yml new file mode 100644 index 000000000000..273b212dbda3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6166.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - bugfix: "Delaying round start now shows on the timer again." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6167.yml b/html/changelogs/AutoChangeLog-pr-6167.yml new file mode 100644 index 000000000000..0406b100623e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6167.yml @@ -0,0 +1,4 @@ +author: "Zonespace27" +delete-after: True +changes: + - admin: "Unmarked tickets now mark themselves when an admin starts responding to one" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6168.yml b/html/changelogs/AutoChangeLog-pr-6168.yml new file mode 100644 index 000000000000..3f1451a862c5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6168.yml @@ -0,0 +1,4 @@ +author: "harryob" +delete-after: True +changes: + - bugfix: "you can bind to space again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6171.yml b/html/changelogs/AutoChangeLog-pr-6171.yml new file mode 100644 index 000000000000..d9cd7b85fa1a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6171.yml @@ -0,0 +1,4 @@ +author: "iloveloopers" +delete-after: True +changes: + - bugfix: "custom flamer fuels no longer work for increasing OT assembly's caps" \ No newline at end of file diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml index b19a3e201e6f..b3f9ffa64195 100644 --- a/html/changelogs/archive/2024-04.yml +++ b/html/changelogs/archive/2024-04.yml @@ -233,3 +233,69 @@ - maptweak: added the fuel pump to the proper locations. ihatethisengine2: - rscadd: ported stripping menu from TG +2024-04-17: + QuickLode: + - balance: M3A1 Synthetic Utility Vest only has a 10% slowdown. + iloveloopers: + - bugfix: You can no longer buckle xenos onto chairs + realforest2001: + - rscadd: Added Nerve Gas Release control buttons to the ARES and APOLLO interfaces, + allowing the AI core to be secured from large groups or xenomorphs. Built in + cooldowns should prevent fatalities. + - maptweak: Remodelled the AI Core Reception and WJ spawn area. + - maptweak: Switches AI Core cameras over to manual naming. + - imageadd: Added sprites for AI Core windows on black Almayer frames. + usnpeepoo: + - balance: Berserker's rage lock-out duration increased slightly +2024-04-18: + InsaneRed: + - balance: Hedgehog now gains explosion immunity to nades if you have above half + shard amount. + MrStonedOne, LemonInTheDark: + - server: config now allows you to warn players to upgrade their byond version, + or bar them based on their byond version + Steelpoint: + - balance: UPP Synthetic's loadout has been reworked to account for its new status + as a non-combatant. +2024-04-19: + QuickLode: + - rscadd: Adds 3 variations of CMB Marshal and 4 variations of a UA Riot Police + Officer to Fiorina Prison Riot nightmare. These are fine men and women in uniform + prepared to engage what they suspect is a riot(or in the case of CMB, assisting + their underfunded and understaffed colleagues) however, they find something + much more sinister going on.. + - rscadd: Adds a CMB Investigative Synthetic(r) and a UA Police Synthetic. + - rscadd: Allows police baton and telescopic baton to shield clash for intimidation + and riot tactics. + - rscadd: Allows M81 launcher to utilize less lethal baton round + - qol: removes taser from some security synthetics belts, replaced with a more synthetic + friendly version +2024-04-20: + Huffie56: + - balance: Increase damage of standard revolver ammo from 55 to 72. + - balance: Marksman ammo remains 55 damage. + iloveloopers: + - rscadd: adds new flamer fuel type, stabilized metallic foam + - rscadd: Incinerator tanks can now hold stabilized metallic foam + - balance: High-Combustion napalm fuel is now easier to see on the ground +2024-04-21: + 567Turtle: + - balance: ' SO can now do basic surgeries' + Ben10083: + - rscadd: Synthetics when shoved into meat gibber will not be delimbed and spawn + their own flesh, but would not die (they are spat out as a torso and head) + - admin: Adjustment to meatgibber code to notify admins when a synthetic is being + shoved into gibber + Git-Nivrak: + - bugfix: You can no longer infinitely extend facehugger's lifetime by REDACTED + - balance: Lessers now lose 5 hp every 2 seconds off weeds + - bugfix: Fixed a bug which made boilers go way faster than they should + LTNTS: + - rscadd: Adds Command Tablets to Provost Marshal+ + iloveloopers: + - bugfix: White phosphorus will no longer forcefully set a mob's fire_reagent to + be UT napthal + realforest2001: + - rscadd: Added an ARES Log for chambering the OB Cannon. + vero5123: + - bugfix: toggling ghost vision now keeps the user's mob visible. diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 6a70a33c4e13..84eb6b3b142a 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -1533,10 +1533,6 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) -"aiM" = ( -/obj/structure/surface/rack, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "aiQ" = ( /obj/structure/machinery/faxmachine, /obj/structure/surface/table/almayer, @@ -2808,6 +2804,10 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) +"aqB" = ( +/obj/structure/blocker/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "aqF" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_10" @@ -7851,14 +7851,6 @@ icon_state = "kitchen" }, /area/almayer/engineering/upper_engineering) -"aOZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3" - }, -/area/almayer/command/airoom) "aPa" = ( /obj/structure/machinery/light{ dir = 8 @@ -9640,16 +9632,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_one) -"bat" = ( -/obj/structure/machinery/door_control{ - id = "ARES Mainframe Right"; - name = "ARES Mainframe Lockdown"; - pixel_x = -24; - pixel_y = -24; - req_one_access_txt = "200;91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "baw" = ( /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) @@ -10837,25 +10819,6 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"bha" = ( -/obj/structure/machinery/door_control{ - id = "ARES StairsLower"; - name = "ARES Core Lockdown"; - pixel_x = 24; - pixel_y = -8; - req_one_access_txt = "90;91;92" - }, -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 8; - pixel_y = 2; - c_tag = "AI - Main Corridor"; - autoname = 0 - }, -/turf/open/floor/almayer/aicore/no_build{ - dir = 4; - icon_state = "ai_silver" - }, -/area/almayer/command/airoom) "bhf" = ( /obj/structure/machinery/light{ dir = 4 @@ -14189,18 +14152,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"bEX" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - access_modified = 1; - name = "\improper Security Vault"; - req_access = null; - req_one_access_txt = "91;92"; - dir = 1 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "bFa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -15291,6 +15242,13 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_midship_hallway) +"bMg" = ( +/obj/structure/pipes/vents/pump/no_boom/gas{ + vent_tag = "Synth Bay"; + dir = 8 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "bMq" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, /obj/structure/machinery/light{ @@ -17194,6 +17152,21 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/lower/starboard_midship_hallway) +"bZq" = ( +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "bZr" = ( /turf/open/floor/almayer{ dir = 1; @@ -17680,6 +17653,10 @@ icon_state = "test_floor4" }, /area/almayer/maint/upper/u_m_s) +"cea" = ( +/obj/structure/machinery/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south2) "ceg" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -19172,6 +19149,12 @@ /obj/structure/window/framed/almayer/hull/hijack_bustable, /turf/open/floor/plating, /area/almayer/squads/req) +"cpP" = ( +/obj/structure/blocker/fuelpump, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "cqd" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -19398,20 +19381,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cryo) -"cup" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "cuq" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/wood/ship, @@ -19599,6 +19568,16 @@ icon_state = "orange" }, /area/almayer/maint/upper/mess) +"cyP" = ( +/obj/structure/machinery/cm_vending/clothing/intelligence_officer{ + density = 0; + pixel_x = -32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/securestorage) "cyR" = ( /obj/structure/bed/chair{ dir = 8 @@ -19619,17 +19598,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"czh" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "czN" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -19697,21 +19665,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"cAQ" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/disposaloutlet{ - density = 0; - desc = "An outlet for the pneumatic delivery system."; - icon_state = "delivery_outlet"; - name = "take-ins"; - pixel_x = -1; - pixel_y = 28; - range = 0 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "cAR" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/mp_bunks) @@ -19814,21 +19767,6 @@ }, /turf/open/floor/almayer, /area/almayer/maint/hull/upper/u_f_s) -"cCO" = ( -/obj/effect/projector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "cDb" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access = null @@ -19985,6 +19923,24 @@ icon_state = "mono" }, /area/almayer/hallways/upper/fore_hallway) +"cFg" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresUp2"; + vector_x = -102; + vector_y = 61 + }, +/obj/structure/machinery/door_control{ + id = "ARES ReceptStairs2"; + name = "ARES Reception Stairway Shutters"; + pixel_x = 24; + req_one_access_txt = "91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "cFh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -20191,10 +20147,37 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"cJv" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresDown2"; + vector_x = 102; + vector_y = -61 + }, +/turf/open/floor/plating, +/area/almayer/command/airoom) "cJE" = ( /obj/structure/sign/prop2, /turf/closed/wall/almayer, /area/almayer/shipboard/sea_office) +"cJI" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet{ + density = 0; + desc = "An outlet for the pneumatic delivery system."; + icon_state = "delivery_outlet"; + name = "take-ins"; + pixel_x = -1; + pixel_y = 28; + range = 0 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "cJK" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -20465,6 +20448,12 @@ }, /turf/open/floor/almayer, /area/almayer/living/grunt_rnr) +"cOd" = ( +/obj/structure/blocker/fuelpump, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "cOe" = ( /turf/open/floor/almayer{ dir = 5; @@ -20504,6 +20493,27 @@ icon_state = "outerhull_dir" }, /area/almayer/engineering/upper_engineering/starboard) +"cOV" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -24; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "cOY" = ( /obj/item/clothing/under/blackskirt{ desc = "A stylish skirt, in a business-black and red colour scheme."; @@ -20721,21 +20731,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north2) -"cSh" = ( -/obj/effect/projector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "cSk" = ( /obj/structure/machinery/door/window/southleft, /turf/open/floor/almayer{ @@ -20773,18 +20768,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/port_midship_hallway) -"cSO" = ( -/obj/structure/surface/rack{ - density = 0; - pixel_y = 16 - }, -/obj/structure/machinery/faxmachine/uscm/command{ - density = 0; - department = "AI Core"; - pixel_y = 32 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "cSP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -21849,14 +21832,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"dmU" = ( -/obj/structure/disposalpipe/up/almayer{ - dir = 8; - id = "ares_vault_out"; - name = "aicore" - }, -/turf/closed/wall/almayer/aicore/hull, -/area/almayer/command/airoom) "dmZ" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1 @@ -21946,13 +21921,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"dop" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/closed/wall/almayer/aicore/hull, -/area/almayer/command/airoom) "doJ" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -22006,6 +21974,21 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"dpp" = ( +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "dpA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -22118,6 +22101,19 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) +"drU" = ( +/obj/structure/machinery/door_control{ + id = "ARES JoeCryo"; + name = "ARES WorkingJoe Bay Shutters"; + req_one_access_txt = "91;92"; + pixel_x = 24 + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + autoname = 0; + c_tag = "AI - Comms" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "dsA" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/almayer{ @@ -22454,6 +22450,22 @@ "dzp" = ( /turf/open/floor/almayer, /area/almayer/command/corporateliaison) +"dzt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + autoname = 0; + c_tag = "AI - Secondary Processors" + }, +/turf/open/floor/almayer/aicore/glowing/no_build, +/area/almayer/command/airoom) "dzG" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_y = 26 @@ -24246,12 +24258,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower) -"efE" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 8 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "efJ" = ( /obj/item/tool/wet_sign, /obj/effect/decal/cleanable/blood, @@ -24318,6 +24324,26 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"ege" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsLower"; + name = "ARES Core Lockdown"; + pixel_x = -24; + pixel_y = 8; + req_one_access_txt = "90;91;92" + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 4; + pixel_y = -8; + autoname = 0; + c_tag = "AI - Main Staircase" + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer/aicore/no_build{ + dir = 8; + icon_state = "ai_silver" + }, +/area/almayer/command/airoom) "egp" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/platform_decoration, @@ -24456,6 +24482,20 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"eii" = ( +/obj/structure/platform{ + dir = 4 + }, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "eim" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -24844,17 +24884,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/lobby) -"epG" = ( -/obj/structure/stairs{ - dir = 1 - }, -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresDown2"; - vector_x = 102; - vector_y = -61 - }, -/turf/open/floor/plating, -/area/almayer/command/airoom) "epJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -25459,6 +25488,18 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) +"ezq" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "ezG" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -25735,21 +25776,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/bridgebunks) -"eDT" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/intelligence_officer{ - density = 0; - pixel_x = -32 - }, -/obj/structure/machinery/light{ - dir = 8; - pixel_x = -32; - alpha = 0 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" - }, -/area/almayer/command/computerlab) "eEc" = ( /obj/structure/machinery/light, /obj/effect/decal/warning_stripes{ @@ -25897,6 +25923,15 @@ icon_state = "green" }, /area/almayer/hallways/lower/port_midship_hallway) +"eGr" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + autoname = 0; + c_tag = "AI - Records" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "eGB" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer, @@ -26319,6 +26354,42 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/workshop/hangar) +"eQj" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -10; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/obj/structure/machinery/door_control{ + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown"; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/structure/machinery/door_control{ + id = "ARES Emergency"; + name = "ARES Emergency Lockdown"; + pixel_x = 10; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/obj/structure/machinery/computer/cameras/almayer{ + dir = 4; + pixel_y = 12 + }, +/obj/structure/machinery/computer/cameras/almayer/ares{ + dir = 4; + pixel_y = -1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "eQm" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -26387,6 +26458,22 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) +"eRI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + pixel_y = 2; + autoname = 0; + c_tag = "AI - Reception Exterior" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/hallways/upper/midship_hallway) "eRR" = ( /obj/item/clothing/head/helmet/marine{ pixel_x = 16; @@ -26488,14 +26575,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_a_s) -"eTY" = ( -/obj/structure/disposalpipe/down/almayer{ - dir = 2; - id = "ares_vault_out"; - name = "wycomms" - }, -/turf/closed/wall/almayer/outer, -/area/almayer/command/airoom) "eUe" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -26535,12 +26614,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/chemistry) -"eUw" = ( -/obj/structure/blocker/fuelpump, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "eUA" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -26695,6 +26768,20 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/offices) +"eXy" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "eXD" = ( /obj/structure/prop/invuln/lattice_prop{ dir = 1; @@ -26706,24 +26793,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_s) -"eYf" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_AresUp2"; - vector_x = -102; - vector_y = 61 - }, -/obj/structure/machinery/door_control{ - id = "ARES ReceptStairs2"; - name = "ARES Reception Stairway Shutters"; - pixel_x = 24; - req_one_access_txt = "91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "eYj" = ( /obj/structure/machinery/light{ dir = 8 @@ -27364,6 +27433,13 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) +"fhR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/closed/wall/almayer/aicore/hull, +/area/almayer/command/airoom) "fic" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -27448,6 +27524,13 @@ dir = 8 }, /area/almayer/medical/containment/cell/cl) +"flf" = ( +/obj/structure/pipes/vents/pump/no_boom/gas{ + vent_tag = "Records"; + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "flr" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -27462,6 +27545,29 @@ icon_state = "red" }, /area/almayer/maint/upper/u_a_p) +"flL" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + autoname = 0; + c_tag = "AI - SynthBay" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) +"flR" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "flW" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/light{ @@ -27518,6 +27624,10 @@ icon_state = "green" }, /area/almayer/hallways/lower/port_midship_hallway) +"fnk" = ( +/obj/structure/blocker/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "fnv" = ( /obj/structure/machinery/light{ dir = 4 @@ -28289,6 +28399,20 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer, /area/almayer/hallways/lower/repair_bay) +"fCI" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES JoeCryo"; + name = "\improper ARES Synth Bay Shutters"; + plane = -7; + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "fCL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -28330,23 +28454,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"fDk" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - access_modified = 1; - name = "\improper AI Reception"; - req_access = null; - req_one_access_txt = "91;92"; - dir = 1 - }, -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES ReceptStairs1"; - name = "\improper ARES Reception Shutters" - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "fDG" = ( /obj/structure/machinery/vending/coffee, /obj/structure/machinery/light{ @@ -29040,20 +29147,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_p) -"fQi" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "fQn" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -29083,6 +29176,16 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_f_s) +"fQD" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + autoname = 0; + c_tag = "AI - Core Chamber" + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3" + }, +/area/almayer/command/airoom) "fQS" = ( /obj/structure/bed/chair/comfy/orange, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -29203,9 +29306,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) -"fUm" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/command/securestorage) "fUz" = ( /obj/structure/surface/rack, /obj/item/storage/box/cups{ @@ -29264,6 +29364,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop) +"fVx" = ( +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3"; + light_range = 4 + }, +/area/almayer/command/airoom) "fVz" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -29783,12 +29889,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"gfQ" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "gfW" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/lockerroom) @@ -29989,6 +30089,17 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) +"gjv" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "gjB" = ( /obj/structure/machinery/light{ dir = 1 @@ -30221,20 +30332,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_a_p) -"goN" = ( -/obj/structure/platform{ - dir = 4 - }, -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "goY" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/panic) @@ -30286,6 +30383,23 @@ icon_state = "blue" }, /area/almayer/hallways/upper/midship_hallway) +"gpW" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/structure/machinery/computer/secure_data{ + dir = 4 + }, +/obj/structure/machinery/door_control{ + id = "ARES ReceptStairs1"; + name = "ARES Reception Shutters"; + pixel_y = 24; + req_one_access_txt = "91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "gpY" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/lifeboat_pumps/north1) @@ -30496,20 +30610,6 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) -"gsV" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "gsZ" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -30609,17 +30709,6 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) -"guU" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "guW" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/sign/prop3{ @@ -30915,16 +31004,6 @@ /obj/item/reagent_container/hypospray/autoinjector/skillless, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"gzH" = ( -/obj/structure/machinery/cm_vending/clothing/intelligence_officer{ - density = 0; - pixel_x = -32 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" - }, -/area/almayer/command/computerlab) "gzI" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -31120,6 +31199,18 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"gDh" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; + name = "\improper Security Vault"; + req_access = null; + req_one_access_txt = "91;92"; + dir = 1 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "gDk" = ( /obj/structure/sign/safety/stairs{ pixel_x = -15 @@ -31152,27 +31243,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"gDu" = ( -/obj/effect/projector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/platform{ - dir = 8 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/structure/machinery/door_control{ - id = "ARES StairsUpper"; - name = "ARES Core Access"; - pixel_x = -24; - req_one_access_txt = "90;91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "gDH" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -32154,18 +32224,6 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) -"gVz" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_AresUp2"; - vector_x = -102; - vector_y = 61 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "gVA" = ( /obj/structure/disposalpipe/down/almayer{ dir = 8; @@ -32235,12 +32293,6 @@ }, /turf/open/floor/plating, /area/almayer/medical/upper_medical) -"gWN" = ( -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3"; - light_range = 4 - }, -/area/almayer/command/airoom) "gXl" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access_txt = "5" @@ -32782,19 +32834,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"hfZ" = ( -/obj/structure/machinery/disposal/delivery{ - density = 0; - desc = "A pneumatic delivery unit."; - icon_state = "delivery_engi"; - name = "Returns"; - pixel_y = 28 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "hgg" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -33392,26 +33431,6 @@ icon_state = "mono" }, /area/almayer/hallways/lower/vehiclehangar) -"hoo" = ( -/obj/structure/blocker/invisible_wall, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/mob/living/silicon/decoy/ship_ai{ - layer = 2.98; - pixel_y = -16 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) -"hoq" = ( -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 1; - c_tag = "AI - Reception Interior"; - autoname = 0 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "hoK" = ( /turf/open/floor/almayer{ dir = 8; @@ -34985,12 +35004,6 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/processing) -"hTB" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "hTF" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm{ isopen = 1; @@ -35239,6 +35252,10 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) +"hWM" = ( +/obj/structure/surface/rack, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "hWO" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer{ @@ -35519,14 +35536,6 @@ icon_state = "plate" }, /area/almayer/maint/lower/s_bow) -"ibN" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_plates" - }, -/area/almayer/command/airoom) "ibP" = ( /obj/structure/sign/safety/maint{ pixel_x = -19; @@ -35950,28 +35959,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/s_bow) -"ikH" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/disposal/delivery{ - density = 0; - desc = "A pneumatic delivery unit."; - icon_state = "delivery_engi"; - name = "Security Vault"; - pixel_y = 28; - pixel_x = -24 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/machinery/door_control{ - id = "ARES StairsUpper"; - name = "ARES Core Access"; - pixel_x = -32; - pixel_y = 40; - req_one_access_txt = "90;91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "ikQ" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/tool/stamp/hop{ @@ -36057,6 +36044,28 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/offices/flight) +"imS" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES StairsUpper"; + name = "\improper ARES Core Shutters"; + plane = -7 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/open{ + id = "ARES Emergency"; + name = "ARES Emergency Lockdown"; + open_layer = 1.9; + plane = -7 + }, +/obj/structure/disposalpipe/up/almayer{ + id = "ares_vault_in"; + name = "aicore"; + dir = 2 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "inh" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -36067,10 +36076,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) -"inm" = ( -/obj/structure/machinery/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south2) "ins" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -36084,16 +36089,6 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering) -"inI" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door_control{ - id = "ARES ReceptStairs1"; - name = "ARES Reception Shutters"; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "inL" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -36104,6 +36099,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"ios" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/paper_bin/uscm{ + pixel_y = 6 + }, +/obj/item/tool/pen, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "iow" = ( /obj/structure/machinery/cm_vending/sorted/attachments/squad{ req_access = null; @@ -36267,6 +36272,18 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) +"irr" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresUp2"; + vector_x = -102; + vector_y = 61 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "iry" = ( /obj/structure/platform{ dir = 8 @@ -36356,6 +36373,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"itg" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "ito" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -36503,18 +36526,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower) -"iwg" = ( -/obj/structure/surface/table/reinforced/almayer_B{ - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/obj/item/paper_bin/uscm{ - pixel_y = 6 - }, -/obj/item/tool/pen, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "iwB" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -36671,6 +36682,14 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"izf" = ( +/obj/structure/disposalpipe/down/almayer{ + dir = 4; + id = "ares_vault_in"; + name = "aicore" + }, +/turf/closed/wall/almayer/aicore/hull, +/area/almayer/command/airoom) "izk" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -36753,6 +36772,9 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"iBn" = ( +/turf/closed/wall/almayer/aicore/white/hull, +/area/space) "iBu" = ( /obj/structure/sign/safety/storage{ pixel_x = -17 @@ -36768,16 +36790,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"iCf" = ( -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 8; - autoname = 0; - c_tag = "AI - Core Chamber" - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3" - }, -/area/almayer/command/airoom) "iCg" = ( /turf/open/floor/almayer{ dir = 8; @@ -36852,6 +36864,12 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_s) +"iDK" = ( +/obj/structure/blocker/fuelpump, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "iEa" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -37225,10 +37243,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"iLe" = ( -/obj/structure/blocker/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north2) "iLf" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/disk_reader, @@ -37586,20 +37600,6 @@ dir = 4 }, /area/almayer/medical/containment/cell) -"iRU" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_AresUp2"; - vector_x = -102; - vector_y = 61 - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3" - }, -/area/almayer/command/airoom) "iSd" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -38258,16 +38258,6 @@ icon_state = "plate" }, /area/almayer/hallways/lower/starboard_umbilical) -"jaH" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/paper_bin/uscm{ - pixel_y = 6 - }, -/obj/item/tool/pen, -/turf/open/floor/almayer/no_build{ - icon_state = "plating" - }, -/area/almayer/command/airoom) "jaI" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -38648,6 +38638,20 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) +"jgy" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "jgF" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -39366,6 +39370,12 @@ icon_state = "plate" }, /area/almayer/maint/upper/u_a_s) +"jrH" = ( +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ + dir = 8 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "jrI" = ( /obj/structure/filingcabinet{ density = 0; @@ -40217,10 +40227,6 @@ icon_state = "orange" }, /area/almayer/maint/upper/mess) -"jIF" = ( -/obj/structure/blocker/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) "jIJ" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ @@ -40272,27 +40278,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"jKD" = ( -/obj/effect/projector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/structure/machinery/door_control{ - id = "ARES StairsUpper"; - name = "ARES Core Access"; - pixel_x = 24; - req_one_access_txt = "90;91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "jKF" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -41099,6 +41084,18 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/p_stern) +"jYH" = ( +/obj/structure/blocker/invisible_wall, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/mob/living/silicon/decoy/ship_ai{ + layer = 2.98; + pixel_y = -16 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "jYM" = ( /obj/structure/ladder{ height = 1; @@ -41110,22 +41107,6 @@ }, /turf/open/floor/plating/almayer, /area/almayer/maint/hull/lower/p_bow) -"jYR" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - layer = 3.3 - }, -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 4; - c_tag = "AI - Primary Processors"; - autoname = 0 - }, -/turf/open/floor/almayer/aicore/glowing/no_build, -/area/almayer/command/airoom) "jZd" = ( /obj/structure/pipes/vents/pump{ dir = 8; @@ -41675,22 +41656,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_f_p) -"khJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - layer = 3.3 - }, -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 8; - autoname = 0; - c_tag = "AI - Secondary Processors" - }, -/turf/open/floor/almayer/aicore/glowing/no_build, -/area/almayer/command/airoom) "kil" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -41914,14 +41879,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"klK" = ( -/obj/structure/machinery/cryopod/right{ - dir = 4 - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_cargo" - }, -/area/almayer/command/airoom) "klT" = ( /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, @@ -41994,20 +41951,6 @@ "knm" = ( /turf/open/floor/almayer, /area/almayer/hallways/lower/port_fore_hallway) -"knD" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "knH" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -43717,6 +43660,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"kRQ" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer/ares{ + dir = 8; + pixel_x = 17; + pixel_y = 7 + }, +/obj/structure/machinery/computer/cameras/almayer{ + dir = 8; + pixel_x = 17; + pixel_y = -6 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3" + }, +/area/almayer/command/airoom) "kRU" = ( /obj/vehicle/powerloader, /obj/structure/platform{ @@ -43730,6 +43689,16 @@ icon_state = "cargo" }, /area/almayer/hallways/lower/repair_bay) +"kSi" = ( +/obj/structure/machinery/cm_vending/gear/intelligence_officer{ + density = 0; + pixel_x = -32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/computerlab) "kSn" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -44303,21 +44272,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"lce" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_AresDown2"; - vector_x = 102; - vector_y = -61 - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3"; - light_range = 3 - }, -/area/almayer/command/airoom) "lcg" = ( /obj/structure/machinery/ares/substrate, /turf/open/floor/almayer/no_build{ @@ -44883,15 +44837,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"lmp" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3"; - light_range = 3 - }, -/area/almayer/command/airoom) "lmq" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -45371,18 +45316,6 @@ icon_state = "test_floor4" }, /area/almayer/living/commandbunks) -"lup" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_AresDown2"; - vector_x = 102; - vector_y = -61 - }, -/turf/open/floor/plating, -/area/almayer/command/airoom) "luE" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -45452,20 +45385,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"lvB" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "lwh" = ( /obj/structure/machinery/light{ dir = 8 @@ -45520,21 +45439,6 @@ icon_state = "test_floor4" }, /area/almayer/maint/hull/upper/u_f_p) -"lwZ" = ( -/obj/effect/projector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "lxd" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /turf/open/floor/almayer{ @@ -46365,6 +46269,10 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) +"lMy" = ( +/obj/structure/machinery/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north2) "lMF" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47106,12 +47014,6 @@ icon_state = "emerald" }, /area/almayer/hallways/lower/port_midship_hallway) -"mdG" = ( -/obj/structure/blocker/fuelpump, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "mdW" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/effect/decal/warning_stripes{ @@ -47619,6 +47521,21 @@ icon_state = "test_floor4" }, /area/almayer/command/corporateliaison) +"mmn" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/intelligence_officer{ + density = 0; + pixel_x = -32 + }, +/obj/structure/machinery/light{ + dir = 8; + pixel_x = -32; + alpha = 0 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/computerlab) "mmN" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -47807,6 +47724,16 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"mqh" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/cm_vending/sorted/medical/marinemed, +/obj/structure/medical_supply_link, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "mqt" = ( /turf/open/floor/almayer{ icon_state = "bluecorner" @@ -47932,17 +47859,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"mss" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES ReceptStairs2"; - name = "\improper ARES Reception Shutters"; - plane = -7 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "msC" = ( /obj/structure/machinery/door/airlock/almayer/maint{ access_modified = 1; @@ -48190,19 +48106,6 @@ icon_state = "plate" }, /area/almayer/hallways/upper/midship_hallway) -"mxs" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3"; - light_range = 3 - }, -/area/almayer/command/airoom) -"mxB" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "mxT" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp, @@ -48342,6 +48245,17 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_s) +"mzP" = ( +/obj/structure/stairs{ + dir = 1 + }, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown2"; + vector_x = 102; + vector_y = -61 + }, +/turf/open/floor/plating, +/area/almayer/command/airoom) "mzS" = ( /turf/open/floor/almayer{ dir = 9; @@ -48354,11 +48268,29 @@ icon_state = "blue" }, /area/almayer/living/port_emb) +"mAe" = ( +/obj/structure/window/framed/almayer/aicore/hull/black/hijack_bustable, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "mAp" = ( /obj/structure/surface/table/almayer, /obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"mAs" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "mAF" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -48487,6 +48419,23 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) +"mCx" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; + name = "\improper AI Reception"; + req_access = null; + req_one_access_txt = "91;92"; + dir = 1 + }, +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES ReceptStairs1"; + name = "\improper ARES Reception Shutters" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "mCE" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12; @@ -48830,6 +48779,20 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_m_s) +"mIi" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "mIy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -48853,6 +48816,12 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"mIJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 6 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "mIP" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/warning_stripes{ @@ -49515,6 +49484,25 @@ icon_state = "cargo_arrow" }, /area/almayer/medical/hydroponics) +"mTr" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsLower"; + name = "ARES Core Lockdown"; + pixel_x = 24; + pixel_y = -8; + req_one_access_txt = "90;91;92" + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + pixel_y = 2; + c_tag = "AI - Main Corridor"; + autoname = 0 + }, +/turf/open/floor/almayer/aicore/no_build{ + dir = 4; + icon_state = "ai_silver" + }, +/area/almayer/command/airoom) "mTL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -49544,22 +49532,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"mUz" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/cameras/almayer/ares{ - dir = 8; - pixel_x = 17; - pixel_y = 7 - }, -/obj/structure/machinery/computer/cameras/almayer{ - dir = 8; - pixel_x = 17; - pixel_y = -6 - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3" - }, -/area/almayer/command/airoom) "mUE" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -49886,6 +49858,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/lobby) +"naj" = ( +/obj/structure/machinery/door_control{ + id = "ARES JoeCryo"; + name = "ARES WorkingJoe Bay Shutters"; + req_one_access_txt = "91;92"; + pixel_x = -24 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "nar" = ( /obj/structure/toilet{ dir = 4 @@ -50608,6 +50589,21 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"nkK" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresDown2"; + vector_x = 102; + vector_y = -61 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3"; + light_range = 3 + }, +/area/almayer/command/airoom) "nkX" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/terminal{ @@ -50869,6 +50865,14 @@ }, /turf/open/floor/plating, /area/almayer/engineering/starboard_atmos) +"npq" = ( +/obj/structure/disposalpipe/up/almayer{ + dir = 8; + id = "ares_vault_out"; + name = "aicore" + }, +/turf/closed/wall/almayer/aicore/hull, +/area/almayer/command/airoom) "npt" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -50897,20 +50901,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) -"npE" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES JoeCryo"; - name = "\improper ARES WorkingJoe Bay Shutters"; - plane = -7; - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "npO" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -51627,6 +51617,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) +"nDy" = ( +/obj/structure/bed/chair/comfy/ares{ + dir = 1 + }, +/obj/structure/pipes/vents/pump/no_boom/gas{ + vent_tag = "Core Chamber" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "nDH" = ( /obj/structure/machinery/light/small{ dir = 1; @@ -51869,15 +51870,6 @@ icon_state = "redcorner" }, /area/almayer/shipboard/starboard_missiles) -"nIB" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, -/turf/open/floor/almayer/aicore/no_build{ - dir = 4; - icon_state = "ai_silver" - }, -/area/almayer/command/airoom) "nID" = ( /obj/structure/machinery/light{ dir = 8 @@ -51966,6 +51958,19 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"nKO" = ( +/obj/structure/machinery/disposal/delivery{ + density = 0; + desc = "A pneumatic delivery unit."; + icon_state = "delivery_engi"; + name = "Returns"; + pixel_y = 28 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "nKP" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -52053,21 +52058,6 @@ /obj/item/bedsheet/red, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) -"nNk" = ( -/obj/effect/projector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/platform{ - dir = 4 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "nNt" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -52635,12 +52625,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/upper/aft_hallway) -"nWC" = ( -/obj/structure/blocker/fuelpump, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "nWN" = ( /obj/structure/surface/table/almayer, /turf/open/floor/wood/ship, @@ -52891,10 +52875,6 @@ }, /turf/closed/wall/almayer, /area/almayer/squads/req) -"obw" = ( -/obj/structure/machinery/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north2) "oby" = ( /obj/structure/surface/table/almayer, /obj/item/trash/plate{ @@ -52974,6 +52954,14 @@ }, /turf/open/floor/almayer/aicore/glowing/no_build, /area/almayer/command/airoom) +"ocL" = ( +/obj/structure/machinery/cryopod/right{ + dir = 4 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_cargo" + }, +/area/almayer/command/airoom) "odb" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -53158,16 +53146,19 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"ogD" = ( -/obj/structure/machinery/cm_vending/clothing/intelligence_officer{ - density = 0; - pixel_x = -32 +"ofY" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" +/obj/structure/machinery/computer/working_joe{ + layer = 3.3; + dir = 4; + pixel_y = 6 }, -/area/almayer/command/securestorage) +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "ogK" = ( /obj/structure/bed/bedroll{ desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on."; @@ -53188,22 +53179,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/upper/midship_hallway) -"ogU" = ( -/obj/structure/surface/table/reinforced/almayer_B{ - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/obj/structure/transmitter/rotary{ - name = "AI Reception Telephone"; - phone_category = "ARES"; - phone_color = "blue"; - phone_id = "AI Reception" - }, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" - }, -/area/almayer/command/airoom) "ohi" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -53668,6 +53643,20 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"onU" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "onY" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -53903,14 +53892,6 @@ dir = 10 }, /area/almayer/command/lifeboat) -"orI" = ( -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 8; - autoname = 0; - c_tag = "AI - SecVault" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "orN" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -54431,12 +54412,6 @@ "oBr" = ( /turf/closed/wall/almayer, /area/almayer/maint/hull/lower/l_a_s) -"oBv" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3" - }, -/area/almayer/command/airoom) "oBA" = ( /obj/structure/sign/safety/conference_room{ pixel_x = -17; @@ -54451,6 +54426,16 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"oBD" = ( +/obj/structure/pipes/vents/pump/no_boom/gas{ + vent_tag = "Access Hall"; + dir = 8 + }, +/turf/open/floor/almayer/aicore/no_build{ + dir = 4; + icon_state = "ai_silver" + }, +/area/almayer/command/airoom) "oCa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -55928,6 +55913,17 @@ icon_state = "red" }, /area/almayer/living/offices/flight) +"oZx" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES ReceptStairs2"; + name = "\improper ARES Reception Shutters"; + plane = -7 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "oZy" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -56012,6 +56008,17 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) +"pax" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/pipes/vents/pump/no_boom/gas{ + vent_tag = "Reception"; + dir = 8 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3"; + light_range = 3 + }, +/area/almayer/command/airoom) "paI" = ( /obj/structure/sign/safety/debark_lounge{ pixel_x = 15; @@ -56533,6 +56540,20 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"pkS" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresUp2"; + vector_x = -102; + vector_y = 61 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3" + }, +/area/almayer/command/airoom) "pld" = ( /obj/item/book/manual/medical_diagnostics_manual, /obj/structure/surface/rack, @@ -56541,17 +56562,6 @@ icon_state = "red" }, /area/almayer/maint/upper/u_a_p) -"plh" = ( -/obj/structure/machinery/cm_vending/sorted/medical/marinemed, -/obj/structure/sign/safety/medical{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/structure/medical_supply_link, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/panic) "plv" = ( /turf/open/floor/plating, /area/almayer/maint/hull/lower/l_m_p) @@ -57455,19 +57465,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"pDQ" = ( -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/stairs{ - dir = 1 - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3" - }, -/area/almayer/command/airoom) "pDW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -57853,19 +57850,6 @@ icon_state = "blue" }, /area/almayer/hallways/upper/midship_hallway) -"pLH" = ( -/obj/structure/surface/table/reinforced/almayer_B{ - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/obj/structure/machinery/computer/working_joe{ - layer = 3.3; - dir = 4; - pixel_y = 6 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "pLO" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -58273,22 +58257,6 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) -"pTH" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 8; - pixel_y = 2; - autoname = 0; - c_tag = "AI - Reception Exterior" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "silver" - }, -/area/almayer/hallways/upper/midship_hallway) "pTI" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -58350,6 +58318,16 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) +"pUg" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door_control{ + id = "ARES ReceptStairs2"; + name = "ARES Reception Stairway Shutters"; + pixel_x = 24; + req_one_access_txt = "91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "pUj" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer, @@ -59669,6 +59647,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_f_p) +"qpY" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13; + dir = 4 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_cargo" + }, +/area/almayer/command/airoom) "qqa" = ( /obj/effect/step_trigger/clone_cleaner, /turf/open/floor/plating/almayer{ @@ -59942,6 +59930,21 @@ icon_state = "plate" }, /area/almayer/living/offices) +"qwJ" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "qwU" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -60099,6 +60102,16 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"qyA" = ( +/obj/structure/machinery/cm_vending/clothing/intelligence_officer{ + density = 0; + pixel_x = -32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/computerlab) "qyD" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -60263,28 +60276,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"qBa" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES StairsUpper"; - name = "\improper ARES Core Shutters"; - plane = -7 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/open{ - id = "ARES Emergency"; - name = "ARES Emergency Lockdown"; - open_layer = 1.9; - plane = -7 - }, -/obj/structure/disposalpipe/up/almayer{ - id = "ares_vault_in"; - name = "aicore"; - dir = 2 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "qBl" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ @@ -60882,6 +60873,19 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"qKZ" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3" + }, +/area/almayer/command/airoom) "qLg" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -61100,6 +61104,14 @@ icon_state = "test_floor4" }, /area/almayer/maint/hull/upper/u_f_p) +"qOZ" = ( +/obj/structure/machinery/cm_vending/sorted/medical/marinemed, +/obj/structure/medical_supply_link, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/lower_medical_lobby) "qPk" = ( /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_fore_hallway) @@ -61232,6 +61244,14 @@ icon_state = "test_floor4" }, /area/almayer/command/corporateliaison) +"qRX" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3" + }, +/area/almayer/command/airoom) "qSm" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -61247,14 +61267,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/upper/aft_hallway) -"qSA" = ( -/obj/structure/bed/chair/comfy/ares{ - dir = 1 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "plating" - }, -/area/almayer/command/airoom) "qSE" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/cholula, @@ -61893,23 +61905,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/maint/hull/upper/u_f_p) -"rcR" = ( -/obj/structure/surface/table/reinforced/almayer_B{ - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/obj/structure/machinery/computer/secure_data{ - dir = 4 - }, -/obj/structure/machinery/door_control{ - id = "ARES ReceptStairs1"; - name = "ARES Reception Shutters"; - pixel_y = 24; - req_one_access_txt = "91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "rcS" = ( /obj/structure/machinery/computer/cryopod/eng{ dir = 8 @@ -62576,6 +62571,10 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/upper_engineering/port) +"rmG" = ( +/obj/structure/blocker/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north2) "rna" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -63110,6 +63109,28 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_p) +"rxl" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/disposal/delivery{ + density = 0; + desc = "A pneumatic delivery unit."; + icon_state = "delivery_engi"; + name = "Security Vault"; + pixel_y = 28; + pixel_x = -24 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -32; + pixel_y = 40; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "rxq" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -63130,6 +63151,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/fore_hallway) +"ryn" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/command/securestorage) "ryt" = ( /obj/structure/pipes/standard/manifold/visible, /turf/open/floor/almayer{ @@ -63188,9 +63212,6 @@ icon_state = "bluecorner" }, /area/almayer/living/briefing) -"rAd" = ( -/turf/closed/wall/almayer/aicore/white/hull, -/area/space) "rAo" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -63321,14 +63342,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_p) -"rCi" = ( -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 8; - autoname = 0; - c_tag = "AI - SynthBay" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "rCl" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -63569,16 +63582,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"rFt" = ( -/obj/structure/machinery/cryopod/right{ - layer = 3.1; - pixel_y = 13; - dir = 4 - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_cargo" - }, -/area/almayer/command/airoom) "rFy" = ( /turf/open/floor/almayer{ dir = 1; @@ -64164,10 +64167,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) -"rQl" = ( -/obj/structure/machinery/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) "rQs" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -64590,17 +64589,6 @@ icon_state = "cargo" }, /area/almayer/maint/hull/lower/l_f_s) -"rYc" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES ReceptStairs2"; - name = "\improper ARES Reception Stairway Shutters"; - plane = -7 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "rYh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -64948,6 +64936,10 @@ icon_state = "silver" }, /area/almayer/hallways/upper/midship_hallway) +"sfA" = ( +/obj/structure/machinery/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "sfT" = ( /turf/open/floor/almayer, /area/almayer/hallways/upper/port) @@ -65987,6 +65979,18 @@ icon_state = "greencorner" }, /area/almayer/living/grunt_rnr) +"swx" = ( +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = -96; + vector_y = 65 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "swE" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/alarm/almayer{ @@ -66244,14 +66248,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/processing) -"sBR" = ( -/obj/structure/disposalpipe/down/almayer{ - dir = 4; - id = "ares_vault_in"; - name = "aicore" - }, -/turf/closed/wall/almayer/aicore/hull, -/area/almayer/command/airoom) "sBY" = ( /obj/item/tool/wet_sign, /obj/structure/disposalpipe/segment, @@ -66641,6 +66637,17 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) +"sII" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES ReceptStairs2"; + name = "\improper ARES Reception Stairway Shutters"; + plane = -7 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "sIR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66927,6 +66934,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_a_p) +"sOK" = ( +/obj/structure/disposalpipe/down/almayer{ + dir = 2; + id = "ares_vault_out"; + name = "wycomms" + }, +/turf/closed/wall/almayer/outer, +/area/almayer/command/airoom) "sOL" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -67538,16 +67553,10 @@ icon_state = "blue" }, /area/almayer/living/port_emb) -"sZV" = ( -/obj/structure/machinery/cm_vending/gear/intelligence_officer{ - density = 0; - pixel_x = -32 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" - }, -/area/almayer/command/computerlab) +"sZY" = ( +/obj/structure/blocker/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south2) "tab" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/box/flashbangs{ @@ -68344,6 +68353,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/stern) +"tmV" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 8; + autoname = 0; + c_tag = "AI - SecVault" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "tmX" = ( /obj/effect/landmark/start/professor, /obj/effect/landmark/late_join/cmo, @@ -68551,6 +68568,16 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/vehiclehangar) +"tqu" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door_control{ + id = "ARES ReceptStairs1"; + name = "ARES Reception Shutters"; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "tqE" = ( /obj/structure/machinery/light{ dir = 8 @@ -68805,19 +68832,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) -"ttT" = ( -/obj/structure/machinery/door_control{ - id = "ARES JoeCryo"; - name = "ARES WorkingJoe Bay Shutters"; - req_one_access_txt = "91;92"; - pixel_x = 24 - }, -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - autoname = 0; - c_tag = "AI - Comms" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "ttX" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/regular{ @@ -69063,23 +69077,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/upper/u_a_s) -"txh" = ( -/obj/structure/surface/table/reinforced/almayer_B{ - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/obj/item/desk_bell{ - pixel_y = 14; - pixel_x = -5; - anchored = 1 - }, -/obj/structure/machinery/computer/working_joe{ - layer = 3.3; - dir = 8 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "txp" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/plating_catwalk, @@ -69240,6 +69237,30 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"tAt" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown" + }, +/obj/effect/step_trigger/ares_alert/access_control, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/disposaloutlet{ + density = 0; + desc = "An outlet for the pneumatic delivery system."; + icon_state = "delivery_outlet"; + name = "returns outlet"; + pixel_y = 28; + range = 0; + pixel_x = -7 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "tAL" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -69353,6 +69374,14 @@ icon_state = "test_floor4" }, /area/almayer/hallways/upper/port) +"tCC" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 1; + c_tag = "AI - Reception Interior"; + autoname = 0 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "tCH" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -69437,18 +69466,6 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) -"tEM" = ( -/obj/effect/projector{ - name = "Almayer_AresDown"; - vector_x = 96; - vector_y = -65 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "tEO" = ( /obj/effect/landmark/start/marine/medic/charlie, /obj/effect/landmark/late_join/charlie, @@ -69671,6 +69688,15 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) +"tIu" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3"; + light_range = 3 + }, +/area/almayer/command/airoom) "tIF" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ @@ -69847,17 +69873,6 @@ icon_state = "green" }, /area/almayer/hallways/upper/fore_hallway) -"tMu" = ( -/obj/structure/stairs{ - dir = 1 - }, -/obj/effect/step_trigger/teleporter_vector{ - name = "Almayer_AresUp2"; - vector_x = -102; - vector_y = 61 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "tMU" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -70091,30 +70106,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"tSI" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "ARES StairsLock"; - name = "ARES Exterior Lockdown" - }, -/obj/effect/step_trigger/ares_alert/access_control, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/disposaloutlet{ - density = 0; - desc = "An outlet for the pneumatic delivery system."; - icon_state = "delivery_outlet"; - name = "returns outlet"; - pixel_y = 28; - range = 0; - pixel_x = -7 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "tSX" = ( /obj/structure/surface/table/almayer, /obj/item/weapon/gun/rifle/l42a{ @@ -70434,16 +70425,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"tYb" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/machinery/door_control{ - id = "ARES ReceptStairs2"; - name = "ARES Reception Stairway Shutters"; - pixel_x = 24; - req_one_access_txt = "91;92" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "tYi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70630,10 +70611,6 @@ }, /turf/open/floor/almayer/aicore/no_build, /area/almayer/command/airoom) -"ubB" = ( -/obj/structure/window/framed/almayer/aicore/hull/black/hijack_bustable, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "ubI" = ( /obj/structure/surface/table/almayer, /obj/item/folder/black_random{ @@ -71305,10 +71282,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/p_bow) -"upK" = ( -/obj/structure/blocker/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south2) "upM" = ( /obj/structure/machinery/light{ dir = 4 @@ -72379,10 +72352,6 @@ icon_state = "outerhull_dir" }, /area/space) -"uJA" = ( -/obj/structure/machinery/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) "uJM" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -72507,6 +72476,27 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) +"uMO" = ( +/obj/effect/projector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = 24; + req_one_access_txt = "90;91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "uMS" = ( /turf/open/floor/almayer{ dir = 5; @@ -72604,15 +72594,6 @@ icon_state = "mono" }, /area/almayer/living/pilotbunks) -"uPg" = ( -/obj/structure/machinery/door_control{ - id = "ARES JoeCryo"; - name = "ARES WorkingJoe Bay Shutters"; - req_one_access_txt = "91;92"; - pixel_x = -24 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "uPr" = ( /turf/open/floor/almayer{ dir = 5; @@ -72622,6 +72603,22 @@ "uPE" = ( /turf/open/floor/almayer, /area/almayer/hallways/lower/port_aft_hallway) +"uPI" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/structure/transmitter/rotary{ + name = "AI Reception Telephone"; + phone_category = "ARES"; + phone_color = "blue"; + phone_id = "AI Reception" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "uPP" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -72975,6 +72972,18 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) +"uUB" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/item/paper_bin/uscm{ + pixel_y = 6 + }, +/obj/item/tool/pen, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "uVc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -73466,18 +73475,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_f_s) -"vcM" = ( -/obj/effect/projector{ - name = "Almayer_AresUp"; - vector_x = -96; - vector_y = 65 - }, -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "vdl" = ( /obj/structure/window/reinforced/ultra{ pixel_y = -12 @@ -74299,6 +74296,23 @@ /obj/item/clothing/mask/cigarette/weed, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"vpH" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/item/desk_bell{ + pixel_y = 14; + pixel_x = -5; + anchored = 1 + }, +/obj/structure/machinery/computer/working_joe{ + layer = 3.3; + dir = 8 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "vpI" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -74949,42 +74963,6 @@ icon_state = "ai_arrow" }, /area/almayer/command/airoom) -"vyG" = ( -/obj/structure/machinery/door_control{ - id = "ARES StairsUpper"; - name = "ARES Core Access"; - pixel_x = -10; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/obj/structure/machinery/door_control{ - id = "ARES StairsLock"; - name = "ARES Exterior Lockdown"; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/obj/structure/surface/table/reinforced/almayer_B{ - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/obj/structure/machinery/door_control{ - id = "ARES Emergency"; - name = "ARES Emergency Lockdown"; - pixel_x = 10; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/obj/structure/machinery/computer/cameras/almayer{ - dir = 4; - pixel_y = 12 - }, -/obj/structure/machinery/computer/cameras/almayer/ares{ - dir = 4; - pixel_y = -1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "vyH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -75239,6 +75217,22 @@ /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/s_bow) +"vCH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 4; + c_tag = "AI - Primary Processors"; + autoname = 0 + }, +/turf/open/floor/almayer/aicore/glowing/no_build, +/area/almayer/command/airoom) "vCO" = ( /obj/effect/landmark/start/bridge, /turf/open/floor/plating/plating_catwalk, @@ -75759,6 +75753,16 @@ icon_state = "silver" }, /area/almayer/hallways/lower/repair_bay) +"vLz" = ( +/obj/structure/machinery/door_control{ + id = "ARES Mainframe Right"; + name = "ARES Mainframe Lockdown"; + pixel_x = -24; + pixel_y = -24; + req_one_access_txt = "200;91;92" + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "vLA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -75908,12 +75912,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) -"vOp" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 6 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "vOu" = ( /obj/structure/surface/table/almayer, /obj/item/weapon/gun/energy/taser, @@ -76164,6 +76162,17 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"vRA" = ( +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresDown"; + vector_x = 96; + vector_y = -65 + }, +/obj/structure/stairs{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "vRR" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -76407,6 +76416,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"vVk" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/closed/wall/almayer/aicore/hull, +/area/almayer/command/airoom) "vVs" = ( /turf/open/floor/almayer{ icon_state = "sterile_green" @@ -77232,6 +77248,12 @@ "wid" = ( /turf/closed/wall/almayer/outer, /area/almayer/maint/hull/lower/p_bow) +"wiu" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3" + }, +/area/almayer/command/airoom) "wiz" = ( /obj/structure/bed/chair{ dir = 4 @@ -78586,6 +78608,17 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) +"wFi" = ( +/obj/structure/machinery/cm_vending/sorted/medical/marinemed, +/obj/structure/sign/safety/medical{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/medical_supply_link, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/panic) "wFn" = ( /obj/structure/surface/rack, /obj/item/clothing/suit/storage/marine/light/vest, @@ -78728,26 +78761,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/aft_hallway) -"wHX" = ( -/obj/structure/machinery/door_control{ - id = "ARES StairsLower"; - name = "ARES Core Lockdown"; - pixel_x = -24; - pixel_y = 8; - req_one_access_txt = "90;91;92" - }, -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 4; - pixel_y = -8; - autoname = 0; - c_tag = "AI - Main Staircase" - }, -/obj/effect/step_trigger/clone_cleaner, -/turf/open/floor/almayer/aicore/no_build{ - dir = 8; - icon_state = "ai_silver" - }, -/area/almayer/command/airoom) "wIr" = ( /obj/structure/machinery/cm_vending/clothing/senior_officer{ req_access = list(); @@ -79239,16 +79252,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"wOT" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/machinery/cm_vending/sorted/medical/marinemed, -/obj/structure/medical_supply_link, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "wPa" = ( /obj/structure/platform{ dir = 4 @@ -80023,6 +80026,18 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"xdA" = ( +/obj/structure/surface/rack{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/faxmachine/uscm/command{ + density = 0; + department = "AI Core"; + pixel_y = 32 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "xdJ" = ( /obj/structure/machinery/light{ dir = 4; @@ -80286,14 +80301,6 @@ /obj/structure/window/reinforced, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"xin" = ( -/obj/structure/machinery/cm_vending/sorted/medical/marinemed, -/obj/structure/medical_supply_link, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/lower_medical_lobby) "xiH" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -80809,6 +80816,17 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/repair_bay) +"xsi" = ( +/obj/structure/stairs{ + dir = 1 + }, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp2"; + vector_x = -102; + vector_y = 61 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "xsl" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -81038,6 +81056,15 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"xwU" = ( +/obj/structure/pipes/vents/pump/no_boom/gas{ + vent_tag = "Comms"; + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_plates" + }, +/area/almayer/command/airoom) "xwX" = ( /turf/open/floor/almayer{ dir = 9; @@ -81119,6 +81146,10 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"xxB" = ( +/obj/structure/machinery/fuelpump, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "xxG" = ( /obj/structure/prop/holidays/string_lights{ pixel_y = 27 @@ -81742,10 +81773,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"xIM" = ( -/obj/structure/blocker/fuelpump, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) "xIQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -83237,15 +83264,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"yhi" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/obj/structure/machinery/camera/autoname/almayer/containment/ares{ - dir = 8; - autoname = 0; - c_tag = "AI - Records" - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "yht" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -83427,13 +83445,6 @@ icon_state = "test_floor5" }, /area/almayer/engineering/lower/engine_core) -"ylL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/closed/wall/almayer/aicore/hull, -/area/almayer/command/airoom) "ylN" = ( /obj/structure/sign/safety/galley{ pixel_x = 8; @@ -101447,7 +101458,7 @@ aaa sGw xzB bfs -plh +wFi qxI dKO ykv @@ -104011,7 +104022,7 @@ wlE gvq wVW lrW -wOT +mqh vHW wVW ccg @@ -107230,7 +107241,7 @@ add fsU aHU aTm -uJA +xxB aTm jgF fsU @@ -107276,7 +107287,7 @@ aJU gBW ouQ iun -rQl +sfA vPm qys gBW @@ -107433,7 +107444,7 @@ awW auK aIr aTm -mdG +cpP aTm juX scu @@ -107479,7 +107490,7 @@ baw lRE tuf vbB -jIF +aqB vbB mlz sOy @@ -107636,7 +107647,7 @@ awW avc aIv aTm -mdG +cpP cbM jzZ sLo @@ -107682,7 +107693,7 @@ baw hJk yac vbB -jIF +aqB vbB fDS iLd @@ -107839,7 +107850,7 @@ add fsU aHU aTm -xIM +fnk aTm jgF fsU @@ -107885,7 +107896,7 @@ aJU gBW ouQ vbB -jIF +aqB tBq qys gBW @@ -108975,7 +108986,7 @@ arX vSG iag nvM -xin +qOZ qjN gGJ ham @@ -109178,7 +109189,7 @@ tzO fVG qpQ nvM -xin +qOZ qjN sld ham @@ -109381,7 +109392,7 @@ qpx bet bgu nvM -xin +qOZ qjN gGJ ham @@ -121059,7 +121070,7 @@ dUR kaE kaE kaE -pTH +eRI qvh aMl xXd @@ -121258,8 +121269,8 @@ mOi mOi mOi mOi -eTY -tSI +sOK +tAt auc hyE aqU @@ -121457,12 +121468,12 @@ xIj qdJ xIj mOi -cup -cup -cCO -gDu -qBa -ikH +onU +onU +qwJ +cOV +imS +rxl xQV qQS aqU @@ -121660,14 +121671,14 @@ sgH qdJ xIj mOi -knD -czh -tEM -tEM +eXy +vRA +ezq +ezq tFe xQV -mxs -hoq +pax +tCC aqU qjF oqv @@ -121863,14 +121874,14 @@ xIj yiu xIj mOi -fQi -fQi -nNk -jKD +mAs +mAs +flR +uMO tFe xVc xQV -txh +vpH aqU gjB wDy @@ -122071,9 +122082,9 @@ mOi mOi mOi mOi -ubB -ubB -ubB +mAe +mAe +mAe aqU jVE nTs @@ -122269,14 +122280,14 @@ oDm poD xIj mOi -epG -epG -lce -inI +mzP +mzP +nkK +tqu aqU -rcR -pLH -vyG +gpW +ofY +eQj aqU lyE rsO @@ -122472,14 +122483,14 @@ muW qdJ xIj mOi -epG -epG -lup +mzP +mzP +cJv xQV -fDk +mCx qQS -lmp -ogU +tIu +uPI aqU wmK liJ @@ -122674,15 +122685,15 @@ adO xIj qdJ xIj -fUm -fUm -fUm -fUm -fUm +ryn +ryn +ryn +ryn +ryn mOi -cSO +xdA qQS -iwg +uUB aqU aHq cnH @@ -123084,11 +123095,11 @@ ioU qyZ wTd cmK -ogD -sZV -eDT -sZV -gzH +cyP +kSi +mmn +kSi +qyA kXu jHC liJ @@ -124484,7 +124495,7 @@ aeC wXh ayn atr -obw +lMy aex ciw wXh @@ -124532,7 +124543,7 @@ vcE kpo iMx tGi -inm +cea bXe eyG kpo @@ -124687,7 +124698,7 @@ aeA asY ayQ atr -nWC +iDK atr ciD ngl @@ -124735,7 +124746,7 @@ lJY ttS wEO faO -eUw +cOd bXe deg wLu @@ -124890,7 +124901,7 @@ aeA atp ayR atr -nWC +iDK atr cji nqV @@ -124938,7 +124949,7 @@ lJY hlX umh bXe -eUw +cOd tGi pfH wlF @@ -125093,7 +125104,7 @@ aeC wXh ayn atr -iLe +rmG bXz ciw wXh @@ -125141,7 +125152,7 @@ vcE kpo iMx bXe -upK +sZY mzF eyG kpo @@ -139177,19 +139188,19 @@ lmz lmz lmz lmz -rAd -rAd -rAd -rAd -rAd -rAd -rAd -rAd -rAd -rAd -rAd -rAd -rAd +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn bdH bdH bdH @@ -139996,7 +140007,7 @@ ebN qQS gwn pfT -jYR +vCH dyp daz lmz @@ -140394,7 +140405,7 @@ tte hvw auf pmV -yhi +eGr xDC dIn rby @@ -140600,7 +140611,7 @@ ebN ebN lnS uVv -mxB +flf ebN cxc kBy @@ -140993,7 +141004,7 @@ lmz lmz lmz daz -hoo +jYH ubA cck wyQ @@ -141008,12 +141019,12 @@ aGk ktQ teZ wkM -wHX +ege hWP -cSh -cSh -gsV -gsV +bZq +bZq +mIi +mIi daz lmz lmz @@ -141199,7 +141210,7 @@ daz cwS ffE vHa -qSA +nDy ffE ffE ffE @@ -141213,10 +141224,10 @@ erN wkM jvB jtj -vcM -vcM -pDQ -guU +swx +swx +qKZ +gjv daz lmz lmz @@ -141402,24 +141413,24 @@ daz oRV ydI mdW -jaH +ios awu ydI aKs fMt mEs gbm -nIB +oBD lFj vyE -bha +mTr wkM qNc jdl -lwZ -lwZ -lvB -goN +dpp +dpp +jgy +eii daz lmz lmz @@ -141607,7 +141618,7 @@ eKJ yaZ ffE hZj -iCf +fQD daz daz daz @@ -141818,7 +141829,7 @@ ebN ebN gbg uVv -ibN +xwU ebN qQS kBy @@ -142018,10 +142029,10 @@ tte hvw auf hTl -efE +jrH xDC yaQ -bat +vLz mFN kSy dDp @@ -142221,7 +142232,7 @@ sbJ sbJ daz rna -aOZ +qRX qQS aCd qQS @@ -142415,24 +142426,24 @@ lmz lmz lmz daz -aiM -aiM -aiM +hWM +hWM +hWM ebN daz -klK -rFt +ocL +qpY daz -ttT -gfQ +drU +itg gba -mUz +kRQ our ebN cxc kBy kBy -khJ +dzt gyN daz lmz @@ -142618,16 +142629,16 @@ lmz lmz lmz daz -aiM -gWN -aiM +hWM +fVx +hWM ebN tId ltc ltc daz ebN -npE +fCI ebN daz daz @@ -142820,17 +142831,17 @@ bdH bdH bdH bdH -sBR -aiM +izf +hWM qQS -aiM +hWM ebN tId -gWN +fVx qQS ebN -uPg -gfQ +naj +itg qQS daz daz @@ -143023,22 +143034,22 @@ aaa bdH bdH bdH -dop -cAQ -gWN -aiM +vVk +cJI +fVx +hWM ebN tId qQS -vOp -oBv +mIJ +wiu xDC yaQ jtj -mss -gVz -gVz -tMu +oZx +irr +irr +xsi daz lmz lmz @@ -143226,22 +143237,22 @@ aaa bdH bdH bdH -ylL -hfZ -orI +fhR +nKO +tmV qQS -bEX +gDh qQS qQS -hTB -rCi +bMg +flL qQS qQS -tYb -rYc -eYf -iRU -tMu +pUg +sII +cFg +pkS +xsi daz lmz lmz @@ -143429,7 +143440,7 @@ bdH bdH bdH bdH -dmU +npq daz daz daz diff --git a/tgui/packages/tgui/interfaces/AresAdmin.js b/tgui/packages/tgui/interfaces/AresAdmin.js index 3963ee87f3a4..dd51b5a1e007 100644 --- a/tgui/packages/tgui/interfaces/AresAdmin.js +++ b/tgui/packages/tgui/interfaces/AresAdmin.js @@ -19,6 +19,7 @@ const PAGES = { 'requisitions': () => Requisitions, 'emergency': () => Emergency, 'tech_log': () => TechLogs, + 'core_security': () => CoreSec, 'admin_access_log': () => AdminAccessLogs, 'access_management': () => AccessManagement, 'maintenance_management': () => MaintManagement, @@ -32,6 +33,10 @@ export const AresAdmin = (props, context) => { let themecolor = 'crtyellow'; if (sudo >= 1) { themecolor = 'crtred'; + } else if (current_menu === 'emergency') { + themecolor = 'crtred'; + } else if (current_menu === 'core_security') { + themecolor = 'crtred'; } return ( @@ -350,6 +355,25 @@ const MainMenu = (props, context) => { )} +
+

Core Security Protocols

+ + +
@@ -665,7 +689,7 @@ const BombardmentLogs = (props, context) => { User - Coordinates + Details )} @@ -1328,6 +1352,8 @@ const FlightLogs = (props, context) => {

{logged_in}, {access_text} +
+ Remote Admin: {admin_login}

{ ); }; +const CoreSec = (props) => { + const { data, act } = useBackend(); + const { + logged_in, + access_text, + last_page, + current_menu, + security_vents, + admin_login, + } = data; + + return ( + <> +
+ + +
+ +
+

Core Security Protocols

+
+
+

Nerve Gas Release

+ {security_vents.map((vent, i) => { + return ( + act('trigger_vent', { vent: vent.ref })} + /> + ); + })} +
+ + ); +}; + // -------------------------------------------------------------------- // // Anything below this line is exclusive to the Admin Remote Interface. // -------------------------------------------------------------------- // diff --git a/tgui/packages/tgui/interfaces/AresInterface.jsx b/tgui/packages/tgui/interfaces/AresInterface.jsx index 4045cba6509c..be9106e31c25 100644 --- a/tgui/packages/tgui/interfaces/AresInterface.jsx +++ b/tgui/packages/tgui/interfaces/AresInterface.jsx @@ -23,6 +23,7 @@ const PAGES = { 'requisitions': () => Requisitions, 'emergency': () => Emergency, 'tech_log': () => TechLogs, + 'core_security': () => CoreSec, }; export const AresInterface = (props) => { @@ -35,6 +36,8 @@ export const AresInterface = (props) => { themecolor = 'crtred'; } else if (current_menu === 'emergency') { themecolor = 'crtred'; + } else if (current_menu === 'core_security') { + themecolor = 'crtred'; } return ( @@ -365,6 +368,27 @@ const MainMenu = (props) => {
)}
+ {(access_level === 3 || access_level >= 6) && ( +
+

Core Security Protocols

+ + +
+ )} ); }; @@ -628,7 +652,7 @@ const BombardmentLogs = (props) => { User - Coordinates + Details )} @@ -1670,3 +1694,77 @@ const TechLogs = (props, context) => { ); }; + +const CoreSec = (props) => { + const { data, act } = useBackend(); + const { + logged_in, + access_text, + access_level, + last_page, + current_menu, + security_vents, + } = data; + + return ( + <> +
+ + +
+ +
+

Core Security Protocols

+
+
+

Nerve Gas Release

+ {security_vents.map((vent, i) => { + return ( + act('trigger_vent', { vent: vent.ref })} + /> + ); + })} +
+ + ); +}; diff --git a/tgui/packages/tgui/interfaces/KeyBinds.jsx b/tgui/packages/tgui/interfaces/KeyBinds.jsx index b387d6a8dba5..b3b2fd5a8c30 100644 --- a/tgui/packages/tgui/interfaces/KeyBinds.jsx +++ b/tgui/packages/tgui/interfaces/KeyBinds.jsx @@ -10,6 +10,20 @@ const KEY_MODS = { 'CONTROL': true, }; +const KEY_CODE_TO_BYOND = { + 'DEL': 'Delete', + 'DOWN': 'South', + 'END': 'Southwest', + 'HOME': 'Northwest', + 'INSERT': 'Insert', + 'LEFT': 'West', + 'PAGEDOWN': 'Southeast', + 'PAGEUP': 'Northeast', + 'RIGHT': 'East', + ' ': 'Space', + 'UP': 'North', +}; + const getAllKeybinds = (glob_keybinds) => { const all_keybinds = new Array(); Object.keys(glob_keybinds).map((x) => all_keybinds.push(...glob_keybinds[x])); @@ -274,6 +288,10 @@ export class ButtonKeybind extends Component { return; } + if (KEY_CODE_TO_BYOND[pressedKey]) { + pressedKey = KEY_CODE_TO_BYOND[pressedKey]; + } + if (e.keyCode >= 96 && e.keyCode <= 105) { pressedKey = 'Numpad' + pressedKey; } diff --git a/tgui/packages/tgui/interfaces/WorkingJoe.jsx b/tgui/packages/tgui/interfaces/WorkingJoe.jsx index 4864631aa152..64aa5167d265 100644 --- a/tgui/packages/tgui/interfaces/WorkingJoe.jsx +++ b/tgui/packages/tgui/interfaces/WorkingJoe.jsx @@ -12,14 +12,20 @@ const PAGES = { 'access_requests': () => AccessRequests, 'access_tickets': () => AccessTickets, 'id_access': () => AccessID, + 'core_security_gas': () => CoreSecGas, }; export const WorkingJoe = (props) => { const { data } = useBackend(); const { current_menu } = data; const PageComponent = PAGES[current_menu](); + let themecolor = 'crtblue'; + if (current_menu === 'core_security_gas') { + themecolor = 'crtred'; + } + return ( - + @@ -235,6 +241,27 @@ const MainMenu = (props) => { )} + {access_level >= 5 && ( +
+

Core Security Protocols

+ + +
+ )} ); }; @@ -963,3 +990,72 @@ const AccessTickets = (props) => { ); }; + +const CoreSecGas = (props) => { + const { data, act } = useBackend(); + const { + logged_in, + access_text, + access_level, + last_page, + current_menu, + security_vents, + } = data; + + return ( + <> +
+ + +
+ +
+

Nerve Gas Release

+ {security_vents.map((vent, i) => { + return ( + act('trigger_vent', { vent: vent.ref })} + /> + ); + })} +
+ + ); +};