From a94a1f88a3a3a709315404d099ccfb328fc6b2ba Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Wed, 17 Apr 2024 00:21:24 +0100 Subject: [PATCH 01/49] Project ARES: Nerve Gas Control (#5643) # About the pull request Allows nerve gas to be deployed from the AI Core vent system by use of the APOLLO and ARES Interface consoles. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: 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. /:cl: --- code/__DEFINES/ARES.dm | 3 +- code/game/machinery/ARES/ARES_interface.dm | 85 +- .../machinery/ARES/ARES_interface_admin.dm | 23 + .../machinery/ARES/ARES_interface_apollo.dm | 24 + code/game/machinery/ARES/ARES_procs.dm | 21 + code/game/machinery/ARES/apollo_pda.dm | 24 + .../objects/effects/effect_system/smoke.dm | 2 +- .../structures/pipes/vents/pump_scrubber.dm | 29 + maps/map_files/USS_Almayer/USS_Almayer.dmm | 2559 +++++++++-------- tgui/packages/tgui/interfaces/AresAdmin.js | 100 + .../tgui/interfaces/AresInterface.jsx | 98 + tgui/packages/tgui/interfaces/WorkingJoe.jsx | 98 +- 12 files changed, 1760 insertions(+), 1306 deletions(-) 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/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..f18957a22d82 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) 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/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index c9e404ae5b60..b79e50b453cc 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -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/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/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..bf9fdfacc1aa 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

+ + +
@@ -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..bf7ded50d8ab 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

+ + +
+ )} ); }; @@ -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/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 })} + /> + ); + })} +
+ + ); +}; From 4d9c9e97764d00791de2efbf2c4010c4eea294d3 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 17 Apr 2024 00:26:42 +0100 Subject: [PATCH 02/49] Automatic changelog for PR #5643 [ci skip] --- html/changelogs/AutoChangeLog-pr-5643.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5643.yml diff --git a/html/changelogs/AutoChangeLog-pr-5643.yml b/html/changelogs/AutoChangeLog-pr-5643.yml new file mode 100644 index 000000000000..37034c2a5a42 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5643.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - 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." \ No newline at end of file From 0d479ed938835decc095c22d16418a9f8714b832 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 17 Apr 2024 01:09:16 +0000 Subject: [PATCH 03/49] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-5643.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6108.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6116.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6117.yml | 6 ------ html/changelogs/AutoChangeLog-pr-6149.yml | 4 ---- html/changelogs/archive/2024-04.yml | 14 ++++++++++++++ 6 files changed, 14 insertions(+), 22 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-5643.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6108.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6116.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6117.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6149.yml diff --git a/html/changelogs/AutoChangeLog-pr-5643.yml b/html/changelogs/AutoChangeLog-pr-5643.yml deleted file mode 100644 index 37034c2a5a42..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5643.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - 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." \ No newline at end of file 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-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/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml index b19a3e201e6f..2ab715ef58a3 100644 --- a/html/changelogs/archive/2024-04.yml +++ b/html/changelogs/archive/2024-04.yml @@ -233,3 +233,17 @@ - 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 From acb69a7448dd2fdf90be079106f5eff112bd4aba Mon Sep 17 00:00:00 2001 From: InsaneRed <47158596+InsaneRed@users.noreply.github.com> Date: Wed, 17 Apr 2024 04:30:33 +0300 Subject: [PATCH 04/49] Hedgehog explosion immunity rebalance (#6104) # About the pull request Hedgehog now only has explosion stun immunity if you're above half shard rate. # Explain why it's good for the game Hedgehog is arguably one of the safest castes right now, always has grenade immunity, no longer has a slowdown and an increasing armor rate with its spikes and an invincibility button. The immunity was given due to the slowdown it naturally had, but recent changes have touched that without removing or touching up its immunity, this tries to fix that. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: balance: Hedgehog now gains explosion immunity to nades if you have above half shard amount. /:cl: --------- Co-authored-by: InsaneRed Co-authored-by: Birdtalon Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- .../xenomorph/strains/castes/ravager/hedgehog.dm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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 From c3d7e501f33e0a1b272ae91287eb7994f1cdbe62 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 17 Apr 2024 02:35:40 +0100 Subject: [PATCH 05/49] Automatic changelog for PR #6104 [ci skip] --- html/changelogs/AutoChangeLog-pr-6104.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6104.yml diff --git a/html/changelogs/AutoChangeLog-pr-6104.yml b/html/changelogs/AutoChangeLog-pr-6104.yml new file mode 100644 index 000000000000..2f529ea329ed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6104.yml @@ -0,0 +1,4 @@ +author: "InsaneRed" +delete-after: True +changes: + - balance: "Hedgehog now gains explosion immunity to nades if you have above half shard amount." \ No newline at end of file From f90db83ca4c2996387418e11552d87318a49e7fd Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Thu, 18 Apr 2024 02:51:06 +0800 Subject: [PATCH 06/49] Updates UPP Synthetic Loadout (#6098) # About the pull request This PR updates the UPP Synthetic loadout to account for it no longer being a combat synthetic, this includes changing its job title to that of a Support Synthetic instead of a Combat Synthetic. This effects a large change to its loadout which is detailed below, and is showcased in the screenshots section. Furthermore this PR adds the UPP Support Synthetic job to the UPP crew monitor, previously niche as this only applied to the survivor UPP synthetic but now relevant as the regular UPP synthetic is also considered a support synth. The major changes to the inventory include. * Custom UPP synthetic armour, stats identical to USCM Synthetic armour (no armour, little slowdown) * Addition of a telescopic baton * Customized surgical vest and medical storage rig * Expanded tool pouch * New epinephrine chem bottle and hypo spray, issued to the UPP synth # Explain why it's good for the game The change to the Combat status of the UPP (and CLF) synthetic did not actually account for their inventory to a complete and comprehensive degree, ergo these units are lacking in a effective loadout. This included the fact the synth still technically spawned with armour and items inside the armour, but the armour (and thus the items inside the armour) are automatically deleted due to the synth not being able to wear it, and that the synthetic is still listed in-game as a Combat Synth. This PR fixes this and brings the loadout of the UPP synth up to a better standard to perform its duties as a support Synth whilst giving it some limited self-defence tools in the baton. # Testing Photographs and Procedure
Screenshots & Videos ![Screenshot 2024-04-06 23 56 38](https://github.com/cmss13-devs/cmss13/assets/6595389/db5ede70-5629-4f84-867b-3a84ad2e1a9f)
# Changelog :cl: balance: UPP Synthetic's loadout has been reworked to account for its new status as a non-combatant. /:cl: --------- Co-authored-by: Steelpoint --- .../objects/items/reagent_containers/glass.dm | 8 +++++ .../items/reagent_containers/glass/bottle.dm | 10 ++++++ .../items/reagent_containers/hypospray.dm | 3 ++ code/game/objects/items/storage/belt.dm | 23 ++++++++++++ code/game/objects/items/storage/pouch.dm | 15 ++++++++ .../clothing/suits/marine_armor/ert.dm | 16 +++++++++ code/modules/clothing/under/ties.dm | 19 ++++++++++ code/modules/cm_marines/marines_consoles.dm | 1 + code/modules/gear_presets/upp.dm | 35 +++++++++++-------- 9 files changed, 115 insertions(+), 15 deletions(-) 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..2cb314a0b981 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." 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/modules/clothing/suits/marine_armor/ert.dm b/code/modules/clothing/suits/marine_armor/ert.dm index 6d2ad9934a40..67bdd523c7f2 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." 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..13f5e2d0df6d 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -1084,6 +1084,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/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( From ba4086e9ed5ee1f2890c6796810f04e139b3b286 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 17 Apr 2024 19:55:44 +0100 Subject: [PATCH 07/49] Automatic changelog for PR #6098 [ci skip] --- html/changelogs/AutoChangeLog-pr-6098.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6098.yml diff --git a/html/changelogs/AutoChangeLog-pr-6098.yml b/html/changelogs/AutoChangeLog-pr-6098.yml new file mode 100644 index 000000000000..9ffb169d2d2d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6098.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - balance: "UPP Synthetic's loadout has been reworked to account for its new status as a non-combatant." \ No newline at end of file From 6f4658846464ec2fe81449a9e633e0dfa80dafe3 Mon Sep 17 00:00:00 2001 From: harry Date: Wed, 17 Apr 2024 19:51:44 +0100 Subject: [PATCH 08/49] dehardcodes client version warnings (#6114) :cl: MrStonedOne, LemonInTheDark server: config now allows you to warn players to upgrade their byond version, or bar them based on their byond version /:cl: thanks to https://github.com/tgstation/tgstation/pull/73549 https://github.com/tgstation/tgstation/pull/16914 --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- .../configuration/entries/general.dm | 24 +++++++++++ code/modules/client/client_procs.dm | 40 +++++++++++++------ config/example/config.txt | 12 ++++++ 3 files changed, 63 insertions(+), 13 deletions(-) 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/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/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. From 4450acc3442fa45fb1c40d81ec1e1509d1236887 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 17 Apr 2024 20:03:45 +0100 Subject: [PATCH 09/49] Automatic changelog for PR #6114 [ci skip] --- html/changelogs/AutoChangeLog-pr-6114.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6114.yml diff --git a/html/changelogs/AutoChangeLog-pr-6114.yml b/html/changelogs/AutoChangeLog-pr-6114.yml new file mode 100644 index 000000000000..db87fb2cfcf2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6114.yml @@ -0,0 +1,4 @@ +author: "MrStonedOne, LemonInTheDark" +delete-after: True +changes: + - server: "config now allows you to warn players to upgrade their byond version, or bar them based on their byond version" \ No newline at end of file From aef42728dabb863a49e3ba2848194845ae90881d Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 18 Apr 2024 01:08:44 +0000 Subject: [PATCH 10/49] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-6098.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6104.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6114.yml | 4 ---- html/changelogs/archive/2024-04.yml | 10 ++++++++++ 4 files changed, 10 insertions(+), 12 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-6098.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6104.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6114.yml diff --git a/html/changelogs/AutoChangeLog-pr-6098.yml b/html/changelogs/AutoChangeLog-pr-6098.yml deleted file mode 100644 index 9ffb169d2d2d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6098.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - balance: "UPP Synthetic's loadout has been reworked to account for its new status as a non-combatant." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6104.yml b/html/changelogs/AutoChangeLog-pr-6104.yml deleted file mode 100644 index 2f529ea329ed..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6104.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "InsaneRed" -delete-after: True -changes: - - balance: "Hedgehog now gains explosion immunity to nades if you have above half shard amount." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6114.yml b/html/changelogs/AutoChangeLog-pr-6114.yml deleted file mode 100644 index db87fb2cfcf2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6114.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrStonedOne, LemonInTheDark" -delete-after: True -changes: - - server: "config now allows you to warn players to upgrade their byond version, or bar them based on their byond version" \ No newline at end of file diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml index 2ab715ef58a3..82507d62ef9f 100644 --- a/html/changelogs/archive/2024-04.yml +++ b/html/changelogs/archive/2024-04.yml @@ -247,3 +247,13 @@ - 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. From b6f89f3c29301301f4a90ead75746d16ffab26d2 Mon Sep 17 00:00:00 2001 From: QuickLode <63271983+QuickLode@users.noreply.github.com> Date: Wed, 17 Apr 2024 19:22:01 -0700 Subject: [PATCH 11/49] Fiorina Riot In Progress: Colonial Marshals & United Americas Police (#6022) # About the pull request Howdy, this PR adds in unique Riot Response flavored CMB Deputies and UA Riot Police to a Survivor Nightmare(thx badatthisgame302) on Fiorina Science Annex. Because this is a survivor nightmare I kept the loadouts very sparse, so you will only find a couple mags of ammo per weapon, and all participants here will likely have to resort to their sidearm. It is implied that by the time players control these characters, they've been surviving for hours if not days. Furthermore, because its a riot response, there are no specialists (engineers, doctors, etc.) to help the support side of things. After all, it is just a riot call.. PS. If you haven't read the Alien: Isolation comic yet, something similar is implied there. :) On the CMB side we have 3 variations and a Synthetic. These investigative federal agents are nimble on their feet, but inadequately protected and their weapons are more focused on self defense. They were sent here as emergency back-up to the understaffed prison, and aren't prepared for this scenario. They do however still carry some rubber munitions and crowd control elements. On the UA side we have 4 variations and a Synthetic. The infamous United Americas Riot Control Police show with four variations. Donned in complete riot gear and with uniformity, they would seem like an unstoppable force to be reckoned with. Unfortunately for them, they're dealing with Xenomorphs - all of their crowd control devices and nonlethal munitions may prove to be very ineffective at dealing with this new threat at hand.. # Explain why it's good for the game Adding meaningful and fitting equipment really adds to the immersion. Its not just a setting but it envokes the real feeling of "We came here to stop a riot, but we found something much more sinister." By giving players these settings to play with, they'll feel much more at home in the Aliens universe as opposed to the looming feeling of it being "just another round, just another role." I think CM really benefits from spicing up the loop and nightmares are an excellent example of that. Having lore accurate, flavorful layouts like this where you have a consistent theme going allows for excellent immersion. Even if everyone dies, the Marines stumbling upon the corpses of a horrific incident like this will be a really unique experience, in my opinion. # Testing Photographs and Procedure
Screenshots & Videos Basically I created a new file for these fine people and added what I think is thematically fitting for this scenario. I then tested it, fixed bugs, and then tested it again. This happened 3 times until I could no longer find any bugs. https://cdn.discordapp.com/attachments/1042176396711170119/1222482124771430460/image.png?ex=66166033&is=6603eb33&hm=69719c33b5d811033f62cba605d5ba6e044c4cdd8f7056c50e49e9523e7ce3f8&
# Changelog :cl: add: 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.. add: Adds a CMB Investigative Synthetic(r) and a UA Police Synthetic. add: Allows police baton and telescopic baton to shield clash for intimidation and riot tactics. add: Allows M81 launcher to utilize less lethal baton round qol: removes taser from some security synthetics belts, replaced with a more synthetic friendly version /:cl: --------- Co-authored-by: SabreML <57483089+SabreML@users.noreply.github.com> Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- .../effects/landmarks/survivor_spawner.dm | 8 +- code/game/objects/items/storage/belt.dm | 7 + code/game/objects/items/weapons/shields.dm | 2 +- .../clothing/suits/marine_armor/ert.dm | 16 + ...ot_in_progress_insert_fiorina_nightmare.dm | 276 ++++++++++++++++++ code/modules/gear_presets/synths.dm | 4 +- .../specialist/launcher/grenade_launcher.dm | 2 +- colonialmarines.dme | 1 + 8 files changed, 308 insertions(+), 8 deletions(-) create mode 100644 code/modules/gear_presets/survivors/fiorina_sciannex/riot_in_progress_insert_fiorina_nightmare.dm 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/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 2cb314a0b981..1daffa2908f0 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -406,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/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/modules/clothing/suits/marine_armor/ert.dm b/code/modules/clothing/suits/marine_armor/ert.dm index 67bdd523c7f2..106b09961103 100644 --- a/code/modules/clothing/suits/marine_armor/ert.dm +++ b/code/modules/clothing/suits/marine_armor/ert.dm @@ -747,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/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/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/colonialmarines.dme b/colonialmarines.dme index 0d39f12cdbc6..b69a03136b78 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1782,6 +1782,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\kutjevo\preset_kutjevo.dm" #include "code\modules\gear_presets\survivors\lv_522\forcon_survivors.dm" #include "code\modules\gear_presets\survivors\lv_624\clfship_insert_lv624.dm" From 6f7776a3fb84035deb200bc82d01dcb56d3862bf Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 18 Apr 2024 03:26:19 +0100 Subject: [PATCH 12/49] Automatic changelog for PR #6022 [ci skip] --- html/changelogs/AutoChangeLog-pr-6022.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6022.yml diff --git a/html/changelogs/AutoChangeLog-pr-6022.yml b/html/changelogs/AutoChangeLog-pr-6022.yml new file mode 100644 index 000000000000..b5a61f605ed6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6022.yml @@ -0,0 +1,8 @@ +author: "QuickLode" +delete-after: True +changes: + - 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" \ No newline at end of file From 4b4709babb6f7f6709d0d4da781f1deef4db4185 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 19 Apr 2024 01:09:59 +0000 Subject: [PATCH 13/49] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-6022.yml | 8 -------- html/changelogs/archive/2024-04.yml | 13 +++++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-6022.yml diff --git a/html/changelogs/AutoChangeLog-pr-6022.yml b/html/changelogs/AutoChangeLog-pr-6022.yml deleted file mode 100644 index b5a61f605ed6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6022.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "QuickLode" -delete-after: True -changes: - - 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" \ No newline at end of file diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml index 82507d62ef9f..3fc9edf51cfb 100644 --- a/html/changelogs/archive/2024-04.yml +++ b/html/changelogs/archive/2024-04.yml @@ -257,3 +257,16 @@ 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 From 8525fc3550973ac478decea315971a4e166f396e Mon Sep 17 00:00:00 2001 From: iloveloopers <140007537+iloveloopers@users.noreply.github.com> Date: Thu, 18 Apr 2024 21:56:14 -0400 Subject: [PATCH 14/49] Stabilized metallic foam, a gimmick new flamer fuel (#6062) # About the pull request billions must foam adds in stabilized metallic foam, usable by flamers to make iron foam uses 2 units per tile that the main line travels max range of 6 tiles # Explain why it's good for the game billions must foam new and exciting way to block xenos from retreating can also be used by engineers to patch breaches more custom flamer fuel variety # Testing Photographs and Procedure https://www.youtube.com/watch?v=2x8rWPyxzpA https://github.com/cmss13-devs/cmss13/assets/140007537/e96a50c5-e5a6-45bd-bd12-bab3d0085189 # Changelog :cl: add: adds new flamer fuel type, stabilized metallic foam add: Incinerator tanks can now hold stabilized metallic foam /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- .../objects/effects/effect_system/foam.dm | 3 +- code/modules/projectiles/gun_attachables.dm | 4 ++ .../modules/projectiles/guns/flamer/flamer.dm | 58 ++++++++++++++++++- code/modules/projectiles/magazines/flamer.dm | 2 +- .../reagents/chemistry_reactions/other.dm | 6 ++ .../reagents/chemistry_reagents/other.dm | 9 +++ 6 files changed, 79 insertions(+), 3 deletions(-) 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/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/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..2c441fb7059c 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" From 62671799ac580dde6a0a2c794079e71534a6fd53 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 19 Apr 2024 03:01:59 +0100 Subject: [PATCH 15/49] Automatic changelog for PR #6062 [ci skip] --- html/changelogs/AutoChangeLog-pr-6062.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6062.yml diff --git a/html/changelogs/AutoChangeLog-pr-6062.yml b/html/changelogs/AutoChangeLog-pr-6062.yml new file mode 100644 index 000000000000..e0d9179d29f0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6062.yml @@ -0,0 +1,5 @@ +author: "iloveloopers" +delete-after: True +changes: + - rscadd: "adds new flamer fuel type, stabilized metallic foam" + - rscadd: "Incinerator tanks can now hold stabilized metallic foam" \ No newline at end of file From 4ae1fc89b8cc0fcf7709b54f0e4c51d891592220 Mon Sep 17 00:00:00 2001 From: iloveloopers <140007537+iloveloopers@users.noreply.github.com> Date: Thu, 18 Apr 2024 21:57:27 -0400 Subject: [PATCH 16/49] brightens the burncolor of the high-combustion napalm fuel (#6147) # About the pull request it says on the title # Explain why it's good for the game its a little too hard to see currently # Testing Photographs and Procedure ![new color](https://github.com/cmss13-devs/cmss13/assets/140007537/6faa3d84-24e1-4557-8ede-3aed85a31584) ![old color](https://github.com/cmss13-devs/cmss13/assets/140007537/23122d17-5b23-4058-8219-93399774ccf9)
# Changelog :cl: balance: High-Combustion napalm fuel is now easier to see on the ground /:cl: --- code/modules/reagents/chemistry_reagents/other.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry_reagents/other.dm b/code/modules/reagents/chemistry_reagents/other.dm index 2c441fb7059c..09b835b1482d 100644 --- a/code/modules/reagents/chemistry_reagents/other.dm +++ b/code/modules/reagents/chemistry_reagents/other.dm @@ -719,9 +719,9 @@ id = "highdamagenapalm" description = "A custom napalm mix, higher damage but not as sticky" reagent_state = LIQUID - color = "#742424" + color = "#c51c1c" chemfiresupp = FALSE - burncolor = "#742424" + burncolor = "#c51c1c" burn_sprite = "dynamic" properties = list( PROPERTY_INTENSITY = BURN_LEVEL_TIER_8, From 4f1e9f588aefcd050c3dcb684c3f6186ced3115b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 19 Apr 2024 03:09:10 +0100 Subject: [PATCH 17/49] Automatic changelog for PR #6147 [ci skip] --- html/changelogs/AutoChangeLog-pr-6147.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6147.yml diff --git a/html/changelogs/AutoChangeLog-pr-6147.yml b/html/changelogs/AutoChangeLog-pr-6147.yml new file mode 100644 index 000000000000..482deca82b77 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6147.yml @@ -0,0 +1,4 @@ +author: "iloveloopers" +delete-after: True +changes: + - balance: "High-Combustion napalm fuel is now easier to see on the ground" \ No newline at end of file From 45b9090737c5847bac4176960cbb0275f3d6a746 Mon Sep 17 00:00:00 2001 From: Julian56 <117036822+Huffie56@users.noreply.github.com> Date: Sat, 20 Apr 2024 02:05:20 +0200 Subject: [PATCH 18/49] Increase damage of standard revolver ammo from 55 to 72 (#6123) # About the pull request After some testing from myself on a private server and gathering a lot of feedback from a post i made on the forum. https://forum.cm-ss13.com/t/m44-rework-making-this-handgun-potent-and-unique-already-unique-in-uscm-weapon/6917 i think M44 is very cool buy lack damage output as an handgun if comparison to all the other handguns. why 72 ? because it allow to kill a drone with a full mag and a runner with three bullet (if you manage to hit them) it balance itself with the low mag capacity and the lower firing speed of it. # Explain why it's good for the game because the M44 is cool to use but i also want it to make it a decent pick if you want to use an handgun. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: balance: Increase damage of standard revolver ammo from 55 to 72. balance: Marksman ammo remains 55 damage. /:cl: --------- Co-authored-by: Julien --- code/datums/ammo/bullet/revolver.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 From e14d1534c3d41e629477d9ec0593fd9867b81a14 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 01:09:56 +0100 Subject: [PATCH 19/49] Automatic changelog for PR #6123 [ci skip] --- html/changelogs/AutoChangeLog-pr-6123.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6123.yml diff --git a/html/changelogs/AutoChangeLog-pr-6123.yml b/html/changelogs/AutoChangeLog-pr-6123.yml new file mode 100644 index 000000000000..affc6b6d391b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6123.yml @@ -0,0 +1,5 @@ +author: "Huffie56" +delete-after: True +changes: + - balance: "Increase damage of standard revolver ammo from 55 to 72." + - balance: "Marksman ammo remains 55 damage." \ No newline at end of file From d57d2fba6c9146f9b421ca0fbdd201fe55984396 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 20 Apr 2024 01:09:09 +0000 Subject: [PATCH 20/49] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-6062.yml | 5 ----- html/changelogs/AutoChangeLog-pr-6123.yml | 5 ----- html/changelogs/AutoChangeLog-pr-6147.yml | 4 ---- html/changelogs/archive/2024-04.yml | 8 ++++++++ 4 files changed, 8 insertions(+), 14 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-6062.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6123.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6147.yml diff --git a/html/changelogs/AutoChangeLog-pr-6062.yml b/html/changelogs/AutoChangeLog-pr-6062.yml deleted file mode 100644 index e0d9179d29f0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6062.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "iloveloopers" -delete-after: True -changes: - - rscadd: "adds new flamer fuel type, stabilized metallic foam" - - rscadd: "Incinerator tanks can now hold stabilized metallic foam" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6123.yml b/html/changelogs/AutoChangeLog-pr-6123.yml deleted file mode 100644 index affc6b6d391b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6123.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Huffie56" -delete-after: True -changes: - - balance: "Increase damage of standard revolver ammo from 55 to 72." - - balance: "Marksman ammo remains 55 damage." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6147.yml b/html/changelogs/AutoChangeLog-pr-6147.yml deleted file mode 100644 index 482deca82b77..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6147.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "iloveloopers" -delete-after: True -changes: - - balance: "High-Combustion napalm fuel is now easier to see on the ground" \ No newline at end of file diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml index 3fc9edf51cfb..f9a6421b27cf 100644 --- a/html/changelogs/archive/2024-04.yml +++ b/html/changelogs/archive/2024-04.yml @@ -270,3 +270,11 @@ - 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 From c21848c576011fa09112a96a3c56cbfa439ea424 Mon Sep 17 00:00:00 2001 From: Git-Nivrak <59925169+Git-Nivrak@users.noreply.github.com> Date: Sat, 20 Apr 2024 06:07:37 +0300 Subject: [PATCH 21/49] Fixes mach 3 boilers (#6162) # About the pull request # Explain why it's good for the game Bug bad Also boilers faster than defenders bad # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Fixed a bug which made boilers go way faster than they should /:cl: --- .../mob/living/carbon/xenomorph/abilities/general_abilities.dm | 1 - 1 file changed, 1 deletion(-) 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 From 55bdf27c9569dce60a87029bdef6a9705b96a36b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 04:12:10 +0100 Subject: [PATCH 22/49] Automatic changelog for PR #6162 [ci skip] --- html/changelogs/AutoChangeLog-pr-6162.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6162.yml diff --git a/html/changelogs/AutoChangeLog-pr-6162.yml b/html/changelogs/AutoChangeLog-pr-6162.yml new file mode 100644 index 000000000000..ed0b260f7fd8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6162.yml @@ -0,0 +1,4 @@ +author: "Git-Nivrak" +delete-after: True +changes: + - bugfix: "Fixed a bug which made boilers go way faster than they should" \ No newline at end of file From 1c72aa289f165f33da8173c10ce57327614cb0e5 Mon Sep 17 00:00:00 2001 From: 567Turtle <91508746+567Turtle@users.noreply.github.com> Date: Fri, 19 Apr 2024 22:23:53 -0500 Subject: [PATCH 23/49] Allow SOs to perform basic surgeries (#6136) # About the pull request gives so surgery 1 # Explain why it's good for the game \> give SO surgery tools \> dont give them the capability to use them It was probably an over sight but despite having the tools to do surgery SOs don't know how. They aren't able to properly fulfill their role as medics in a time of crisis.
Screenshots & Videos i didnt test this at all lol, probably works
# Changelog :cl: balance: SO can now do basic surgeries /:cl: --- code/datums/skills/uscm.dm | 1 + 1 file changed, 1 insertion(+) 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, From 76ac6e88e78da5df44d40ddb3ac9960954ac2963 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 04:30:47 +0100 Subject: [PATCH 24/49] Automatic changelog for PR #6136 [ci skip] --- html/changelogs/AutoChangeLog-pr-6136.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6136.yml diff --git a/html/changelogs/AutoChangeLog-pr-6136.yml b/html/changelogs/AutoChangeLog-pr-6136.yml new file mode 100644 index 000000000000..6b41106b5d9a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6136.yml @@ -0,0 +1,4 @@ +author: "567Turtle" +delete-after: True +changes: + - balance: " SO can now do basic surgeries" \ No newline at end of file From 6d7aca67a8f8831553974e9809a1cb26827fe504 Mon Sep 17 00:00:00 2001 From: ItsVyzo <46250991+ItsVyzo@users.noreply.github.com> Date: Fri, 19 Apr 2024 21:04:10 -0700 Subject: [PATCH 25/49] Command Tablets for Provost Marshals (#6153) # About the pull request Adds Command Tablets for Provost Marshals+ # Explain why it's good for the game Generals already get Command Tablets but Provost Marshals do not. Also Provost Marshals are required by Marine Law to announce their Battlefield Executions, the only piece of Marine Law that Marshals have to strictly follow. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: LTNTS add: Adds Command Tablets to Provost Marshal+ /:cl: --- code/modules/gear_presets/uscm_event.dm | 1 + 1 file changed, 1 insertion(+) 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)" From b896706c2b539c20d129e23426e48b9d48914180 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 05:08:41 +0100 Subject: [PATCH 26/49] Automatic changelog for PR #6153 [ci skip] --- html/changelogs/AutoChangeLog-pr-6153.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6153.yml diff --git a/html/changelogs/AutoChangeLog-pr-6153.yml b/html/changelogs/AutoChangeLog-pr-6153.yml new file mode 100644 index 000000000000..36dd94c47bdd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6153.yml @@ -0,0 +1,4 @@ +author: "LTNTS" +delete-after: True +changes: + - rscadd: "Adds Command Tablets to Provost Marshal+" \ No newline at end of file From 9243cb66b7a73249bc85afa38346e97bf2925f2d Mon Sep 17 00:00:00 2001 From: Vero <73014819+vero5123@users.noreply.github.com> Date: Sat, 20 Apr 2024 00:21:33 -0400 Subject: [PATCH 27/49] Toggle ghost now leaves the users mob visible (#6065) # About the pull request Fixes #5894 # Explain why it's good for the game bug fix # Changelog :cl: fix: toggling ghost vision now keeps the user's mob visible. /:cl: --------- Co-authored-by: DOOM --- code/__DEFINES/__game.dm | 2 ++ code/modules/mob/dead/observer/observer.dm | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm index 6a9e9f1d4623..6617c5aafcee 100644 --- a/code/__DEFINES/__game.dm +++ b/code/__DEFINES/__game.dm @@ -78,6 +78,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/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 4f9493cfdf49..d93aeef63143 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" From 51d31a70797eeb0ddf47a242f54568ef66d34bd6 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 05:26:10 +0100 Subject: [PATCH 28/49] Automatic changelog for PR #6065 [ci skip] --- html/changelogs/AutoChangeLog-pr-6065.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6065.yml diff --git a/html/changelogs/AutoChangeLog-pr-6065.yml b/html/changelogs/AutoChangeLog-pr-6065.yml new file mode 100644 index 000000000000..9e763fb402d4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6065.yml @@ -0,0 +1,4 @@ +author: "vero5123" +delete-after: True +changes: + - bugfix: "toggling ghost vision now keeps the user's mob visible." \ No newline at end of file From c1b8470ff72a95cbb27699155017bbb1b834180d Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Sat, 20 Apr 2024 06:07:09 +0100 Subject: [PATCH 29/49] Project ARES: Orbital Cannon loading log (#6157) # About the pull request Adds an ARES log for chambering the OB Cannon, and if it has been misfueled or not. # Explain why it's good for the game Logs who fires it, makes sense to log who loaded it. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Added an ARES Log for chambering the OB Cannon. /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/game/machinery/ARES/ARES_procs.dm | 4 ++-- code/modules/cm_marines/orbital_cannon.dm | 3 +++ code/modules/cm_marines/overwatch.dm | 2 +- tgui/packages/tgui/interfaces/AresAdmin.js | 2 +- tgui/packages/tgui/interfaces/AresInterface.jsx | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index f18957a22d82..05f110ec1a0c 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -165,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/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/tgui/packages/tgui/interfaces/AresAdmin.js b/tgui/packages/tgui/interfaces/AresAdmin.js index bf9fdfacc1aa..dd51b5a1e007 100644 --- a/tgui/packages/tgui/interfaces/AresAdmin.js +++ b/tgui/packages/tgui/interfaces/AresAdmin.js @@ -689,7 +689,7 @@ const BombardmentLogs = (props, context) => { User - Coordinates + Details )} diff --git a/tgui/packages/tgui/interfaces/AresInterface.jsx b/tgui/packages/tgui/interfaces/AresInterface.jsx index bf7ded50d8ab..be9106e31c25 100644 --- a/tgui/packages/tgui/interfaces/AresInterface.jsx +++ b/tgui/packages/tgui/interfaces/AresInterface.jsx @@ -652,7 +652,7 @@ const BombardmentLogs = (props) => { User - Coordinates + Details )} From 4cba22644e2d8b3f307cafe8606e3cf86e1b2037 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 06:11:45 +0100 Subject: [PATCH 30/49] Automatic changelog for PR #6157 [ci skip] --- html/changelogs/AutoChangeLog-pr-6157.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6157.yml diff --git a/html/changelogs/AutoChangeLog-pr-6157.yml b/html/changelogs/AutoChangeLog-pr-6157.yml new file mode 100644 index 000000000000..bf60e6ac34ce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6157.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Added an ARES Log for chambering the OB Cannon." \ No newline at end of file From c517ea7c5b4a49eff1bd96dfdf3be1ff583618ed Mon Sep 17 00:00:00 2001 From: iloveloopers <140007537+iloveloopers@users.noreply.github.com> Date: Sat, 20 Apr 2024 01:19:49 -0400 Subject: [PATCH 31/49] white phosphorus smoke can no longer override stronger flames (#6137) # About the pull request white phosphorus smoke will no longer forcefully set the reagent of the mob # Explain why it's good for the game when hit by a WP rocket, a mob is supposed to be set with the blueflame reagent but sometimes the phosphorus smoke can override it just as you leave the fire and the mob's fire reagent ends up being normal UT napalm, which is signficantly weaker than blueflame. # Testing Photographs and Procedure yes I tested it # Changelog :cl: fix: White phosphorus will no longer forcefully set a mob's fire_reagent to be UT napthal /:cl: --- code/game/objects/effects/effect_system/smoke.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index b79e50b453cc..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() From df8d8b9724e3d804eb1e2447d846970502ef0c38 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 06:24:33 +0100 Subject: [PATCH 32/49] Automatic changelog for PR #6137 [ci skip] --- html/changelogs/AutoChangeLog-pr-6137.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6137.yml diff --git a/html/changelogs/AutoChangeLog-pr-6137.yml b/html/changelogs/AutoChangeLog-pr-6137.yml new file mode 100644 index 000000000000..064ceaa9a356 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6137.yml @@ -0,0 +1,4 @@ +author: "iloveloopers" +delete-after: True +changes: + - bugfix: "White phosphorus will no longer forcefully set a mob's fire_reagent to be UT napthal" \ No newline at end of file From 8ae8850adc366bd808dd8e2c0b49ecb8295bb486 Mon Sep 17 00:00:00 2001 From: Ben <91219575+Ben10083@users.noreply.github.com> Date: Sat, 20 Apr 2024 01:56:52 -0400 Subject: [PATCH 33/49] Synthetics X Gibber Fanfiction (Reworks how Synthetics and the meat gibber interact) (#6145) # About the pull request - Synthetic is delimbed and spat out of gibber instead of a true gib, making them not die in the process - Synthetics now spawn their proper meat as desired # Explain why it's good for the game ![image](https://github.com/cmss13-devs/cmss13/assets/91219575/19a5e852-b968-4a49-8784-916b319ed0cb) Desired by lore contributor, makes it so synthetic snowflake situation where they are shoved in gibber is handled properly. # Testing Photographs and Procedure
Screenshots & Videos https://github.com/cmss13-devs/cmss13/assets/91219575/96d92eaf-a60e-45f3-ac80-6d0275e82428
# Changelog :cl: add: 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 /:cl: --------- Co-authored-by: Ben10083 Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/game/machinery/kitchen/gibber.dm | 94 ++++++++++++++++--- .../reagent_containers/food/snacks/meat.dm | 3 +- code/modules/cm_tech/droppod/lz_effect.dm | 1 + code/modules/mob/mob_helpers.dm | 2 +- 4 files changed, 83 insertions(+), 17 deletions(-) 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/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/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/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 From 33443670c464f61397d64b233e406383a0dae69a Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 07:04:08 +0100 Subject: [PATCH 34/49] Automatic changelog for PR #6145 [ci skip] --- html/changelogs/AutoChangeLog-pr-6145.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6145.yml diff --git a/html/changelogs/AutoChangeLog-pr-6145.yml b/html/changelogs/AutoChangeLog-pr-6145.yml new file mode 100644 index 000000000000..dcb66bb21e9b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6145.yml @@ -0,0 +1,5 @@ +author: "Ben10083" +delete-after: True +changes: + - 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" \ No newline at end of file From 76792225c9a79e448ea91aa56506f66694a98b00 Mon Sep 17 00:00:00 2001 From: Git-Nivrak <59925169+Git-Nivrak@users.noreply.github.com> Date: Sat, 20 Apr 2024 09:37:46 +0300 Subject: [PATCH 35/49] Lesser drone nerfs (#6140) # About the pull request # Explain why it's good for the game Lesser drones can go for extremely high risk high reward strategies without any risk as there is basically an infinite amount of respawns and no punishment for dying. I don't see why they should get a different treatment than huggers as they can just run in and apply facehuggers manually or for going off weeds to sneak into backline and place huggers on AFK marines they saw from ghost or just running around being an annoyance. And this is coming from a xeno main. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: You can no longer infinitely extend facehugger's lifetime by REDACTED balance: Lessers now lose 5 hp every 2 seconds off weeds /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- .../living/carbon/xenomorph/Facehuggers.dm | 25 ++++++++++++++++++- .../carbon/xenomorph/castes/lesser_drone.dm | 10 +++++++- 2 files changed, 33 insertions(+), 2 deletions(-) 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/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) From 789fd19506e0f86e3c2106146d26ea54474204ec Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 20 Apr 2024 07:42:16 +0100 Subject: [PATCH 36/49] Automatic changelog for PR #6140 [ci skip] --- html/changelogs/AutoChangeLog-pr-6140.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6140.yml diff --git a/html/changelogs/AutoChangeLog-pr-6140.yml b/html/changelogs/AutoChangeLog-pr-6140.yml new file mode 100644 index 000000000000..cab9672ebc42 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6140.yml @@ -0,0 +1,5 @@ +author: "Git-Nivrak" +delete-after: True +changes: + - bugfix: "You can no longer infinitely extend facehugger's lifetime by REDACTED" + - balance: "Lessers now lose 5 hp every 2 seconds off weeds" \ No newline at end of file From 2d9d16492a5002b61861b26568ea8fa6be3d64bd Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 21 Apr 2024 01:14:25 +0000 Subject: [PATCH 37/49] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-6065.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6136.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6137.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6140.yml | 5 ----- html/changelogs/AutoChangeLog-pr-6145.yml | 5 ----- html/changelogs/AutoChangeLog-pr-6153.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6157.yml | 4 ---- html/changelogs/AutoChangeLog-pr-6162.yml | 4 ---- html/changelogs/archive/2024-04.yml | 21 +++++++++++++++++++++ 9 files changed, 21 insertions(+), 34 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-6065.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6136.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6137.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6140.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6145.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6153.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6157.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-6162.yml diff --git a/html/changelogs/AutoChangeLog-pr-6065.yml b/html/changelogs/AutoChangeLog-pr-6065.yml deleted file mode 100644 index 9e763fb402d4..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6065.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "vero5123" -delete-after: True -changes: - - bugfix: "toggling ghost vision now keeps the user's mob visible." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6136.yml b/html/changelogs/AutoChangeLog-pr-6136.yml deleted file mode 100644 index 6b41106b5d9a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6136.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "567Turtle" -delete-after: True -changes: - - balance: " SO can now do basic surgeries" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6137.yml b/html/changelogs/AutoChangeLog-pr-6137.yml deleted file mode 100644 index 064ceaa9a356..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6137.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "iloveloopers" -delete-after: True -changes: - - bugfix: "White phosphorus will no longer forcefully set a mob's fire_reagent to be UT napthal" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6140.yml b/html/changelogs/AutoChangeLog-pr-6140.yml deleted file mode 100644 index cab9672ebc42..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6140.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Git-Nivrak" -delete-after: True -changes: - - bugfix: "You can no longer infinitely extend facehugger's lifetime by REDACTED" - - balance: "Lessers now lose 5 hp every 2 seconds off weeds" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6145.yml b/html/changelogs/AutoChangeLog-pr-6145.yml deleted file mode 100644 index dcb66bb21e9b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6145.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ben10083" -delete-after: True -changes: - - 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" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6153.yml b/html/changelogs/AutoChangeLog-pr-6153.yml deleted file mode 100644 index 36dd94c47bdd..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6153.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LTNTS" -delete-after: True -changes: - - rscadd: "Adds Command Tablets to Provost Marshal+" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6157.yml b/html/changelogs/AutoChangeLog-pr-6157.yml deleted file mode 100644 index bf60e6ac34ce..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6157.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Added an ARES Log for chambering the OB Cannon." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6162.yml b/html/changelogs/AutoChangeLog-pr-6162.yml deleted file mode 100644 index ed0b260f7fd8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-6162.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Git-Nivrak" -delete-after: True -changes: - - bugfix: "Fixed a bug which made boilers go way faster than they should" \ No newline at end of file diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml index f9a6421b27cf..b3f9ffa64195 100644 --- a/html/changelogs/archive/2024-04.yml +++ b/html/changelogs/archive/2024-04.yml @@ -278,3 +278,24 @@ - 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. From 96fdf71eafa8d2af20e6733c247df2e4bce9a3d7 Mon Sep 17 00:00:00 2001 From: Git-Nivrak <59925169+Git-Nivrak@users.noreply.github.com> Date: Sun, 21 Apr 2024 07:03:50 +0300 Subject: [PATCH 38/49] Reverts #6040 (#6165) # About the pull request Unforseen consequences Will have to take a look at redoing it at some point though it made me doubt it is even necessary # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: del: Reverted back to old throw logic /:cl: --- code/modules/movement/launching/launching.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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) From 7168b32d032cdb3cae3f650a02650e3aaae74af1 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 21 Apr 2024 05:08:34 +0100 Subject: [PATCH 39/49] Automatic changelog for PR #6165 [ci skip] --- html/changelogs/AutoChangeLog-pr-6165.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6165.yml 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 From 06f8099e237da7ef264c72b40b5c4845fa746276 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sat, 20 Apr 2024 21:04:10 -0700 Subject: [PATCH 40/49] Unmarked admin tickets are automatically marked when responding to one (#6167) # About the pull request If a ticket is unmarked and you start responding to it, it automatically marks itself for you. # Explain why it's good for the game This is something that's bugged me for a while, and it's always tripped me up when responding to tickets. One should reason that a ticket you're responding to is being handled by you. # Changelog :cl: admin: Unmarked tickets now mark themselves when an admin starts responding to one /:cl: --- code/modules/admin/verbs/adminhelp.dm | 15 ++++++++------- code/modules/admin/verbs/adminpm.dm | 3 +++ 2 files changed, 11 insertions(+), 7 deletions(-) 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]**" From b8bd5c5d37785ceba7288e2397a672c964f457c0 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 21 Apr 2024 05:16:01 +0100 Subject: [PATCH 41/49] Automatic changelog for PR #6167 [ci skip] --- html/changelogs/AutoChangeLog-pr-6167.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6167.yml 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 From 6d12dfed31e59f8918dd96fa35a1d9de873684d5 Mon Sep 17 00:00:00 2001 From: harry Date: Sun, 21 Apr 2024 05:05:20 +0100 Subject: [PATCH 42/49] unbreaks binding to space (#6168) we have to override the name of the key sometimes, and space is one of those times :cl: fix: you can bind to space again /:cl: --- tgui/packages/tgui/interfaces/KeyBinds.jsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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; } From d221238d148428c63c7928bde49765127a8da43f Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 21 Apr 2024 05:23:43 +0100 Subject: [PATCH 43/49] Automatic changelog for PR #6168 [ci skip] --- html/changelogs/AutoChangeLog-pr-6168.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6168.yml 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 From ea50e9d12acbad70f13f118d8d5a5aeb5f9d88b3 Mon Sep 17 00:00:00 2001 From: iloveloopers <140007537+iloveloopers@users.noreply.github.com> Date: Sun, 21 Apr 2024 00:05:32 -0400 Subject: [PATCH 44/49] fixes high combustion napalm and sticky napalm working for OT assemblies (#6171) # About the pull request I didn't intend for these to work in OT assemblies, they're too good apparently chemfiresupp doesn't work if you have fire properties cause they set the reagent's chemfiresupp to true forcefully so I manually set the durationmod, intensitymod and radiusmod to negative to exatcly counter how much they affect # Explain why it's good for the game bugfix good unintended behaviour # Testing Photographs and Procedure it works, trust me # Changelog :cl: fix: custom flamer fuels no longer work for increasing OT assembly's caps /:cl: --- code/modules/reagents/chemistry_reagents/other.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry_reagents/other.dm b/code/modules/reagents/chemistry_reagents/other.dm index 09b835b1482d..dc70d65452fe 100644 --- a/code/modules/reagents/chemistry_reagents/other.dm +++ b/code/modules/reagents/chemistry_reagents/other.dm @@ -705,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, @@ -720,9 +722,11 @@ description = "A custom napalm mix, higher damage but not as sticky" reagent_state = LIQUID color = "#c51c1c" - chemfiresupp = FALSE 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, From 41c42e5d4522f05ccde6d64dcc1aa1c683364431 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 21 Apr 2024 05:31:01 +0100 Subject: [PATCH 45/49] Automatic changelog for PR #6171 [ci skip] --- html/changelogs/AutoChangeLog-pr-6171.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6171.yml 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 From 1ca0f694fc0c29af0a157505134e8b116bec1809 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Sun, 21 Apr 2024 08:09:38 +0100 Subject: [PATCH 46/49] Fixes delaying round start not showing on the timer. (#6166) # About the pull request As title # Explain why it's good for the game It's not always clear if it's been delayed or somehow broken anymore. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Delaying round start now shows on the timer again. /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/mob/dead/observer/observer.dm | 2 +- code/modules/mob/new_player/new_player.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d93aeef63143..d13d5aa94053 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1191,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/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 From 1c14a87455845128a8fa08a6b1d62cb20d6bbb30 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 21 Apr 2024 08:14:09 +0100 Subject: [PATCH 47/49] Automatic changelog for PR #6166 [ci skip] --- html/changelogs/AutoChangeLog-pr-6166.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6166.yml 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 From 45489e639eb93df0e01460a31656f2999b6f3ed6 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Sun, 21 Apr 2024 08:29:06 +0100 Subject: [PATCH 48/49] Added ID Modification Log to the Access Report Print (#6124) # About the pull request Allows MPs (or others) to read who made what changes to an ID card by plugging the card into an ID Computer and hitting the print button. This button previously printed a list of all the accesses on the ID Card, and will still do this at the same time. # Explain why it's good for the game It can be incredibly frustrating to figure out how someone can suddenly open a door without permission and is essentially untraceable at the moment without admin help. # Testing Photographs and Procedure ![image](https://github.com/cmss13-devs/cmss13/assets/41653574/96cff422-197e-4016-94be-087e802cd676) # Changelog :cl: add: Added ID Modification Log to the Access Report printout from an ID Console. /:cl: --- code/__HELPERS/logging.dm | 6 +-- code/modules/cm_marines/marines_consoles.dm | 48 ++++++++++----------- 2 files changed, 25 insertions(+), 29 deletions(-) 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/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index 13f5e2d0df6d..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) From e7375176084c57e2d5c99a199a3ef6fb8c571fb3 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 21 Apr 2024 08:33:53 +0100 Subject: [PATCH 49/49] Automatic changelog for PR #6124 [ci skip] --- html/changelogs/AutoChangeLog-pr-6124.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6124.yml 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