diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index be96a2e32b85..5f4b805ca555 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -169,6 +169,8 @@ most of them are tied into map-placed objects. This should be reworked in the fu #define ACCESS_LIST_MARINE_ALL "Almayer (ALL)" ///Used by the Wey-Yu - USCM Liaison #define ACCESS_LIST_MARINE_LIAISON "Wey-Yu (Liaison)" +///Used by the Wey-Yu AIST aboard Almayer +#define ACCESS_LIST_MARINE_LIAISON_AIST "Wey-Yu (AIST)" ///The accesses granted to emergency responders. #define ACCESS_LIST_EMERGENCY_RESPONSE "Almayer (ERT)" diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index f869357efd1b..29845db09c84 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -122,6 +122,7 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) #define JOB_GENERAL "USCM General" #define JOB_ACMC "Assistant Commandant of the Marine Corps" #define JOB_CMC "Commandant of the Marine Corps" +#define JOB_AI_TECH "AI Service Technician" // Used to add a timelock to a job. Will be passed onto derivatives #define AddTimelock(Path, timelockList) \ diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index b195328264cd..36b9cc01a38c 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -282,6 +282,9 @@ #define COOLDOWN_COMM_CENTRAL 30 SECONDS #define COOLDOWN_COMM_DESTRUCT 5 MINUTES +#define FORCE_SCAN_LOCK 25 MINUTES +#define COOLDOWN_FORCE_SCAN 15 MINUTES + ///Cooldown for pred recharge #define COOLDOWN_BRACER_CHARGE 3 MINUTES diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index fea9ebeebb2c..b676a6a11d66 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -116,6 +116,7 @@ #define ROLE_WHITELISTED 16 #define ROLE_NO_ACCOUNT 32 #define ROLE_CUSTOM_SPAWN 64 +#define ROLE_HIDDEN 128 //================================================= //Role defines, specifically lists of roles for job bans, crew manifests and the like. @@ -127,7 +128,7 @@ GLOBAL_LIST_INIT(ROLES_CIC, list(JOB_CO, JOB_XO, JOB_SO, JOB_WO_CO, JOB_WO_XO)) GLOBAL_LIST_INIT(ROLES_AUXIL_SUPPORT, list(JOB_AUXILIARY_OFFICER, JOB_INTEL, JOB_CAS_PILOT, JOB_DROPSHIP_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_WO_CHIEF_POLICE, JOB_WO_SO, JOB_WO_CREWMAN, JOB_WO_POLICE, JOB_WO_PILOT)) GLOBAL_LIST_INIT(ROLES_MISC, list(JOB_SYNTH, JOB_WORKING_JOE, JOB_SEA, JOB_CORPORATE_LIAISON, JOB_COMBAT_REPORTER, JOB_MESS_SERGEANT, JOB_WO_CORPORATE_LIAISON, JOB_WO_SYNTH)) GLOBAL_LIST_INIT(ROLES_POLICE, list(JOB_CHIEF_POLICE, JOB_WARDEN, JOB_POLICE)) -GLOBAL_LIST_INIT(ROLES_ENGINEERING, list(JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, JOB_MAINT_TECH, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH)) +GLOBAL_LIST_INIT(ROLES_ENGINEERING, list(JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, JOB_MAINT_TECH, JOB_WO_CHIEF_ENGINEER, JOB_WO_ORDNANCE_TECH, JOB_AI_TECH)) GLOBAL_LIST_INIT(ROLES_REQUISITION, list(JOB_CHIEF_REQUISITION, JOB_CARGO_TECH, JOB_WO_CHIEF_REQUISITION, JOB_WO_REQUISITION)) GLOBAL_LIST_INIT(ROLES_MEDICAL, list(JOB_CMO, JOB_RESEARCHER, JOB_DOCTOR, JOB_NURSE, JOB_WO_CMO, JOB_WO_RESEARCHER, JOB_WO_DOCTOR)) GLOBAL_LIST_INIT(ROLES_MARINES, list(JOB_SQUAD_LEADER, JOB_SQUAD_TEAM_LEADER, JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN, JOB_SQUAD_MEDIC, JOB_SQUAD_ENGI, JOB_SQUAD_MARINE)) diff --git a/code/datums/factions/uscm.dm b/code/datums/factions/uscm.dm index a19faba32d81..5a6a51be49f7 100644 --- a/code/datums/factions/uscm.dm +++ b/code/datums/factions/uscm.dm @@ -143,6 +143,8 @@ if(JOB_PROVOST_MARSHAL, JOB_PROVOST_CMARSHAL, JOB_PROVOST_SMARSHAL) marine_rk = "pvm" border_rk = "command" + if(JOB_AI_TECH) + marine_rk = "aist" // TIS if(JOB_TIS_IO) marine_rk = "tisio" diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index b75baccd7353..f0df908407e8 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -79,6 +79,16 @@ is_resin_allowed = FALSE resin_construction_allowed = FALSE +/area/almayer/command/aist_office + name = "\improper AIST Office" + icon_state = "airoom" + fake_zlevel = 1 // upperdeck + soundscape_playlist = list() + flags_area = AREA_NOTUNNEL|AREA_UNWEEDABLE + can_build_special = FALSE + is_resin_allowed = FALSE + resin_construction_allowed = FALSE + /area/almayer/command/securestorage name = "\improper Upper Deck Secure Storage" icon_state = "corporatespace" diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 0d10b06d5fef..861ae8b6cdcf 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -168,6 +168,19 @@ ACCESS_MARINE_MEDBAY, ) + get_access(ACCESS_LIST_COLONIAL_ALL) + if(ACCESS_LIST_MARINE_LIAISON_AIST) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_EXEC, + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_MEDBAY, + ACCESS_MARINE_ENGINEERING, + ACCESS_MARINE_SYNTH, + ACCESS_MARINE_AI, + ACCESS_ARES_DEBUG, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + if(ACCESS_LIST_COLONIAL_ALL) return list( ACCESS_CIVILIAN_PUBLIC, diff --git a/code/game/jobs/job/special/uscm.dm b/code/game/jobs/job/special/uscm.dm index 2308c5af2961..d17cf9c49f5d 100644 --- a/code/game/jobs/job/special/uscm.dm +++ b/code/game/jobs/job/special/uscm.dm @@ -12,3 +12,43 @@ title = JOB_RIOT /datum/job/special/uscm/riot/chief title = JOB_RIOT_CHIEF + +#define USCM_TECH "USCM" +#define WY_TECH "Wey-Yu" + +/datum/job/special/uscm/ai_tech + title = JOB_AI_TECH + selection_class = "job_ce" + supervisors = "the acting commanding officer" + total_positions = 1 + spawn_positions = 1 + flags_startup_parameters = ROLE_WHITELISTED + gear_preset = /datum/equipment_preset/uscm_event/ai_tech + + // job option + job_options = list(USCM_TECH = "USCM", WY_TECH = "WY") + var/corporate = FALSE + +//check the job option. and change the gear preset +/datum/job/special/uscm/ai_tech/handle_job_options(option) + if(option != USCM_TECH) + corporate = TRUE + gear_preset = /datum/equipment_preset/uscm_event/ai_tech/corporate + else + corporate = FALSE + gear_preset = /datum/equipment_preset/uscm_event/ai_tech + +/datum/job/special/uscm/ai_tech/check_whitelist_status(mob/user) + if(check_rights(R_PERMISSIONS, show_msg = FALSE)) + return TRUE + return FALSE + +/datum/job/special/uscm/ai_tech/generate_entry_message() + supervisors = "Weyland Yutani" + entry_message_body = "You are a [corporate ? FACTION_WY : FACTION_MARINE] AI Service Technician temporarily assigned to the [MAIN_SHIP_NAME]. Your goal is to ensure the onboard AI, [MAIN_AI_SYSTEM], is operating effectively. Your job involves heavy roleplay and requires you to behave like [corporate ? "a senior corporate representative, remaining in character at all times.
As a Weyland Yutani Technician you have access to the Corporate Office aboard the USS Almayer. Although you should cooperate with the onboard Liaison, you are not their subordinate nor they yours. You should help The Company interests where applicable but do not abuse your access to the AI Systems." : "an officer and to stay in character at all times. You are required to adhere to and obey Marine Law. Failure to do so may result in punitive action against you. Godspeed."]" + return ..() + +/obj/effect/landmark/start/aist + name = JOB_AI_TECH + icon_state = "aist_spawn" + job = /datum/job/special/uscm/ai_tech diff --git a/code/game/machinery/ARES/ARES_interface.dm b/code/game/machinery/ARES/ARES_interface.dm index 04547d079664..519579e844d1 100644 --- a/code/game/machinery/ARES/ARES_interface.dm +++ b/code/game/machinery/ARES/ARES_interface.dm @@ -503,6 +503,24 @@ COOLDOWN_START(datacore, ares_nuclear_cooldown, COOLDOWN_COMM_DESTRUCT) return TRUE + if("bioscan") + if(!SSticker.mode) + return FALSE //Not a game mode? + if(world.time < FORCE_SCAN_LOCK) + to_chat(operator, SPAN_WARNING("Bio sensors are not yet ready to initiate a scan!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!(COOLDOWN_FINISHED(datacore, ares_bioscan_cooldown)) || (world.time < (GLOB.last_human_bioscan + COOLDOWN_FORCE_SCAN))) + to_chat(operator, SPAN_WARNING("It is too soon since the last scan, wait for the sensor array to reset!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + GLOB.bioscan_data.ares_bioscan(FALSE, 2) + COOLDOWN_START(datacore, ares_bioscan_cooldown, COOLDOWN_FORCE_SCAN) + playsound(src, 'sound/machines/terminal_processing.ogg', 15, 1) + message_admins("BIOSCAN: [key_name(operator)] triggered a Marine bioscan via ARES AIST.") + return TRUE + if("trigger_vent") playsound = FALSE var/obj/structure/pipes/vents/pump/no_boom/gas/sec_vent = locate(params["vent"]) diff --git a/code/game/machinery/ARES/ARES_interface_admin.dm b/code/game/machinery/ARES/ARES_interface_admin.dm index 758ba9fbb5e7..71e25955b1ed 100644 --- a/code/game/machinery/ARES/ARES_interface_admin.dm +++ b/code/game/machinery/ARES/ARES_interface_admin.dm @@ -50,8 +50,10 @@ return FALSE var/list/data = list() + data["is_pda"] = FALSE + data["admin_login"] = "[admin_interface.logged_in], [user.client.admin_holder?.rank]" - data["admin_access_log"] = list(admin_interface.access_list) + data["admin_access_log"] = admin_interface.access_list data["current_menu"] = admin_interface.current_menu data["last_page"] = admin_interface.last_menu diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index ef1b836a3d4b..e57c6649c2ba 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -113,6 +113,7 @@ GLOBAL_LIST_INIT(maintenance_categories, list( COOLDOWN_DECLARE(ares_nuclear_cooldown) COOLDOWN_DECLARE(ares_quarters_cooldown) COOLDOWN_DECLARE(aicore_lockdown) + COOLDOWN_DECLARE(ares_bioscan_cooldown) // ------ ARES Logging Procs ------ // /proc/ares_is_active() diff --git a/code/game/machinery/ARES/ARES_records.dm b/code/game/machinery/ARES/ARES_records.dm index 5bfe50dce068..9516c676777b 100644 --- a/code/game/machinery/ARES/ARES_records.dm +++ b/code/game/machinery/ARES/ARES_records.dm @@ -49,6 +49,15 @@ src.details = details src.user = user +/datum/ares_record/flight + record_name = ARES_RECORD_FLIGHT + +/datum/ares_record/flight/New(details, user) + time = worldtime2text() + src.title = "Flight Log" + src.details = details + src.user = user + /datum/ares_record/bombardment record_name = ARES_RECORD_BOMB diff --git a/code/game/machinery/ARES/debug_pda.dm b/code/game/machinery/ARES/debug_pda.dm new file mode 100644 index 000000000000..90816d8423ba --- /dev/null +++ b/code/game/machinery/ARES/debug_pda.dm @@ -0,0 +1,741 @@ +/obj/item/device/ai_tech_pda + icon = 'icons/obj/items/synth/ait_pda.dmi' + name = "T411 AIDT" + desc = "Artifical Intelligence Diagnostic Tablet model T411. Built to withstand a nuclear bomb." + icon_state = "karnak_off" + unacidable = TRUE + indestructible = TRUE + req_access = list(ACCESS_ARES_DEBUG) + + /// The ID used to link all devices. + var/datum/ares_link/link + /// The datacore storing all the information. + var/datum/ares_datacore/datacore + + var/current_menu = "login" + var/last_menu = "off" + + var/authentication = APOLLO_ACCESS_LOGOUT + /// The last person to login. + var/logged_in + /// A record of who logged in and when. + var/list/access_list = list() + var/list/deleted_1to1 = list() + +/obj/item/device/ai_tech_pda/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(link && !override) + return FALSE + if(new_link) + new_link.ticket_computers += src + link = new_link + new_link.linked_systems += src + if(!datacore) + datacore = GLOB.ares_datacore + return TRUE + +/obj/item/device/ai_tech_pda/Initialize(mapload, ...) + link_systems(override = FALSE) + . = ..() + +/obj/item/device/ai_tech_pda/proc/delink() + if(link) + link.ticket_computers -= src + link.linked_systems -= src + link = null + datacore = null + +/obj/item/device/ai_tech_pda/Destroy() + delink() + return ..() + +/obj/item/device/ai_tech_pda/update_icon() + . = ..() + if(last_menu == "off") + icon_state = "karnak_off" + else if(current_menu == "login") + icon_state = "karnak_login_anim" + else + icon_state = "karnak_on_anim" + +/obj/item/device/ai_tech_pda/attack_self(mob/living/carbon/human/user) + if(..() || !allowed(user)) + to_chat(user, SPAN_WARNING("Access Denied!")) + return FALSE + + if((last_menu == "off") && (current_menu == "login")) + last_menu = "main" + update_icon() + + tgui_interact(user) + return TRUE + +/obj/item/device/ai_tech_pda/tgui_interact(mob/user, datum/tgui/ui) + if(!link.interface || !datacore) + to_chat(user, SPAN_WARNING("ARES DATA LINK FAILED")) + return FALSE + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AresAdmin", name) + ui.open() + +/obj/item/device/ai_tech_pda/ui_data(mob/user) + if(!link.interface) + to_chat(user, SPAN_WARNING("ARES ADMIN DATA LINK FAILED")) + return FALSE + var/list/data = list() + + data["is_pda"] = TRUE + + data["admin_login"] = "[logged_in], AI Service Technician" + data["admin_access_log"] = access_list + + data["current_menu"] = current_menu + data["last_page"] = last_menu + + data["logged_in"] = link.interface.last_login + data["sudo"] = link.interface.sudo_holder ? TRUE : FALSE + + data["access_text"] = "[link.interface.sudo_holder ? "(SUDO)," : ""] access level [link.interface.authentication], [link.interface.ares_auth_to_text(link.interface.authentication)]." + data["access_level"] = link.interface.authentication + + data["alert_level"] = GLOB.security_level + data["evac_status"] = SShijack.evac_status + data["worldtime"] = world.time + + data["access_log"] = datacore.interface_access_list + data["apollo_log"] = datacore.apollo_log + + data["deleted_conversation"] = deleted_1to1 + + data["distresstime"] = datacore.ares_distress_cooldown + data["distresstimelock"] = DISTRESS_TIME_LOCK + data["mission_failed"] = SSticker.mode.is_in_endgame + data["nuketimelock"] = NUCLEAR_TIME_LOCK + data["nuke_available"] = datacore.nuke_available + + var/list/logged_announcements = list() + for(var/datum/ares_record/announcement/broadcast as anything in datacore.records_announcement) + var/list/current_broadcast = list() + current_broadcast["time"] = broadcast.time + current_broadcast["title"] = broadcast.title + current_broadcast["details"] = broadcast.details + current_broadcast["ref"] = "\ref[broadcast]" + logged_announcements += list(current_broadcast) + data["records_announcement"] = logged_announcements + + var/list/logged_alerts = list() + for(var/datum/ares_record/security/security_alert as anything in datacore.records_security) + var/list/current_alert = list() + current_alert["time"] = security_alert.time + current_alert["title"] = security_alert.title + current_alert["details"] = security_alert.details + current_alert["ref"] = "\ref[security_alert]" + logged_alerts += list(current_alert) + data["records_security"] = logged_alerts + + var/list/logged_flights = list() + for(var/datum/ares_record/flight/flight_log as anything in datacore.records_flight) + var/list/current_flight = list() + current_flight["time"] = flight_log.time + current_flight["title"] = flight_log.title + current_flight["details"] = flight_log.details + current_flight["user"] = flight_log.user + current_flight["ref"] = "\ref[flight_log]" + logged_flights += list(current_flight) + data["records_flight"] = logged_flights + + var/list/logged_bioscans = list() + for(var/datum/ares_record/bioscan/scan as anything in datacore.records_bioscan) + var/list/current_scan = list() + current_scan["time"] = scan.time + current_scan["title"] = scan.title + current_scan["details"] = scan.details + current_scan["ref"] = "\ref[scan]" + logged_bioscans += list(current_scan) + data["records_bioscan"] = logged_bioscans + + var/list/logged_bombs = list() + for(var/datum/ares_record/bombardment/bomb as anything in datacore.records_bombardment) + var/list/current_bomb = list() + current_bomb["time"] = bomb.time + current_bomb["title"] = bomb.title + current_bomb["details"] = bomb.details + current_bomb["user"] = bomb.user + current_bomb["ref"] = "\ref[bomb]" + logged_bombs += list(current_bomb) + data["records_bombardment"] = logged_bombs + + var/list/logged_deletes = list() + for(var/datum/ares_record/deletion/deleted as anything in datacore.records_deletion) + if(!istype(deleted)) + continue + var/list/current_delete = list() + current_delete["time"] = deleted.time + current_delete["title"] = deleted.title + current_delete["details"] = deleted.details + current_delete["user"] = deleted.user + current_delete["ref"] = "\ref[deleted]" + logged_deletes += list(current_delete) + data["records_deletion"] = logged_deletes + + var/list/logged_discussions = list() + for(var/datum/ares_record/deleted_talk/deleted_convo as anything in datacore.records_deletion) + if(!istype(deleted_convo)) + continue + var/list/deleted_disc = list() + deleted_disc["time"] = deleted_convo.time + deleted_disc["title"] = deleted_convo.title + deleted_disc["ref"] = "\ref[deleted_convo]" + logged_discussions += list(deleted_disc) + data["deleted_discussions"] = logged_discussions + + var/list/logged_orders = list() + for(var/datum/ares_record/requisition_log/req_order as anything in datacore.records_asrs) + if(!istype(req_order)) + continue + var/list/current_order = list() + current_order["time"] = req_order.time + current_order["details"] = req_order.details + current_order["title"] = req_order.title + current_order["user"] = req_order.user + current_order["ref"] = "\ref[req_order]" + logged_orders += list(current_order) + data["records_requisition"] = logged_orders + + var/list/logged_techs = list() + for(var/datum/ares_record/tech/tech_unlock as anything in datacore.records_tech) + var/list/current_tech = list() + current_tech["time"] = tech_unlock.time + current_tech["details"] = tech_unlock.details + current_tech["user"] = tech_unlock.user + current_tech["tier_changer"] = tech_unlock.is_tier + current_tech["ref"] = "\ref[tech_unlock]" + logged_techs += list(current_tech) + data["records_tech"] = logged_techs + + var/list/logged_convos = list() + var/list/active_convo = list() + var/active_ref + for(var/datum/ares_record/talk_log/log as anything in datacore.records_talking) + if(!istype(log)) + continue + if(log.user == link.interface.last_login) + active_convo = log.conversation + active_ref = "\ref[log]" + + var/list/current_convo = list() + current_convo["user"] = log.user + current_convo["ref"] = "\ref[log]" + current_convo["conversation"] = log.conversation + logged_convos += list(current_convo) + + data["active_convo"] = active_convo + data["active_ref"] = active_ref + data["conversations"] = logged_convos + + var/list/logged_maintenance = list() + for(var/datum/ares_ticket/maintenance/maint_ticket as anything in link.tickets_maintenance) + if(!istype(maint_ticket)) + continue + var/lock_status = TICKET_OPEN + switch(maint_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_COMPLETED) + lock_status = TICKET_CLOSED + + var/list/current_maint = list() + current_maint["id"] = maint_ticket.ticket_id + current_maint["time"] = maint_ticket.ticket_time + current_maint["priority_status"] = maint_ticket.ticket_priority + current_maint["category"] = maint_ticket.ticket_name + current_maint["details"] = maint_ticket.ticket_details + current_maint["status"] = maint_ticket.ticket_status + current_maint["submitter"] = maint_ticket.ticket_submitter + current_maint["assignee"] = maint_ticket.ticket_assignee + current_maint["lock_status"] = lock_status + current_maint["ref"] = "\ref[maint_ticket]" + logged_maintenance += list(current_maint) + data["maintenance_tickets"] = logged_maintenance + + var/list/logged_access = list() + for(var/datum/ares_ticket/access/access_ticket as anything in link.tickets_access) + var/lock_status = TICKET_OPEN + switch(access_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_REVOKED) + lock_status = TICKET_CLOSED + + var/list/current_ticket = list() + current_ticket["id"] = access_ticket.ticket_id + current_ticket["time"] = access_ticket.ticket_time + current_ticket["priority_status"] = access_ticket.ticket_priority + current_ticket["title"] = access_ticket.ticket_name + current_ticket["details"] = access_ticket.ticket_details + current_ticket["status"] = access_ticket.ticket_status + current_ticket["submitter"] = access_ticket.ticket_submitter + current_ticket["assignee"] = access_ticket.ticket_assignee + current_ticket["lock_status"] = lock_status + current_ticket["ref"] = "\ref[access_ticket]" + logged_access += list(current_ticket) + data["access_tickets"] = logged_access + + data["security_vents"] = link.get_ares_vents() + + return data + +/obj/item/device/ai_tech_pda/ui_close(mob/user) + . = ..() + current_menu = "login" + last_menu = "off" + if(logged_in) + access_list += "[logged_in] logged out at [worldtime2text()]." + logged_in = null + update_icon() + +/obj/item/device/ai_tech_pda/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/mob/living/carbon/human/user = ui.user + var/playsound = TRUE + + switch(action) + if("go_back") + if(!last_menu) + 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/obj/item/card/id/card = user.wear_id + if(!card || !card.check_biometrics(user)) + to_chat(user, SPAN_WARNING("You require an authenticated ID card to access this device!")) + playsound(src, 'sound/machines/terminal_error.ogg', 15, TRUE) + return FALSE + logged_in = user.real_name + access_list += "[logged_in] at [worldtime2text()]." + current_menu = "main" + + if("sudo") + var/new_user = tgui_input_text(user, "Enter Sudo Username", "Sudo User", encode = FALSE) + if(new_user) + if(new_user == link.interface.sudo_holder) + link.interface.last_login = link.interface.sudo_holder + link.interface.sudo_holder = null + return FALSE + if(new_user == link.interface.last_login) + to_chat(user, SPAN_WARNING("Already remote logged in as this user.")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + link.interface.sudo_holder = link.interface.last_login + link.interface.last_login = new_user + datacore.interface_access_list += "[link.interface.last_login] at [worldtime2text()], Sudo Access." + return TRUE + if("sudo_logout") + datacore.interface_access_list += "[link.interface.last_login] at [worldtime2text()], Sudo Logout." + link.interface.last_login = link.interface.sudo_holder + link.interface.sudo_holder = null + return + + // -- Page Changers -- // + if("logout") + current_menu = "login" + last_menu = "login" + access_list += "[logged_in] logged out at [worldtime2text()]." + logged_in = null + + if("home") + last_menu = current_menu + current_menu = "main" + if("page_1to1") + last_menu = current_menu + current_menu = "talking" + if("page_announcements") + last_menu = current_menu + current_menu = "announcements" + if("page_bioscans") + last_menu = current_menu + current_menu = "bioscans" + if("page_bombardments") + last_menu = current_menu + current_menu = "bombardments" + if("page_apollo") + last_menu = current_menu + current_menu = "apollo" + if("page_access") + last_menu = current_menu + current_menu = "access_log" + if("page_admin_list") + last_menu = current_menu + current_menu = "admin_access_log" + if("page_security") + last_menu = current_menu + current_menu = "security" + if("page_requisitions") + last_menu = current_menu + current_menu = "requisitions" + if("page_flight") + last_menu = current_menu + current_menu = "flight_log" + if("page_emergency") + last_menu = current_menu + current_menu = "emergency" + if("page_deleted") + last_menu = current_menu + current_menu = "delete_log" + if("page_deleted_1to1") + last_menu = current_menu + current_menu = "deleted_talks" + if("page_tech") + last_menu = current_menu + current_menu = "tech_log" + if("page_core_sec") + last_menu = current_menu + current_menu = "core_security" + if("page_access_management") + last_menu = current_menu + current_menu = "access_management" + if("page_maint_management") + last_menu = current_menu + current_menu = "maintenance_management" + + // -- 1:1 Conversation -- // + if("new_conversation") + if(link.interface.last_login == "No User") + return FALSE + var/datum/ares_record/talk_log/convo = new(link.interface.last_login) + convo.conversation += "[MAIN_AI_SYSTEM] at [worldtime2text()], 'New 1:1 link initiated. Greetings, [link.interface.last_login].'" + datacore.records_talking += convo + + if("clear_conversation") + var/datum/ares_record/talk_log/conversation = locate(params["active_convo"]) + if(!istype(conversation)) + return FALSE + var/datum/ares_record/deleted_talk/deleted = new + deleted.title = conversation.title + deleted.conversation = conversation.conversation + deleted.user = MAIN_AI_SYSTEM + datacore.records_deletion += deleted + datacore.records_talking -= conversation + + if("fake_message_ares") + var/message = tgui_input_text(user, "What do you wish to say to ARES?", "ARES Message", encode = FALSE) + if(message) + link.interface.message_ares(message, user, params["active_convo"], TRUE) + if("ares_reply") + var/message = tgui_input_text(user, "What do you wish to reply with?", "ARES Response", encode = FALSE) + if(message) + link.interface.response_from_ares(message, params["active_convo"]) + var/datum/ares_record/talk_log/conversation = locate(params["active_convo"]) + var/admin_log = SPAN_STAFF_IC("ADMINS/MODS: [SPAN_RED("[key_name(user)] replied to [conversation.user]'s ARES message")] [SPAN_GREEN("via [src]")] with: [SPAN_BLUE(message)] ") + for(var/client/admin in GLOB.admins) + if((R_ADMIN|R_MOD) & admin.admin_holder.rights) + to_chat(admin, admin_log) + + if("read_record") + var/datum/ares_record/deleted_talk/conversation = locate(params["record"]) + deleted_1to1 = conversation.conversation + last_menu = current_menu + current_menu = "read_deleted" + + if("claim_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + var/claim = TRUE + var/assigned = ticket.ticket_assignee + if(assigned) + if(assigned == logged_in) + var/prompt = tgui_alert(user, "You already claimed this ticket! Do you wish to drop your claim?", "Unclaim ticket", list("Yes", "No")) + if(prompt != "Yes") + return FALSE + /// set ticket back to pending + ticket.ticket_assignee = null + ticket.ticket_status = TICKET_PENDING + return claim + var/choice = tgui_alert(user, "This ticket has already been claimed by [assigned]! Do you wish to override their claim?", "Claim Override", list("Yes", "No")) + if(choice != "Yes") + claim = FALSE + if(claim) + ticket.ticket_assignee = logged_in + ticket.ticket_status = TICKET_ASSIGNED + return claim + + if("auth_access") + playsound = FALSE + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!access_ticket) + return FALSE + for(var/obj/item/card/id/identification in link.waiting_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(logged_in, user) + access_ticket.ticket_status = TICKET_GRANTED + playsound(src, 'sound/machines/chime.ogg', 15, TRUE) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] granted core access.") + return TRUE + for(var/obj/item/card/id/identification in link.active_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(logged_in, user) + access_ticket.ticket_status = TICKET_REVOKED + playsound(src, 'sound/machines/chime.ogg', 15, TRUE) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: core access for [access_ticket.ticket_submitter] revoked.") + return TRUE + return FALSE + + if("reject_access") + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!istype(access_ticket)) + return FALSE + access_ticket.ticket_status = TICKET_REJECTED + to_chat(user, SPAN_NOTICE("[access_ticket.ticket_type] [access_ticket.ticket_id] marked as rejected.")) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id] rejected.") + return TRUE + + if("new_report") + var/priority_report = FALSE + var/maint_type = tgui_input_list(user, "What is the type of maintenance item you wish to report?", "Report Category", GLOB.maintenance_categories, 30 SECONDS) + switch(maint_type) + if("Major Structural Damage", "Fire", "Communications Failure", "Power Generation Failure") + priority_report = TRUE + + if(!maint_type) + return FALSE + var/details = tgui_input_text(user, "What are the details for this report?", "Ticket Details", encode = FALSE) + if(!details) + return FALSE + + if(!priority_report) + var/is_priority = tgui_alert(user, "Is this a priority report?", "Priority designation", list("Yes", "No")) + if(is_priority == "Yes") + priority_report = TRUE + + var/confirm = alert(user, "Please confirm the submission of your maintenance report. \n\n Priority: [priority_report ? "Yes" : "No"]\n Category: '[maint_type]'\n Details: '[details]'\n\n Is this correct?", "Confirmation", "Yes", "No") + if(confirm == "Yes") + var/datum/ares_ticket/maintenance/maint_ticket = new("[logged_in] (AIST)", maint_type, details, priority_report) + link.tickets_maintenance += maint_ticket + if(priority_report) + ares_apollo_talk("Priority Maintenance Report: [maint_type] - ID [maint_ticket.ticket_id]. Seek and resolve.") + log_game("ARES: Maintenance Ticket '\ref[maint_ticket]' created by [key_name(user)] as AI-ST with Category '[maint_type]' and Details of '[details]'.") + return TRUE + return FALSE + + if("cancel_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + to_chat(user, SPAN_WARNING("[ticket.ticket_type] [ticket.ticket_id] has been cancelled.")) + ticket.ticket_status = TICKET_CANCELLED + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been cancelled.") + return TRUE + + if("mark_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + var/options_list = list(TICKET_COMPLETED, TICKET_REJECTED) + if(ticket.ticket_priority) + options_list += TICKET_NON_PRIORITY + else + options_list += TICKET_PRIORITY + var/choice = tgui_alert(user, "What do you wish to mark the ticket as?", "Mark", options_list, 20 SECONDS) + switch(choice) + if(TICKET_PRIORITY) + ticket.ticket_priority = TRUE + ares_apollo_talk("[ticket.ticket_type] [ticket.ticket_id] upgraded to Priority.") + return TRUE + if(TICKET_NON_PRIORITY) + ticket.ticket_priority = FALSE + ares_apollo_talk("[ticket.ticket_type] [ticket.ticket_id] downgraded from Priority.") + return TRUE + if(TICKET_COMPLETED) + ticket.ticket_status = TICKET_COMPLETED + if(TICKET_REJECTED) + ticket.ticket_status = TICKET_REJECTED + else + return FALSE + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been [choice] by AI-ST [logged_in].") + to_chat(user, SPAN_NOTICE("[ticket.ticket_type] [ticket.ticket_id] marked as [choice].")) + return TRUE + + if("delete_record") + playsound = FALSE + var/datum/ares_record/record = locate(params["record"]) + if(record.record_name == ARES_RECORD_DELETED) + return FALSE + var/datum/ares_record/deletion/new_delete = new + var/new_details = "Error" + var/new_title = "Error" + switch(record.record_name) + if(ARES_RECORD_ANNOUNCE) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_announcement -= record + if(ARES_RECORD_SECURITY, ARES_RECORD_ANTIAIR) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_security -= record + if(ARES_RECORD_BIOSCAN) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_bioscan -= record + if(ARES_RECORD_BOMB) + new_title = "[record.title] at [record.time]" + new_details = "[record.details] Launched by [record.user]." + datacore.records_bombardment -= record + if(ARES_RECORD_TECH) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_tech -= record + if(ARES_RECORD_FLIGHT) + new_title = "[record.title] at [record.time]" + new_details = record.details + datacore.records_flight -= record + + new_delete.details = new_details + new_delete.user = "[logged_in] (AIST)" + new_delete.title = new_title + + datacore.records_deletion += new_delete + playsound(src, 'sound/machines/terminal_error.ogg', 15, TRUE) + + if("general_quarters") + if(!COOLDOWN_FINISHED(datacore, ares_quarters_cooldown)) + 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(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", "[logged_in] 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(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(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(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(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", "[logged_in] has called for an emergency evacuation via ARES.") + . = TRUE + + if("distress") + if(!SSticker.mode) + return FALSE //Not a game mode? + if(world.time < DISTRESS_TIME_LOCK) + 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(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(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(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(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 + + if("nuclearbomb") + if(!SSticker.mode) + return FALSE //Not a game mode? + if(world.time < NUCLEAR_TIME_LOCK) + 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(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(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(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(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", "[logged_in] has sent a request for nuclear ordnance for the following reason: [reason]") + if(ares_can_interface()) + ai_silent_announcement("[logged_in] 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("bioscan") + if(!SSticker.mode) + return FALSE //Not a game mode? + if(world.time < FORCE_SCAN_LOCK) + to_chat(user, SPAN_WARNING("Bio sensors are not yet ready to initiate a scan!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!(COOLDOWN_FINISHED(datacore, ares_bioscan_cooldown)) || (world.time < (GLOB.last_human_bioscan + COOLDOWN_FORCE_SCAN))) + to_chat(user, SPAN_WARNING("It is too soon since the last scan, wait for the sensor array to reset!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + GLOB.bioscan_data.ares_bioscan(FALSE, 2) + COOLDOWN_START(datacore, ares_bioscan_cooldown, COOLDOWN_FORCE_SCAN) + playsound(src, 'sound/machines/terminal_processing.ogg', 15, 1) + message_admins("BIOSCAN: [key_name(user)] triggered a Marine bioscan via ARES AIST.") + 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", "[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.") + + + if(playsound) + var/sound = pick('sound/machines/pda_button1.ogg', 'sound/machines/pda_button2.ogg') + playsound(src, sound, 15, TRUE) diff --git a/code/game/machinery/sentry_holder.dm b/code/game/machinery/sentry_holder.dm index fe676e9103d2..57b1b44bcd4c 100644 --- a/code/game/machinery/sentry_holder.dm +++ b/code/game/machinery/sentry_holder.dm @@ -16,6 +16,7 @@ var/ox = 0 var/oy = 0 var/require_red_alert = FALSE + var/base_icon_state = "sentry_system" /obj/structure/machinery/sentry_holder/Initialize() . = ..() @@ -76,7 +77,7 @@ deployment_cooldown = world.time + 50 deployed_turret.turned_on = TRUE deployed_turret.forceMove(loc) - icon_state = "sentry_system_deployed" + icon_state = "[base_icon_state]_deployed" for(var/mob/M in deployed_turret.loc) if(deployed_turret.loc == src.loc) @@ -103,7 +104,7 @@ deployed_turret.unset_range() pixel_x = ox pixel_y = oy - icon_state = "sentry_system_installed" + icon_state = "[base_icon_state]_installed" /obj/structure/machinery/sentry_holder/Destroy() QDEL_NULL(deployed_turret) @@ -115,5 +116,30 @@ turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable/colony /obj/structure/machinery/sentry_holder/almayer + icon_state = "floor_sentry_installed" turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable/almayer + base_icon_state = "floor_sentry" require_red_alert = TRUE + +/obj/structure/machinery/sentry_holder/almayer/mini + turret_path = /obj/structure/machinery/defenses/sentry/premade/deployable/almayer/mini + +/obj/structure/machinery/sentry_holder/almayer/mini/aicore + +/obj/structure/machinery/sentry_holder/almayer/mini/aicore/Initialize() + . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_AICORE_LOCKDOWN, PROC_REF(auto_deploy)) + RegisterSignal(SSdcs, COMSIG_GLOB_AICORE_LIFT, PROC_REF(undeploy_sentry)) + +/obj/structure/machinery/sentry_holder/almayer/mini/aicore/proc/auto_deploy() + if(deployed_turret.loc == src) //not deployed + if(stat & NOPOWER) + //to_chat(user, SPAN_WARNING("[src] is non-functional.")) + return FALSE + + deploy_sentry() + return TRUE + +/obj/structure/machinery/sentry_holder/almayer/mini/aicore/attack_hand(mob/user) + to_chat(user, SPAN_WARNING("[src] can only be deployed remotely.")) + return diff --git a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm index a5d3cbe85b01..3b7d98f41d69 100644 --- a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm +++ b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm @@ -2,7 +2,7 @@ name = "\improper ColMarTech Senior Officer Equipment Rack" desc = "An automated equipment vendor for Senior Officers." req_access = list(ACCESS_MARINE_SENIOR) - vendor_role = list(JOB_CHIEF_POLICE, JOB_CMO, JOB_XO, JOB_CHIEF_ENGINEER, JOB_CHIEF_REQUISITION, JOB_AUXILIARY_OFFICER) + vendor_role = list(JOB_CHIEF_POLICE, JOB_CMO, JOB_XO, JOB_CHIEF_ENGINEER, JOB_CHIEF_REQUISITION, JOB_AUXILIARY_OFFICER, JOB_AI_TECH) /obj/structure/machinery/cm_vending/clothing/senior_officer/get_listed_products(mob/user) if(!user) @@ -25,6 +25,10 @@ return GLOB.cm_vending_clothing_military_police_chief else if(user.job == JOB_AUXILIARY_OFFICER) return GLOB.cm_vending_clothing_auxiliary_officer + else if(user.job == JOB_AI_TECH) + if(FACTION_WY in user.faction_group) + return GLOB.cm_vending_clothing_aist_wy + return GLOB.cm_vending_clothing_aist return ..() @@ -496,3 +500,160 @@ GLOBAL_LIST_INIT(cm_vending_clothing_auxiliary_officer, list( /obj/item/clothing/head/marine/peaked, /obj/item/clothing/under/marine/dress, ) + + + +//------------ AI SERVICE TECHNICIAN --------------- +GLOBAL_LIST_INIT(cm_vending_clothing_aist, list( + list("STANDARD EQUIPMENT", 0, null, null, null), + list("Marine Formal Uniform", 0, /obj/item/clothing/under/marine/dress, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom/cdrcom/aist, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Toolbelt", 0, /obj/item/storage/belt/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), + list("Welding Goggles", 0, /obj/item/clothing/glasses/welding, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_RECOMMENDED), + + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Black Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/black, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("Blue Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/blue, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Orange Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Yellow Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/yellow, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + + list("HEADWEAR (OPTIONAL)", 0, null, null, null), + list("Welding Helmet", 0, /obj/item/clothing/head/welding, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("BAG (CHOOSE 1)", 0, null, null, null), + list("Secure Leather Satchel", 0, /obj/item/storage/backpack/satchel/lockable, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + list("USCM Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Chestrig", 0, /obj/item/storage/backpack/marine/satchel/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Welder-Satchel", 0, /obj/item/storage/backpack/marine/engineerpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Welderpack", 0, /obj/item/storage/backpack/marine/engineerpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Welding Kit", 0, /obj/item/tool/weldpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + + list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), + list("M2019 Blaster", 0, /obj/effect/essentials_set/m2019, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + + list("COMBAT EQUIPMENT (COMBAT USE ONLY)", 0, null, null, null), + list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_MANDATORY), + list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_COMBAT_HELMET, VENDOR_ITEM_MANDATORY), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_COMBAT_SHOES, VENDOR_ITEM_MANDATORY), + list("M2019 Ammo Refil", 15, /obj/effect/essentials_set/pkd_ammo, null, VENDOR_ITEM_REGULAR), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sling Strap", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + + list("Spare Equipment", 0, null, null, null), + list("T411 AIDT", 0, /obj/item/device/ai_tech_pda, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + list("APOLLO Relay Key", 5, /obj/item/device/encryptionkey/binary, null, VENDOR_ITEM_REGULAR), + )) + +GLOBAL_LIST_INIT(cm_vending_clothing_aist_wy, list( + list("UNIFORM (CHOOSE 1)", 0, null, null, null), + list("Blue Suit Pants", 0, /obj/item/clothing/under/liaison_suit/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Brown Suit Pants", 0, /obj/item/clothing/under/liaison_suit/brown, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Black Suit Pants", 0, /obj/item/clothing/under/liaison_suit/black, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("White Suit Pants", 0, /obj/item/clothing/under/liaison_suit/corporate_formal, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + + list("STANDARD EQUIPMENT", 0, null, null, null), + list("Headset", 0, /obj/item/device/radio/headset/almayer/mcl/aist, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Polished Boots", 0, /obj/item/clothing/shoes/veteran/pmc, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Toolbelt", 0, /obj/item/storage/belt/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), + list("Welding Goggles", 0, /obj/item/clothing/glasses/welding, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_RECOMMENDED), + + list("VEST (CHOOSE 1)", 0, null, null, null), + list("Orange Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("Black Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/black, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Blue Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/blue, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Yellow Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/yellow, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + + list("HEADWEAR (OPTIONAL)", 0, null, null, null), + list("Welding Helmet", 0, /obj/item/clothing/head/welding, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("BAG (CHOOSE 1)", 0, null, null, null), + list("Secure Leather Satchel", 0, /obj/item/storage/backpack/satchel/lockable, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + list("USCM Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Standard Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Chestrig", 0, /obj/item/storage/backpack/marine/satchel/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Welder-Satchel", 0, /obj/item/storage/backpack/marine/engineerpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Welderpack", 0, /obj/item/storage/backpack/marine/engineerpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + + list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), + list("M2019 Blaster", 0, /obj/effect/essentials_set/m2019, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + + list("COMBAT EQUIPMENT (COMBAT USE ONLY)", 0, null, null, null), + list("Bulletproof Vest", 0, /obj/item/clothing/suit/armor/bulletproof, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_MANDATORY), + list("M10 pattern marine helmet", 0, /obj/item/clothing/head/helmet/marine, MARINE_CAN_BUY_COMBAT_HELMET, VENDOR_ITEM_MANDATORY), + list("Polished Boots", 0, /obj/item/clothing/shoes/veteran/pmc/knife, MARINE_CAN_BUY_COMBAT_SHOES, VENDOR_ITEM_MANDATORY), + list("M2019 Ammo Refil", 15, /obj/effect/essentials_set/pkd_ammo, null, VENDOR_ITEM_REGULAR), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sling Strap", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + + list("Spare Equipment", 0, null, null, null), + list("T411 AIDT", 0, /obj/item/device/ai_tech_pda, MARINE_CAN_BUY_MRE, VENDOR_ITEM_REGULAR), + list("APOLLO Relay Key", 5, /obj/item/device/encryptionkey/binary, null, VENDOR_ITEM_REGULAR), + )) + +/obj/effect/essentials_set/m2019 + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' + icon_state = "lapd_2019" + desc = "Properly known as the Pflager Katsumata Series-D Blaster, the M2019 is a relic of a handgun used by detectives and blade runners, having replaced the snub nose .38 detective special in 2019. Fires .44 custom packed sabot magnum rounds. Legally a revolver, the unconventional but robust internal design has made this model incredibly popular amongst collectors and enthusiasts." + spawned_gear_list = list( + /obj/item/weapon/gun/revolver/m44/custom/pkd_special, + /obj/item/ammo_magazine/revolver/pkd, + /obj/item/ammo_magazine/revolver/pkd, + ) + +/obj/effect/essentials_set/pkd_ammo + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi' + icon_state = "pkd_44" + desc = "Flip up the two side latches (three on PKL) and push after aligning with feed lips on blaster. Clip can be re-used." + spawned_gear_list = list( + /obj/item/ammo_magazine/revolver/pkd, + /obj/item/ammo_magazine/revolver/pkd, + /obj/item/ammo_magazine/revolver/pkd, + ) diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm index a55285369e14..8b27f646953d 100644 --- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm +++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm @@ -368,6 +368,7 @@ GLOBAL_LIST_INIT(cm_vending_synth_tools, list( list("Maintenance Jack", 15, /obj/item/maintenance_jack, null, VENDOR_ITEM_REGULAR), list("Portable Dialysis Machine", 15, /obj/item/tool/portadialysis, null, VENDOR_ITEM_REGULAR), list("Telescopic Baton", 15, /obj/item/weapon/telebaton, null, VENDOR_ITEM_REGULAR), + list("Synthetic Sparker", 15, /obj/item/device/defibrillator/synthetic, null, VENDOR_ITEM_REGULAR), )) //------------EXPERIMENTAL TOOL KITS--------------- diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm index bf3b952edcf5..3203e567ec15 100644 --- a/code/game/objects/effects/landmarks/landmarks.dm +++ b/code/game/objects/effects/landmarks/landmarks.dm @@ -404,6 +404,9 @@ name = "working joe late join" job = JOB_WORKING_JOE +/obj/effect/landmark/late_join/aist + name = "AIST late join" + job = JOB_AI_TECH /obj/effect/landmark/late_join/cmo name = "Chief Medical Officer late join" diff --git a/code/game/objects/items/devices/defibrillator.dm b/code/game/objects/items/devices/defibrillator.dm index bbeb2046aff0..2ec5255963b2 100644 --- a/code/game/objects/items/devices/defibrillator.dm +++ b/code/game/objects/items/devices/defibrillator.dm @@ -24,6 +24,12 @@ var/defib_cooldown = 0 //Cooldown for toggling the defib var/shock_cooldown = 0 //cooldown for shocking someone - separate to toggling + /// Skill requirements. + var/skill_to_check = SKILL_MEDICAL + var/skill_level = SKILL_MEDICAL_MEDIC + var/skill_to_check_alt = null + var/skill_level_alt = 0 + /mob/living/carbon/human/proc/check_tod() if(!undefibbable && world.time <= timeofdeath + revive_grace_period) return TRUE @@ -79,10 +85,11 @@ return //Job knowledge requirement - if (istype(user)) - if(!skillcheck(user, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) - to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) - return + if(istype(user)) + if(!skillcheck(user, skill_to_check, skill_level)) + if(!skill_to_check_alt || (!skillcheck(user, skill_to_check_alt, skill_level_alt))) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return defib_cooldown = world.time + 10 //1 second cooldown every time the defib is toggled ready = !ready @@ -125,7 +132,7 @@ if(!ready) to_chat(user, SPAN_WARNING("Take [src]'s paddles out first.")) return - if(dcell.charge <= charge_cost) + if(dcell.charge < charge_cost) user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src]'s battery is too low! It needs to recharge.")) return if(H.stat != DEAD) @@ -146,56 +153,63 @@ return TRUE -/obj/item/device/defibrillator/attack(mob/living/carbon/human/H, mob/living/carbon/human/user) +/obj/item/device/defibrillator/proc/can_defib(mob/living/carbon/human/target, mob/living/carbon/human/user) if(shock_cooldown > world.time) //cooldown is only for shocking, this is so that you can immediately shock when you take the paddles out - stan_albatross - return + return FALSE shock_cooldown = world.time + 20 //2 second cooldown before you can try shocking again if(user.action_busy) //Currently deffibing - return + return FALSE //job knowledge requirement if(user.skills) - if(!skillcheck(user, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) - to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) - return + if(!skillcheck(user, skill_to_check, skill_level)) + if(skill_to_check_alt && !skillcheck(user, skill_to_check_alt, skill_level_alt)) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return - if(!check_revive(H, user)) - return + if(!check_revive(target, user)) + return FALSE - var/mob/dead/observer/G = H.get_ghost() + var/mob/dead/observer/G = target.get_ghost() if(istype(G) && G.client) playsound_client(G.client, 'sound/effects/adminhelp_new.ogg') to_chat(G, SPAN_BOLDNOTICE(FONT_SIZE_LARGE("Someone is trying to revive your body. Return to it if you want to be resurrected! \ (Verbs -> Ghost -> Re-enter corpse, or click here!)"))) - user.visible_message(SPAN_NOTICE("[user] starts setting up the paddles on [H]'s chest"), \ - SPAN_HELPFUL("You start setting up the paddles on [H]'s chest.")) + user.visible_message(SPAN_NOTICE("[user] starts setting up the paddles on [target]'s chest"), \ + SPAN_HELPFUL("You start setting up the paddles on [target]'s chest.")) playsound(get_turf(src),'sound/items/defib_charge.ogg', 25, 0) //Do NOT vary this tune, it needs to be precisely 7 seconds //Taking square root not to make defibs too fast... - if(!do_after(user, (4 + (3 * user.get_skill_duration_multiplier(SKILL_MEDICAL))) SECONDS, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_FRIENDLY, H, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) - user.visible_message(SPAN_WARNING("[user] stops setting up the paddles on [H]'s chest."), \ - SPAN_WARNING("You stop setting up the paddles on [H]'s chest.")) - return + if(!do_after(user, (4 + (3 * user.get_skill_duration_multiplier(SKILL_MEDICAL))) SECONDS, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_FRIENDLY, target, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) + user.visible_message(SPAN_WARNING("[user] stops setting up the paddles on [target]'s chest."), \ + SPAN_WARNING("You stop setting up the paddles on [target]'s chest.")) + return FALSE - if(!check_revive(H, user)) - return + if(!check_revive(target, user)) + return FALSE + + return TRUE + +/obj/item/device/defibrillator/attack(mob/living/carbon/human/target, mob/living/carbon/human/user) + if(!can_defib(target, user)) + return FALSE //Do this now, order doesn't matter sparks.start() dcell.use(charge_cost) update_icon() playsound(get_turf(src), 'sound/items/defib_release.ogg', 25, 1) - user.visible_message(SPAN_NOTICE("[user] shocks [H] with the paddles."), - SPAN_HELPFUL("You shock [H] with the paddles.")) - H.visible_message(SPAN_DANGER("[H]'s body convulses a bit.")) + user.visible_message(SPAN_NOTICE("[user] shocks [target] with the paddles."), + SPAN_HELPFUL("You shock [target] with the paddles.")) + target.visible_message(SPAN_DANGER("[target]'s body convulses a bit.")) shock_cooldown = world.time + 10 //1 second cooldown before you can shock again - var/datum/internal_organ/heart/heart = H.internal_organs_by_name["heart"] + var/datum/internal_organ/heart/heart = target.internal_organs_by_name["heart"] - if(!H.is_revivable()) + if(!target.is_revivable()) playsound(get_turf(src), 'sound/items/defib_failed.ogg', 25, 0) if(heart && heart.organ_status >= ORGAN_BROKEN) user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Defibrillation failed. Patient's heart is too damaged. Immediate surgery is advised.")) @@ -203,40 +217,40 @@ user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Defibrillation failed. Patient's general condition does not allow reviving.")) return - if(!H.client) //Freak case, no client at all. This is a braindead mob (like a colonist) + if(!target.client) //Freak case, no client at all. This is a braindead mob (like a colonist) user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: No soul detected, Attempting to revive...")) - if(isobserver(H.mind?.current) && !H.client) //Let's call up the correct ghost! Also, bodies with clients only, thank you. - H.mind.transfer_to(H, TRUE) + if(isobserver(target.mind?.current) && !target.client) //Let's call up the correct ghost! Also, bodies with clients only, thank you. + target.mind.transfer_to(target, TRUE) //At this point, the defibrillator is ready to work - H.apply_damage(-damage_heal_threshold, BRUTE) - H.apply_damage(-damage_heal_threshold, BURN) - H.apply_damage(-damage_heal_threshold, TOX) - H.apply_damage(-damage_heal_threshold, CLONE) - H.apply_damage(-H.getOxyLoss(), OXY) - H.updatehealth() //Needed for the check to register properly - - if(!(H.species?.flags & NO_CHEM_METABOLIZATION)) - for(var/datum/reagent/R in H.reagents.reagent_list) + target.apply_damage(-damage_heal_threshold, BRUTE) + target.apply_damage(-damage_heal_threshold, BURN) + target.apply_damage(-damage_heal_threshold, TOX) + target.apply_damage(-damage_heal_threshold, CLONE) + target.apply_damage(-target.getOxyLoss(), OXY) + target.updatehealth() //Needed for the check to register properly + + if(!(target.species?.flags & NO_CHEM_METABOLIZATION)) + for(var/datum/reagent/R in target.reagents.reagent_list) var/datum/chem_property/P = R.get_property(PROPERTY_ELECTROGENETIC)//Adrenaline helps greatly at restarting the heart if(P) - P.trigger(H) - H.reagents.remove_reagent(R.id, 1) + P.trigger(target) + target.reagents.remove_reagent(R.id, 1) break - if(H.health > HEALTH_THRESHOLD_DEAD) + if(target.health > HEALTH_THRESHOLD_DEAD) user.visible_message(SPAN_NOTICE("[icon2html(src, viewers(src))] \The [src] beeps: Defibrillation successful.")) playsound(get_turf(src), 'sound/items/defib_success.ogg', 25, 0) user.track_life_saved(user.job) user.life_revives_total++ - H.handle_revive() + target.handle_revive() if(heart) heart.take_damage(rand(min_heart_damage_dealt, max_heart_damage_dealt), TRUE) // Make death and revival leave lasting consequences - to_chat(H, SPAN_NOTICE("You suddenly feel a spark and your consciousness returns, dragging you back to the mortal plane.")) - if(H.client?.prefs.toggles_flashing & FLASH_CORPSEREVIVE) - window_flash(H.client) + to_chat(target, SPAN_NOTICE("You suddenly feel a spark and your consciousness returns, dragging you back to the mortal plane.")) + if(target.client?.prefs.toggles_flashing & FLASH_CORPSEREVIVE) + window_flash(target.client) else user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Defibrillation failed. Vital signs are too weak, repair damage and try again.")) //Freak case playsound(get_turf(src), 'sound/items/defib_failed.ogg', 25, 0) @@ -264,3 +278,50 @@ item_state = "defib" w_class = SIZE_SMALL charge_cost = 99 + + +/obj/item/device/defibrillator/synthetic + name = "synthetic sparker" + desc = "Functioning similarly to a regular defibrillator, this device is designed to restart a synthetic unit via electric shock." + icon = 'icons/obj/items/experimental_tools.dmi' + icon_state = "sparker" + item_state = "defib" + w_class = SIZE_SMALL + charge_cost = 300 + skill_to_check_alt = SKILL_ENGINEER + skill_level_alt = SKILL_ENGINEER_ENGI + +/obj/item/device/defibrillator/synthetic/update_icon() + icon_state = initial(icon_state) + overlays.Cut() + if(ready) + icon_state += "_out" + +/obj/item/device/defibrillator/synthetic/check_revive(mob/living/carbon/human/H, mob/living/carbon/human/user) + if(!issynth(H)) + to_chat(user, SPAN_WARNING("You can't use a [src] on a living being!")) + return FALSE + if(!ready) + to_chat(user, SPAN_WARNING("Take [src]'s paddles out first.")) + return FALSE + if(dcell.charge < charge_cost) + user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src]'s battery is too low! It needs to recharge.")) + return FALSE + if(H.stat != DEAD) + user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Function signs detected. Aborting.")) + return FALSE + + if(!H.is_revivable()) + user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Unit's general condition does not allow reactivation.")) + return FALSE + + if((!MODE_HAS_TOGGLEABLE_FLAG(MODE_STRONG_DEFIBS) && blocked_by_suit) && H.wear_suit && (istype(H.wear_suit, /obj/item/clothing/suit/armor) || istype(H.wear_suit, /obj/item/clothing/suit/storage/marine)) && prob(95)) + user.visible_message(SPAN_WARNING("[icon2html(src, viewers(src))] \The [src] buzzes: Paddles registering >100,000 ohms, Possible cause: Suit or Armor interfering.")) + return FALSE + + return TRUE + +/obj/item/device/defibrillator/synthetic/one_shot + desc = "Functioning similarly to a regular defibrillator, this device is designed to restart a synthetic unit via electric shock. This one can only be used once before needing a recharge and is intended for rebooting Working Joes." + charge_cost = 1000 + icon_state = "sparker_once" diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 58d8cd8d8d5f..02e111a5dfb0 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -12,6 +12,8 @@ var/abstract = FALSE /obj/item/device/encryptionkey/binary + name = "APOLLO relay key" + desc = "An encryption key allowing speech over the APOLLO Link. (Using :+)" icon_state = "binary_key" translate_apollo = TRUE diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 00f0ad16220c..92fe68e616c3 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -541,6 +541,11 @@ maximum_keys = 5 initial_keys = list(/obj/item/device/encryptionkey/mcom/cl) +/obj/item/device/radio/headset/almayer/mcl/aist + name = "corporate AI service technician headset" + desc = "A standard issue corporate liaison headset, modified for AIST responsibilities. Allows the wearer to listen to, and broadcast over, the APOLLO Link. (Use :+)" + initial_keys = list(/obj/item/device/encryptionkey/binary, /obj/item/device/encryptionkey/mcom/cl) + /obj/item/device/radio/headset/almayer/reporter name = "reporter radio headset" desc = "Used by the combat correspondent to get the scoop. Channels are as follows: :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel." @@ -559,6 +564,11 @@ initial_keys = list(/obj/item/device/encryptionkey/cmpcom/cdrcom) volume = RADIO_VOLUME_CRITICAL +/obj/item/device/radio/headset/almayer/mcom/cdrcom/aist + name = "marine AI service technician headset" + desc = "A modified senior command headset issued to USCM AISTs. Allows the wearer to listen to, and broadcast over, the APOLLO Link. (Use :+)" + initial_keys = list(/obj/item/device/encryptionkey/binary, /obj/item/device/encryptionkey/cmpcom/cdrcom) + /obj/item/device/radio/headset/almayer/mcom/synth name = "marine synth headset" desc = "Issued only to USCM synthetics. Channels are as follows: :v - marine command, :p - military police, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel" diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index b3a330ca36b0..6c8fbaa5334a 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -272,3 +272,6 @@ new /obj/item/inflatable(src) new /obj/item/inflatable(src) new /obj/item/inflatable(src) + +/obj/item/storage/briefcase/inflatable/small + w_class = SIZE_MEDIUM diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 4b669934d1c1..d6874b7fafaa 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -661,7 +661,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( * * width - Screen' width. * * height - Screen's height. */ -/datum/preferences/proc/SetChoices(mob/user, limit = 20, list/splitJobs = list(JOB_CHIEF_REQUISITION, JOB_WO_CMO), width = 950, height = 750) +/datum/preferences/proc/SetChoices(mob/user, limit = 20, list/splitJobs = list(JOB_AI_TECH, JOB_WO_CMO), width = 950, height = 750) if(!GLOB.RoleAuthority) return @@ -684,6 +684,8 @@ GLOBAL_LIST_INIT(bgstate_options, list( if(!job) debug_log("Missing job for prefs: [role_name]") continue + if(job.flags_startup_parameters & ROLE_HIDDEN) + continue index++ if((index >= limit) || (job.title in splitJobs)) HTML += "" @@ -779,7 +781,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( * * width - Screen' width. * * height - Screen's height. */ -/datum/preferences/proc/set_job_slots(mob/user, limit = 20, list/splitJobs = list(JOB_CHIEF_REQUISITION, JOB_WO_CMO), width = 950, height = 750) +/datum/preferences/proc/set_job_slots(mob/user, limit = 20, list/splitJobs = list(JOB_AI_TECH, JOB_WO_CMO), width = 950, height = 750) if(!GLOB.RoleAuthority) return @@ -802,6 +804,8 @@ GLOBAL_LIST_INIT(bgstate_options, list( if(!job) debug_log("Missing job for prefs: [role_name]") continue + if(job.flags_startup_parameters & ROLE_HIDDEN) + continue index++ if((index >= limit) || (job.title in splitJobs)) HTML += "
" diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index e02bb930d416..34f297d3e186 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -920,6 +920,7 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) JOB_SURGEON = 42, JOB_NURSE = 43, // 50-59: Engineering + JOB_AI_TECH = 50, JOB_CHIEF_ENGINEER = 50, JOB_ORDNANCE_TECH = 51, JOB_MAINT_TECH = 52, diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm index 954e6adca7ec..8c7da0c10381 100644 --- a/code/modules/defenses/sentry.dm +++ b/code/modules/defenses/sentry.dm @@ -527,9 +527,25 @@ selected_categories[SENTRY_CATEGORY_IFF] = FACTION_COLONY /obj/structure/machinery/defenses/sentry/premade/deployable/almayer - fire_delay = 4 + name = "UA-635C Static Gauss Turret" + desc = "A fully-automated defence turret with mid-range targeting capabilities. Armed with a modified M32-S Autocannon and an internal belt feed and modified for UA warship use." + fire_delay = 0.4 SECONDS omni_directional = TRUE +/obj/structure/machinery/defenses/sentry/premade/deployable/almayer/mini + name = "UA 512-S mini sentry" + desc = "A fully-automated defence turret with mid-range targeting capabilities. Armed with a modified M30 Autocannon and an internal belt feed and modified for UA warship use." + defense_type = "Mini" + fire_delay = 0.25 SECONDS + health = 150 + health_max = 150 + damage_mult = 0.6 + density = FALSE + disassemble_time = 0.75 SECONDS + handheld_type = /obj/item/defenses/handheld/sentry/mini + composite_icon = FALSE + + //the turret inside the shuttle sentry deployment system /obj/structure/machinery/defenses/sentry/premade/dropship density = TRUE diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index 9bfa2335e94a..2b5f929a215a 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -606,12 +606,13 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/sling(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/device/working_joe_pda(new_human.back), WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/spray/cleaner(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/synthetic/one_shot(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/spray/cleaner(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/bucket(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/mop(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/wet_sign(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/box/lights/mixed(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/spray/cleaner(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/bag/trash(new_human), WEAR_L_HAND) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/droppouch(new_human), WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/circuitboard/apc(new_human.back), WEAR_IN_ACCESSORY) @@ -633,11 +634,9 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mt(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/joe(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/inflatable/door(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/inflatable/door(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/synthetic/one_shot(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/hugetank, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/inflatable(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/inflatable(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/briefcase/inflatable/small(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher(new_human), WEAR_L_HAND) new_human.equip_to_slot_or_del(new /obj/item/maintenance_jack(new_human), WEAR_J_STORE) diff --git a/code/modules/gear_presets/uscm_event.dm b/code/modules/gear_presets/uscm_event.dm index eb206c8259bf..1489a5b1d877 100644 --- a/code/modules/gear_presets/uscm_event.dm +++ b/code/modules/gear_presets/uscm_event.dm @@ -467,3 +467,78 @@ /*****************************************************************************************************/ +/datum/equipment_preset/uscm_event/ai_tech + name = "AI Technician (USCM)" + flags = EQUIPMENT_PRESET_EXTRA + faction = FACTION_MARINE + faction_group = list(FACTION_MARINE) + assignment = JOB_AI_TECH + rank = JOB_AI_TECH + paygrade = PAY_SHORT_MO2 + role_comm_title = "AIST" + skills = /datum/skills/CE + languages = list(LANGUAGE_ENGLISH, LANGUAGE_RUSSIAN, LANGUAGE_JAPANESE, LANGUAGE_GERMAN, LANGUAGE_SPANISH, LANGUAGE_CHINESE) + idtype = /obj/item/card/id/silver + access = list( + ACCESS_MARINE_SENIOR, + ACCESS_MARINE_CE, + ACCESS_MARINE_ENGINEERING, + ACCESS_MARINE_COMMAND, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_MARINE_DATABASE, + ACCESS_MARINE_MAINT, + ACCESS_MARINE_OT, + ACCESS_MARINE_SYNTH, + ACCESS_MARINE_AI, + ACCESS_ARES_DEBUG, + ) + +/datum/equipment_preset/uscm_event/ai_tech/load_vanity(mob/living/carbon/human/new_human) + return + +/datum/equipment_preset/uscm_event/ai_tech/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/dress(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(new_human), WEAR_HANDS) + + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster(new_human), WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/m44/custom/pkd_special(new_human.back), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/pkd(new_human.back), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/pkd(new_human.back), WEAR_IN_ACCESSORY) + + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/lockable(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) + + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/black(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/flash(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight(new_human), WEAR_J_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom/cdrcom/aist(new_human), WEAR_L_EAR) + + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/sling(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/ai_tech_pda(new_human.back), WEAR_IN_L_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) + +/datum/equipment_preset/uscm_event/ai_tech/corporate + name = "AI Technician (Contractor)" + faction_group = FACTION_LIST_MARINE_WY + paygrade = PAY_SHORT_WYC5 + + idtype = /obj/item/card/id/silver/cl + +/datum/equipment_preset/uscm_event/ai_tech/corporate/New() + . = ..() + /// WY version gets less access, but can use the CLs office. + access = get_access(ACCESS_LIST_MARINE_LIAISON_AIST) + +/datum/equipment_preset/uscm_event/ai_tech/corporate/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/blue(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcl/aist(new_human), WEAR_L_EAR) + + + ..() diff --git a/colonialmarines.dme b/colonialmarines.dme index 11902f619cad..5b4be362fbd8 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -887,6 +887,7 @@ #include "code\game\machinery\ARES\ARES_procs.dm" #include "code\game\machinery\ARES\ARES_records.dm" #include "code\game\machinery\ARES\ARES_step_triggers.dm" +#include "code\game\machinery\ARES\debug_pda.dm" #include "code\game\machinery\atmoalter\canister.dm" #include "code\game\machinery\atmoalter\meter.dm" #include "code\game\machinery\atmoalter\portable_atmospherics.dm" diff --git a/icons/landmarks.dmi b/icons/landmarks.dmi index 08b23758beaa..54ab20593c62 100644 Binary files a/icons/landmarks.dmi and b/icons/landmarks.dmi differ diff --git a/icons/mob/hud/marine_hud.dmi b/icons/mob/hud/marine_hud.dmi index 8eefce871099..8b69f5408a63 100644 Binary files a/icons/mob/hud/marine_hud.dmi and b/icons/mob/hud/marine_hud.dmi differ diff --git a/icons/mob/hud/sec_hud.dmi b/icons/mob/hud/sec_hud.dmi index 9cc3e66c3e0b..c33950cb867a 100644 Binary files a/icons/mob/hud/sec_hud.dmi and b/icons/mob/hud/sec_hud.dmi differ diff --git a/icons/obj/items/experimental_tools.dmi b/icons/obj/items/experimental_tools.dmi index d490d78c7ffa..d630484f5058 100644 Binary files a/icons/obj/items/experimental_tools.dmi and b/icons/obj/items/experimental_tools.dmi differ diff --git a/icons/obj/items/synth/ait_pda.dmi b/icons/obj/items/synth/ait_pda.dmi new file mode 100644 index 000000000000..3242473c2d3a Binary files /dev/null and b/icons/obj/items/synth/ait_pda.dmi differ diff --git a/icons/obj/structures/props/almayer_props.dmi b/icons/obj/structures/props/almayer_props.dmi index e928213f8f30..c2a6b52c5304 100644 Binary files a/icons/obj/structures/props/almayer_props.dmi and b/icons/obj/structures/props/almayer_props.dmi differ diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 4d84eb26487f..6640691f2ebc 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -1469,19 +1469,6 @@ icon_state = "redfull" }, /area/almayer/shipboard/starboard_missiles) -"aih" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ - dir = 2; - name = "\improper Officer's Cafeteria" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/cafeteria_officer) "aij" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -1495,14 +1482,6 @@ icon_state = "silver" }, /area/almayer/living/cafeteria_officer) -"ain" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/cafeteria_officer) "aiq" = ( /turf/open/floor/almayer, /area/almayer/living/cafeteria_officer) @@ -2675,28 +2654,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) -"aqg" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/upper_engineering) -"aqh" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering) "aqm" = ( /obj/item/bedsheet/brown, /obj/structure/bed, @@ -2986,20 +2943,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"ars" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering) "ary" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -4410,13 +4353,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north2) -"aye" = ( -/obj/structure/bed/chair, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering) "ayi" = ( /obj/structure/machinery/recharger, /obj/structure/surface/table/almayer, @@ -4835,6 +4771,15 @@ }, /turf/open/floor/almayer, /area/almayer/command/cichallway) +"azT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "azU" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -5174,15 +5119,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering) -"aBl" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering) "aBm" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -5570,11 +5506,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) -"aDh" = ( -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering) "aDi" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door/window/westright, @@ -6017,14 +5948,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/telecomms) -"aFl" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/upper_engineering) "aFm" = ( /obj/structure/surface/table/almayer, /obj/item/shard, @@ -8455,6 +8378,15 @@ icon_state = "kitchen" }, /area/almayer/living/captain_mess) +"aSy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering) "aSA" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -10491,6 +10423,14 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"bfN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "bfO" = ( /obj/structure/pipes/vents/pump/on, /turf/open/floor/almayer, @@ -11909,6 +11849,26 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"bpx" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Interior"; + name = "\improper ARES Inner Chamber Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/core, +/obj/structure/sign/safety/laser{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 32; + pixel_y = 6 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "bpz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -12131,6 +12091,18 @@ /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, /area/almayer/living/offices) +"brc" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 10 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 4 + }, +/area/almayer/command/aist_office) "brf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/cameras/almayer_network/vehicle{ @@ -12610,6 +12582,18 @@ icon_state = "green" }, /area/almayer/living/offices) +"buH" = ( +/obj/effect/step_trigger/ares_alert/mainframe, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Mainframe Left"; + name = "\improper ARES Mainframe Shutters"; + plane = -7 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "buM" = ( /obj/structure/machinery/cm_vending/clothing/smartgun/bravo, /turf/open/floor/almayer{ @@ -13427,6 +13411,12 @@ icon_state = "blue" }, /area/almayer/hallways/upper/midship_hallway) +"bBL" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/hallways/upper/midship_hallway) "bBN" = ( /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, @@ -14090,15 +14080,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"bFg" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - layer = 3.3 - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "bFj" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -14533,18 +14514,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"bIp" = ( -/obj/effect/step_trigger/ares_alert/mainframe, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES Mainframe Left"; - name = "\improper ARES Mainframe Shutters"; - plane = -7 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "bIs" = ( /obj/structure/largecrate/supply/supplies/mre, /obj/structure/machinery/light/small{ @@ -16812,6 +16781,36 @@ icon_state = "test_floor4" }, /area/almayer/living/chapel) +"bWu" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -5; + 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"; + pixel_x = 6 + }, +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/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) "bWJ" = ( /obj/structure/machinery/shower{ dir = 4 @@ -17700,6 +17699,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"cfB" = ( +/obj/structure/machinery/sentry_holder/almayer/mini/aicore, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "cfE" = ( /turf/open/floor/almayer{ dir = 8; @@ -19521,6 +19526,17 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"czu" = ( +/obj/structure/stairs, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = 3; + vector_y = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_plates" + }, +/area/almayer/command/aist_office) "czN" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -19666,6 +19682,16 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) +"cCh" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering) "cCD" = ( /obj/structure/platform{ dir = 8; @@ -20086,21 +20112,6 @@ /obj/structure/sign/prop2, /turf/closed/wall/almayer, /area/almayer/shipboard/sea_office) -"cJI" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/machinery/disposal/delivery{ - density = 0; - desc = "A pneumatic delivery unit."; - icon_state = "delivery_engi"; - name = "Returns"; - pixel_y = 28; - pixel_x = 25 - }, -/obj/structure/surface/rack, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "cJK" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -21345,18 +21356,6 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/almayer, /area/almayer/engineering/lower/workshop/hangar) -"ddO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/upper/aft_hallway) "deg" = ( /obj/structure/platform_decoration{ dir = 1 @@ -21384,6 +21383,16 @@ "deH" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/warden_office) +"deM" = ( +/obj/structure/machinery/cm_vending/clothing/senior_officer{ + req_one_access_txt = "1;92"; + req_access = null + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 5 + }, +/area/almayer/command/aist_office) "deT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -21472,14 +21481,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) -"dgI" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, -/area/almayer/living/cafeteria_officer) "dha" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -22384,24 +22385,14 @@ "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" +"dzF" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" +/turf/open/floor/almayer{ + icon_state = "mono" }, -/area/almayer/command/airoom) +/area/almayer/hallways/upper/starboard) "dzG" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_y = 26 @@ -22840,16 +22831,6 @@ icon_state = "plate" }, /area/almayer/hallways/lower/vehiclehangar) -"dFN" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/disposalpipe/junction{ - dir = 2; - icon_state = "pipe-j2" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering) "dFR" = ( /turf/open/floor/almayer{ dir = 9; @@ -23036,6 +23017,12 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/p_bow) +"dJC" = ( +/obj/structure/machinery/sentry_holder/almayer/mini/aicore, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "dJG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -23390,6 +23377,14 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_midship_hallway) +"dRf" = ( +/obj/structure/disposalpipe/up/almayer{ + dir = 4; + id = "ares_vault_out"; + name = "aicore" + }, +/turf/closed/wall/almayer/aicore/hull, +/area/almayer/command/airoom) "dRh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -24500,13 +24495,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/grunt_rnr) -"ejx" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "silver" - }, -/area/almayer/hallways/upper/midship_hallway) "ejV" = ( /obj/structure/closet, /obj/item/device/flashlight/pen, @@ -24692,12 +24680,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"emL" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/hallways/upper/midship_hallway) "ene" = ( /turf/open/floor/almayer{ dir = 4; @@ -25148,13 +25130,18 @@ }, /area/almayer/shipboard/starboard_point_defense) "etM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /obj/effect/decal/warning_stripes{ icon_state = "S"; layer = 3.3 }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 4; + c_tag = "AI - Primary Processors"; + autoname = 0 }, /turf/open/floor/almayer/aicore/no_build{ icon_state = "ai_floor2" @@ -25549,6 +25536,17 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/briefing) +"eBo" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = -3; + vector_y = -1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "eBx" = ( /obj/structure/closet/emcloset/legacy, /turf/open/floor/almayer{ @@ -25695,15 +25693,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/bridgebunks) -"eDT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering) "eEc" = ( /obj/structure/machinery/light, /obj/effect/decal/warning_stripes{ @@ -25740,6 +25729,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/lower/starboard_midship_hallway) +"eFi" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "eFj" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -26103,6 +26100,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) +"eLI" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "eLX" = ( /obj/structure/bed/chair{ dir = 4 @@ -26271,36 +26274,6 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/workshop/hangar) -"eQj" = ( -/obj/structure/machinery/door_control{ - id = "ARES StairsUpper"; - name = "ARES Core Access"; - pixel_x = -5; - 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"; - pixel_x = 6 - }, -/obj/structure/surface/table/reinforced/almayer_B{ - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/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 @@ -26679,21 +26652,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/offices) -"eXy" = ( -/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/glowing/no_build{ - icon_state = "ai_floor3"; - light_range = 3 - }, -/area/almayer/command/airoom) "eXD" = ( /obj/structure/prop/invuln/lattice_prop{ dir = 1; @@ -26705,6 +26663,13 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_s) +"eYb" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/living/cafeteria_officer) "eYj" = ( /obj/structure/machinery/light{ dir = 8 @@ -26744,6 +26709,14 @@ icon_state = "plating" }, /area/almayer/squads/req) +"eYs" = ( +/obj/structure/disposalpipe/down/almayer{ + dir = 8; + id = "ares_vault_in"; + name = "aicore" + }, +/turf/closed/wall/almayer/aicore/hull, +/area/almayer/command/airoom) "eYu" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/squad_changer{ @@ -26831,6 +26804,19 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) +"eZs" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass{ + name = "\improper Engineering Reception" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering) "eZC" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -27166,6 +27152,19 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"feB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "feD" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -27208,6 +27207,19 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/perma) +"ffi" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor{ + dir = 2; + name = "\improper Officer's Cafeteria" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/cafeteria_officer) "ffq" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/head/hardhat{ @@ -27339,6 +27351,21 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) +"fht" = ( +/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/glowing/no_build{ + icon_state = "ai_floor3"; + light_range = 3 + }, +/area/almayer/command/airoom) "fhH" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -27540,6 +27567,25 @@ /obj/structure/blocker/fuelpump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"fnt" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/item/paper_bin/uscm{ + pixel_y = 6; + pixel_x = -12 + }, +/obj/item/tool/pen{ + pixel_x = -14 + }, +/obj/structure/machinery/aicore_lockdown{ + pixel_y = 4; + pixel_x = 3 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "fnv" = ( /obj/structure/machinery/light{ dir = 4 @@ -27878,17 +27924,6 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"frM" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - layer = 3.3 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer/aicore/glowing/no_build, -/area/almayer/command/airoom) "fsf" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -28692,14 +28727,6 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"fKe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "fKh" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/window, @@ -28858,26 +28885,14 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"fMt" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES Interior"; - name = "\improper ARES Inner Chamber Shutters"; - plane = -7 - }, -/obj/effect/step_trigger/ares_alert/core, -/obj/structure/sign/safety/laser{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/rewire{ - pixel_x = 32; - pixel_y = 6 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" +"fMz" = ( +/obj/item/bedsheet/yellow, +/obj/structure/bed, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 1 }, -/area/almayer/command/airoom) +/area/almayer/command/aist_office) "fME" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -29523,6 +29538,13 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"gaW" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/aicore_lockdown, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "gba" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/faxmachine/uscm/command{ @@ -30126,6 +30148,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"gmR" = ( +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 10 + }, +/area/almayer/command/aist_office) "gnu" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/green, @@ -31098,21 +31126,6 @@ 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 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore{ - plane = -6 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "gDk" = ( /obj/structure/sign/safety/stairs{ pixel_x = -15 @@ -31287,6 +31300,14 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"gGC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "gGI" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/light{ @@ -31828,6 +31849,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"gPo" = ( +/obj/structure/flora/pottedplant/random, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver" + }, +/area/almayer/command/aist_office) "gPA" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -31998,23 +32025,6 @@ icon_state = "plate" }, /area/almayer/hallways/lower/port_umbilical) -"gTH" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/skills{ - dir = 4; - pixel_y = 18 - }, -/obj/structure/machinery/computer/secure_data{ - dir = 4 - }, -/obj/structure/machinery/computer/med_data/laptop{ - dir = 4; - pixel_y = -18 - }, -/turf/open/floor/almayer/aicore/glowing/no_build{ - icon_state = "ai_floor3" - }, -/area/almayer/command/airoom) "gTK" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -32912,6 +32922,21 @@ icon_state = "greencorner" }, /area/almayer/hallways/lower/starboard_midship_hallway) +"hiX" = ( +/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 = 7; + pixel_y = 28; + range = 0 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "hji" = ( /obj/structure/bed/chair{ dir = 4 @@ -35397,18 +35422,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"iav" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "orangecorner" - }, -/area/almayer/engineering/upper_engineering) "iaF" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -35649,14 +35662,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) -"igr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "igs" = ( /obj/structure/surface/table/almayer, /obj/item/fuel_cell, @@ -35690,6 +35695,12 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/p_bow) +"ihe" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "iho" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -35953,23 +35964,6 @@ /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/disposalpipe/up/almayer{ - id = "ares_vault_in"; - name = "aicore"; - dir = 2 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "inh" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -36003,6 +35997,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"ioh" = ( +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 6 + }, +/area/almayer/command/aist_office) "ios" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/paper_bin/uscm{ @@ -36373,6 +36373,22 @@ }, /turf/open/floor/plating, /area/almayer/maint/lower/constr) +"ivd" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES AIST"; + name = "\improper Privacy Shutters" + }, +/obj/structure/machinery/door/airlock/almayer/generic/glass{ + name = "\improper AIST Office"; + dir = 1; + req_one_access_txt = "90;91;92"; + masterkey_resist = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_plates" + }, +/area/almayer/command/aist_office) "ivf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/camera, @@ -36586,14 +36602,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"izf" = ( -/obj/structure/disposalpipe/up/almayer{ - dir = 4; - id = "ares_vault_out"; - name = "aicore" - }, -/turf/closed/wall/almayer/aicore/hull, -/area/almayer/command/airoom) "izk" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -36603,6 +36611,33 @@ icon_state = "plate" }, /area/almayer/living/offices) +"izE" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown"; + pixel_x = -12; + pixel_y = 26 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown Override"; + pixel_x = -2; + pixel_y = 26 + }, +/obj/structure/machinery/computer/cameras/almayer/ares{ + dir = 4 + }, +/obj/structure/machinery/aicore_lockdown{ + icon_state = "big_red_button_wallv"; + pixel_x = 8; + pixel_y = 26 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "izG" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -37030,11 +37065,6 @@ icon_state = "plate" }, /area/almayer/maint/upper/u_a_s) -"iJs" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering) "iJB" = ( /obj/structure/sign/safety/galley{ pixel_x = 8; @@ -38000,6 +38030,14 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_lobby) +"iYc" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/maint/hull/lower/l_a_s) "iYe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -38231,33 +38269,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) -"jbN" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/machinery/door_control/brbutton{ - id = "Brig Lockdown Shutters"; - name = "Brig Lockdown"; - pixel_x = -12; - pixel_y = 26 - }, -/obj/structure/machinery/door_control/brbutton{ - id = "ARES StairsLock"; - name = "ARES Exterior Lockdown Override"; - pixel_x = -2; - pixel_y = 26 - }, -/obj/structure/machinery/computer/cameras/almayer/ares{ - dir = 4 - }, -/obj/structure/machinery/aicore_lockdown{ - icon_state = "big_red_button_wallv"; - pixel_x = 8; - pixel_y = 26 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "jbX" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -38288,6 +38299,24 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_p) +"jcJ" = ( +/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/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "jcP" = ( /turf/open/floor/almayer{ icon_state = "plating_striped" @@ -38326,6 +38355,15 @@ /obj/structure/largecrate/random/case/small, /turf/open/floor/plating, /area/almayer/maint/lower/constr) +"jdw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/upper_engineering) "jdC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -38761,6 +38799,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/vehiclehangar) +"jjR" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/engineering/upper_engineering) "jjS" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -39201,18 +39251,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_midship_hallway) -"jqP" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES Interior"; - name = "\improper ARES Inner Chamber Shutters"; - plane = -7 - }, -/obj/effect/step_trigger/ares_alert/core, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "jqY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -39783,6 +39821,18 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) +"jBc" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Interior"; + name = "\improper ARES Inner Chamber Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/core, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "jBy" = ( /obj/structure/machinery/light{ dir = 4 @@ -40111,13 +40161,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) -"jIs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/upper/midship_hallway) "jIC" = ( /obj/structure/machinery/computer/working_joe{ dir = 4; @@ -40139,6 +40182,21 @@ /obj/structure/machinery/faxmachine/uscm/brig/chief, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"jIU" = ( +/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 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore{ + plane = -6 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "jIV" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -40592,6 +40650,16 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) +"jRP" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-y" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/aft_hallway) "jRS" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -41222,6 +41290,24 @@ allow_construction = 0 }, /area/almayer/hallways/upper/fore_hallway) +"kbr" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/folder/white{ + pixel_x = -12 + }, +/obj/item/paper_bin/uscm{ + pixel_y = 6 + }, +/obj/item/tool/pen/fountain{ + pixel_y = 3 + }, +/obj/item/tool/pen/fountain{ + pixel_y = 9 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver" + }, +/area/almayer/command/aist_office) "kbv" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/starboard) @@ -41337,6 +41423,22 @@ "kcN" = ( /turf/closed/wall/almayer/reinforced/temphull, /area/almayer/living/commandbunks) +"kdb" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 9 + }, +/area/almayer/command/aist_office) "kde" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/general_equipment) @@ -42486,6 +42588,11 @@ "kyw" = ( /turf/closed/wall/almayer/outer, /area/almayer/maint/hull/lower/l_m_s) +"kyK" = ( +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "kyN" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/safety/distribution_pipes{ @@ -42696,6 +42803,15 @@ icon_state = "cargo" }, /area/almayer/living/tankerbunks) +"kCb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/upper_engineering) "kCd" = ( /obj/structure/machinery/gear{ id = "vehicle_elevator_gears" @@ -42776,6 +42892,17 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) +"kCK" = ( +/obj/structure/stairs, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -3; + vector_y = -1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "ai_floor3" + }, +/area/almayer/command/airoom) "kCY" = ( /obj/structure/machinery/sleep_console{ dir = 8 @@ -42809,16 +42936,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) -"kDH" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering) "kDK" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/wood/ship, @@ -42987,6 +43104,12 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"kGL" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "kGQ" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 @@ -43343,14 +43466,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"kNV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/hallways/upper/starboard) "kNX" = ( /obj/structure/bed/chair/comfy/charlie{ dir = 1 @@ -43928,6 +44043,18 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"kXv" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/structure/machinery/computer/working_joe{ + dir = 8; + pixel_x = 29 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "kXw" = ( /turf/open/floor/almayer{ dir = 1; @@ -44106,19 +44233,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) -"laQ" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass{ - name = "\improper Engineering Reception" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/upper_engineering) "laU" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -44882,6 +44996,13 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"lop" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/midship_hallway) "lou" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -45332,6 +45453,15 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"lwD" = ( +/obj/structure/stairs, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = -3; + vector_y = -1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "lwG" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /turf/open/floor/almayer{ @@ -45553,6 +45683,11 @@ }, /turf/open/floor/carpet, /area/almayer/command/cichallway) +"lAH" = ( +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver" + }, +/area/almayer/command/aist_office) "lAQ" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -45669,6 +45804,15 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"lDs" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 1 + }, +/area/almayer/command/aist_office) "lDA" = ( /obj/structure/sign/safety/bulkhead_door{ pixel_x = 8; @@ -46118,15 +46262,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/upper/midship_hallway) -"lLA" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/upper/midship_hallway) "lLC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer, @@ -46352,6 +46487,23 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"lPG" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/structure/machinery/computer/working_joe{ + layer = 3.3; + dir = 8 + }, +/obj/item/desk_bell/ares{ + pixel_y = 14; + pixel_x = -5; + anchored = 1 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "lPO" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -47625,15 +47777,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/lower/starboard_umbilical) -"mpZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering) "mqb" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -47727,6 +47870,9 @@ icon_state = "green" }, /area/almayer/squads/req) +"mrS" = ( +/turf/closed/wall/almayer/aicore/white/hull, +/area/almayer/command/aist_office) "msg" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/waterhazard{ @@ -47875,16 +48021,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"mux" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering) "muy" = ( /obj/effect/landmark/start/marine/engineer/alpha, /obj/effect/landmark/late_join/alpha, @@ -48034,6 +48170,21 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/stern) +"myj" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/machinery/disposal/delivery{ + density = 0; + desc = "A pneumatic delivery unit."; + icon_state = "delivery_engi"; + name = "Returns"; + pixel_y = 28; + pixel_x = 25 + }, +/obj/structure/surface/rack, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "myl" = ( /obj/structure/machinery/power/apc/almayer/hardened{ cell_type = /obj/item/cell/hyper; @@ -48182,14 +48333,6 @@ icon_state = "blue" }, /area/almayer/living/port_emb) -"mAe" = ( -/obj/structure/window/framed/almayer/aicore/hull/black/hijack_bustable, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown{ - plane = -6; - dir = 4 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "mAp" = ( /obj/structure/surface/table/almayer, /obj/effect/spawner/random/tool, @@ -48309,6 +48452,29 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"mBA" = ( +/obj/structure/surface/table/reinforced/almayer_B{ + climbable = 0; + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/structure/machinery/computer/cameras/almayer/ares{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/structure/machinery/computer/cameras/almayer{ + pixel_y = 6; + pixel_x = 28 + }, +/obj/structure/machinery/computer/view_objectives{ + pixel_x = 12; + pixel_y = 6 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "mBJ" = ( /obj/structure/stairs{ icon_state = "ramptop" @@ -48330,6 +48496,23 @@ icon_state = "plate" }, /area/almayer/maint/upper/u_a_p) +"mCn" = ( +/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/disposalpipe/up/almayer{ + id = "ares_vault_in"; + name = "aicore"; + dir = 2 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "mCo" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -48518,18 +48701,6 @@ allow_construction = 0 }, /area/almayer/hallways/lower/starboard_midship_hallway) -"mFN" = ( -/obj/effect/step_trigger/ares_alert/mainframe, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES Mainframe Right"; - name = "\improper ARES Mainframe Shutters"; - plane = -7 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "mFO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -48746,6 +48917,16 @@ icon_state = "blue" }, /area/almayer/hallways/upper/midship_hallway) +"mIV" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering) "mJa" = ( /obj/structure/closet/crate/trashcart, /obj/item/trash/boonie, @@ -49175,6 +49356,13 @@ allow_construction = 0 }, /area/almayer/hallways/lower/port_fore_hallway) +"mQB" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/aft_hallway) "mQC" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/port_atmos) @@ -49188,26 +49376,6 @@ icon_state = "test_floor4" }, /area/almayer/maint/hull/lower/l_m_s) -"mRn" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES Interior"; - name = "\improper ARES Inner Chamber Shutters"; - plane = -7 - }, -/obj/effect/step_trigger/ares_alert/core, -/obj/structure/sign/safety/terminal{ - pixel_x = -18; - pixel_y = -8 - }, -/obj/structure/sign/safety/fibre_optics{ - pixel_x = -18; - pixel_y = 6 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "mRq" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, @@ -50183,6 +50351,11 @@ icon_state = "plate" }, /area/almayer/command/corporateliaison) +"ngZ" = ( +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "nhi" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -50500,6 +50673,15 @@ light_range = 3 }, /area/almayer/command/airoom) +"nkU" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver" + }, +/area/almayer/command/aist_office) "nkX" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/terminal{ @@ -50761,14 +50943,6 @@ }, /turf/open/floor/plating, /area/almayer/engineering/starboard_atmos) -"npq" = ( -/obj/structure/disposalpipe/down/almayer{ - dir = 8; - id = "ares_vault_in"; - name = "aicore" - }, -/turf/closed/wall/almayer/aicore/hull, -/area/almayer/command/airoom) "npt" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -50807,6 +50981,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/lobby) +"npW" = ( +/obj/effect/step_trigger/ares_alert/mainframe, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Mainframe Right"; + name = "\improper ARES Mainframe Shutters"; + plane = -7 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "nqe" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -51854,21 +52040,16 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"nKO" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 +"nKK" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" }, -/obj/structure/disposaloutlet{ - density = 0; - desc = "An outlet for the pneumatic delivery system."; - icon_state = "delivery_outlet"; - name = "take-ins"; - pixel_x = 7; - pixel_y = 28; - range = 0 +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) +/area/almayer/engineering/upper_engineering) "nKP" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -51987,19 +52168,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"nNA" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - layer = 3.3 - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "nNH" = ( /turf/open/floor/almayer{ dir = 1; @@ -52629,19 +52797,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"nYg" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - layer = 3.3 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "nYi" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ @@ -52752,6 +52907,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"oas" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "kitchen" + }, +/area/almayer/living/cafeteria_officer) "oaw" = ( /obj/structure/closet/firecloset, /obj/item/clothing/mask/gas, @@ -53048,6 +53211,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"ofJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/upper_engineering) "ofK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -53145,6 +53314,18 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"ohC" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper AIST Office"; + dir = 1; + req_one_access_txt = "31;92"; + masterkey_resist = 1 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "ohE" = ( /obj/structure/machinery/landinglight/ds1/delayone{ dir = 4 @@ -54649,6 +54830,15 @@ /obj/effect/step_trigger/clone_cleaner, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/fore_hallway) +"oFD" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/midship_hallway) "oFV" = ( /obj/structure/sign/poster{ pixel_x = -32; @@ -55199,17 +55389,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"oOW" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/junction{ - dir = 2; - icon_state = "pipe-j2" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering) "oOZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -55338,12 +55517,33 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) +"oRb" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "oRk" = ( /turf/open/floor/almayer{ dir = 4; icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"oRl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "oRm" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Port Viewing Room" @@ -55449,6 +55649,18 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_m_s) +"oSI" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering) "oSL" = ( /obj/structure/window/reinforced{ dir = 8 @@ -55815,20 +56027,6 @@ icon_state = "silver" }, /area/almayer/hallways/lower/repair_bay) -"oYZ" = ( -/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/glowing/no_build{ - icon_state = "ai_floor3"; - light_range = 3 - }, -/area/almayer/command/airoom) "oZp" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light, @@ -56162,6 +56360,26 @@ "pep" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/upper/u_f_p) +"peL" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES Interior"; + name = "\improper ARES Inner Chamber Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/core, +/obj/structure/sign/safety/terminal{ + pixel_x = -18; + pixel_y = -8 + }, +/obj/structure/sign/safety/fibre_optics{ + pixel_x = -18; + pixel_y = 6 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "peM" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -56486,6 +56704,19 @@ icon_state = "ai_floor3" }, /area/almayer/command/airoom) +"plc" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door_control{ + id = "ARES AIST"; + name = "ARES Core Lockdown"; + pixel_x = 24; + pixel_y = 8; + req_one_access_txt = "31;92" + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "pld" = ( /obj/item/book/manual/medical_diagnostics_manual, /obj/structure/surface/rack, @@ -56894,6 +57125,21 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"pts" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build, +/area/almayer/command/airoom) "ptv" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/platform{ @@ -57179,6 +57425,9 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/bravo) +"pym" = ( +/turf/closed/wall/almayer/aicore/white/reinforced, +/area/almayer/command/aist_office) "pyx" = ( /obj/structure/machinery/door_display/research_cell{ dir = 4; @@ -57302,12 +57551,6 @@ "pzW" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/hallways/lower/vehiclehangar) -"pzX" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering) "pAm" = ( /turf/open/floor/almayer, /area/almayer/engineering/lower/engine_core) @@ -57788,6 +58031,15 @@ icon_state = "blue" }, /area/almayer/hallways/upper/midship_hallway) +"pLH" = ( +/obj/structure/machinery/camera/autoname/almayer/containment/ares{ + dir = 4 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 8 + }, +/area/almayer/command/aist_office) "pLO" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -57826,6 +58078,17 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north2) +"pMn" = ( +/obj/structure/stairs, +/obj/effect/step_trigger/teleporter_vector{ + name = "Almayer_AresUp"; + vector_x = 3; + vector_y = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "pMp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -58187,6 +58450,10 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"pTg" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/aft_hallway) "pTj" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -58484,6 +58751,14 @@ icon_state = "red" }, /area/almayer/hallways/lower/starboard_midship_hallway) +"pYl" = ( +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "pYo" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -59109,12 +59384,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"qit" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "qiy" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -59681,6 +59950,22 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"qrz" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "ARES StairsLower"; + name = "\improper ARES Core Shutters"; + plane = -7 + }, +/obj/effect/step_trigger/ares_alert/public{ + alert_id = "AresStairs"; + alert_message = "Caution: Movement detected in ARES Core."; + cooldown_duration = 1200 + }, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "qsp" = ( /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, @@ -59693,13 +59978,6 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) -"qsG" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/upper/aft_hallway) "qsL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -60576,16 +60854,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"qHD" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/upper/aft_hallway) "qHG" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -60932,16 +61200,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"qMI" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/junction{ - dir = 2; - icon_state = "pipe-y" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/upper/aft_hallway) "qMP" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -61223,6 +61481,27 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"qSH" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/transmitter/rotary{ + name = "Office Telephone"; + phone_category = "ARES"; + phone_color = "blue"; + phone_id = "AIST Office"; + pixel_x = 8; + pixel_y = 9 + }, +/obj/structure/machinery/aicore_lockdown{ + pixel_x = -5 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver" + }, +/area/almayer/command/aist_office) "qSI" = ( /obj/structure/surface/table/almayer, /obj/item/tank/oxygen/red, @@ -62571,6 +62850,15 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/p_bow) +"ror" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering) "rou" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -63157,6 +63445,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) +"rAt" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/upper_engineering) "rAw" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -64030,15 +64325,6 @@ icon_state = "silver" }, /area/almayer/hallways/lower/repair_bay) -"rOz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - layer = 3.3 - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "rOC" = ( /obj/structure/machinery/light{ dir = 1 @@ -64104,6 +64390,14 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower) +"rPV" = ( +/obj/structure/pipes/vents/scrubber/no_boom{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "rQc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -64349,6 +64643,17 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"rUz" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/junction{ + dir = 2; + icon_state = "pipe-j2" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering) "rUN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -64407,6 +64712,12 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/chief_mp_office) +"rWo" = ( +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 4 + }, +/area/almayer/command/aist_office) "rWs" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -64423,6 +64734,14 @@ "rWz" = ( /turf/open/floor/plating, /area/almayer/maint/upper/u_m_s) +"rWG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "rWL" = ( /obj/structure/barricade/metal, /turf/open/floor/almayer{ @@ -64593,6 +64912,12 @@ icon_state = "plate" }, /area/almayer/maint/upper/u_a_s) +"rZj" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/paper_bin/uscm, +/obj/item/tool/pen, +/turf/open/floor/plating, +/area/almayer/command/airoom) "rZt" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -65652,15 +65977,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) -"sqo" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering) "sqW" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/tomatoseed, @@ -65779,6 +66095,14 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) +"sts" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "stu" = ( /obj/structure/machinery/sentry_holder/almayer, /turf/open/floor/almayer{ @@ -66126,6 +66450,16 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"szQ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 1 + }, +/area/almayer/command/aist_office) "szU" = ( /obj/structure/toilet{ dir = 8 @@ -66141,13 +66475,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"sAw" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering) "sAz" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -66570,6 +66897,14 @@ /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/p_bow) +"sIz" = ( +/obj/structure/window/framed/almayer/aicore/hull/black/hijack_bustable, +/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown{ + plane = -6; + dir = 4 + }, +/turf/open/floor/almayer/aicore/no_build, +/area/almayer/command/airoom) "sIA" = ( /obj/structure/sign/poster{ desc = "This poster features Audrey Rainwater standing in a jacuzzi. She was the July 2182 centerfold in House Bunny Gentleman's Magazine. Don't ask how you know that."; @@ -67077,6 +67412,14 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"sTz" = ( +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 6 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "sTU" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -67136,6 +67479,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"sUu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + layer = 3.3 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "sUE" = ( /obj/structure/surface/table/reinforced/almayer_B, /turf/open/floor/almayer{ @@ -67503,6 +67859,11 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"tag" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering) "tan" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -67868,6 +68229,13 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/port_midship_hallway) +"tgE" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "silver" + }, +/area/almayer/hallways/upper/midship_hallway) "tgJ" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/warden_office) @@ -69091,6 +69459,18 @@ icon_state = "cargo_arrow" }, /area/almayer/shipboard/starboard_missiles) +"tzb" = ( +/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/ai_lockdown, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "tzd" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -69337,6 +69717,11 @@ icon_state = "plate" }, /area/almayer/command/cic) +"tCX" = ( +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering) "tDZ" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -69403,18 +69788,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"tFe" = ( -/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/ai_lockdown, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "tFJ" = ( /obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ @@ -69552,6 +69925,15 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) +"tHy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 3.3 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "ai_floor2" + }, +/area/almayer/command/airoom) "tHF" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -69694,6 +70076,14 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"tJG" = ( +/obj/structure/pipes/vents/pump/no_boom{ + dir = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver" + }, +/area/almayer/command/aist_office) "tJR" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/sign/safety/medical{ @@ -69773,6 +70163,15 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"tLf" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 8 + }, +/area/almayer/command/aist_office) "tLZ" = ( /turf/open/floor/almayer{ icon_state = "green" @@ -69849,6 +70248,30 @@ icon_state = "plate" }, /area/almayer/maint/upper/u_a_s) +"tOj" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_cargo" + }, +/area/almayer/command/aist_office) "tOr" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -70298,14 +70721,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"tXn" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/maint/hull/lower/l_a_s) "tXo" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -70729,10 +71144,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) -"uez" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/hallways/upper/aft_hallway) "ueG" = ( /obj/item/bedsheet/orange, /obj/structure/bed{ @@ -70963,14 +71374,6 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"ujn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E" - }, -/turf/open/floor/almayer/aicore/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "ujz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -71510,6 +71913,14 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/starboard_hallway) +"uuo" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/cafeteria_officer) "uuu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -72913,25 +73324,6 @@ }, /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; - pixel_x = -12 - }, -/obj/item/tool/pen{ - pixel_x = -14 - }, -/obj/structure/machinery/aicore_lockdown{ - pixel_y = 4; - pixel_x = 3 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "uVc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -73160,6 +73552,15 @@ icon_state = "orange" }, /area/almayer/engineering/lower) +"uYt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/upper_engineering) "uYM" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -73485,6 +73886,13 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"vep" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 1 + }, +/area/almayer/command/aist_office) "veq" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ @@ -73635,6 +74043,18 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"vgK" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/sign/safety/terminal{ + pixel_y = 26; + pixel_x = 8; + layer = 2.2 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 1 + }, +/area/almayer/command/aist_office) "vgO" = ( /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell) @@ -74115,12 +74535,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"vnM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/upper/starboard) "vnY" = ( /turf/open/floor/almayer, /area/almayer/hallways/lower/repair_bay) @@ -74250,23 +74664,6 @@ /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/structure/machinery/computer/working_joe{ - layer = 3.3; - dir = 8 - }, -/obj/item/desk_bell/ares{ - pixel_y = 14; - pixel_x = -5; - anchored = 1 - }, -/turf/open/floor/almayer/aicore/no_build, -/area/almayer/command/airoom) "vpI" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -74525,6 +74922,21 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"vsO" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/skills{ + dir = 4; + pixel_y = 18 + }, +/obj/structure/machinery/computer/secure_data{ + dir = 4 + }, +/obj/structure/machinery/computer/med_data/laptop{ + dir = 4; + pixel_y = -18 + }, +/turf/open/floor/plating, +/area/almayer/command/airoom) "vta" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -75171,24 +75583,6 @@ /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/no_build{ - icon_state = "ai_floor2" - }, -/area/almayer/command/airoom) "vCO" = ( /obj/effect/landmark/start/bridge, /turf/open/floor/plating/plating_catwalk, @@ -75592,6 +75986,12 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) +"vJA" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/turf/open/floor/almayer/aicore/no_build{ + icon_state = "w_ai_floor1" + }, +/area/almayer/command/aist_office) "vJR" = ( /obj/structure/barricade/handrail, /turf/open/floor/plating/plating_catwalk, @@ -75723,6 +76123,12 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie) +"vLD" = ( +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 8 + }, +/area/almayer/command/aist_office) "vMb" = ( /obj/item/stool{ pixel_x = -15; @@ -76577,6 +76983,16 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower) +"vXs" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/aft_hallway) "vXv" = ( /obj/structure/machinery/light{ dir = 1 @@ -76766,6 +77182,20 @@ icon_state = "cargo" }, /area/almayer/hallways/upper/fore_hallway) +"wbp" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering) "wbu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname/almayer{ @@ -76800,6 +77230,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"wbD" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/aft_hallway) "wbJ" = ( /obj/structure/machinery/door_control/airlock{ id = "n_engi"; @@ -77383,22 +77825,6 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"wkM" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "ARES StairsLower"; - name = "\improper ARES Core Shutters"; - plane = -7 - }, -/obj/effect/step_trigger/ares_alert/public{ - alert_id = "AresStairs"; - alert_message = "Caution: Movement detected in ARES Core."; - cooldown_duration = 1200 - }, -/obj/structure/machinery/door/poddoor/almayer/blended/ai_lockdown/aicore, -/turf/open/floor/almayer/no_build{ - icon_state = "test_floor4" - }, -/area/almayer/command/airoom) "wkX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -77895,6 +78321,19 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_a_s) +"wtp" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = 3; + vector_y = 1 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "wty" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -78261,13 +78700,6 @@ icon_state = "test_floor4" }, /area/almayer/maint/hull/lower/l_m_s) -"wyQ" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/aicore_lockdown, -/turf/open/floor/almayer/no_build{ - icon_state = "plating" - }, -/area/almayer/command/airoom) "wzy" = ( /obj/effect/step_trigger/clone_cleaner, /turf/open/floor/plating/plating_catwalk, @@ -78290,6 +78722,26 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) +"wAs" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_AresUp"; + vector_x = 3; + vector_y = 1 + }, +/obj/structure/machinery/door_control{ + id = "ARES AIST"; + name = "ARES Core Lockdown"; + pixel_x = 24; + pixel_y = -8; + req_one_access_txt = "31;92" + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_plates" + }, +/area/almayer/command/aist_office) "wAE" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -79233,6 +79685,15 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wQr" = ( +/obj/structure/pipes/vents/pump/no_boom/gas{ + vent_tag = "AIST Office"; + dir = 8 + }, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_floor3" + }, +/area/almayer/command/aist_office) "wQu" = ( /obj/effect/projector{ name = "Almayer_Up3"; @@ -79287,6 +79748,20 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"wRK" = ( +/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/glowing/no_build{ + icon_state = "ai_floor3"; + light_range = 3 + }, +/area/almayer/command/airoom) "wRN" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/seeds/goldappleseed, @@ -79616,6 +80091,13 @@ icon_state = "containment_corner_variant_2" }, /area/almayer/medical/containment/cell) +"wWo" = ( +/obj/structure/bed/chair, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering) "wWq" = ( /obj/structure/surface/table/reinforced/black, /obj/item/clothing/suit/space/compression/uscm, @@ -80032,13 +80514,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) -"xfm" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/plating, -/area/almayer/living/cafeteria_officer) "xfq" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -81298,6 +81773,14 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"xAX" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering) "xAY" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -82279,6 +82762,16 @@ icon_state = "red" }, /area/almayer/hallways/lower/starboard_midship_hallway) +"xSy" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering) "xSz" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/status_display{ @@ -82635,15 +83128,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"xYZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering) "xZk" = ( /obj/item/prop/helmetgarb/gunoil{ layer = 4.2; @@ -82784,6 +83268,17 @@ }, /turf/open/floor/almayer/aicore/no_build, /area/almayer/command/airoom) +"yaV" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper AIST Office"; + req_access = null; + req_one_access_txt = "90;91;92" + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer/no_build{ + icon_state = "test_floor4" + }, +/area/almayer/command/airoom) "yaX" = ( /obj/structure/machinery/door/poddoor/railing{ dir = 2; @@ -82836,6 +83331,14 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/lower/port_umbilical) +"ybX" = ( +/obj/effect/landmark/late_join/aist, +/obj/effect/landmark/start/aist, +/turf/open/floor/almayer/aicore/glowing/no_build{ + icon_state = "w_ai_silver"; + dir = 1 + }, +/area/almayer/command/aist_office) "ybZ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/transmitter{ @@ -102289,7 +102792,7 @@ jUV cmr agj agj -jbN +izE mTc hkX yfG @@ -120159,10 +120662,10 @@ sVV sVV sVV sVV -vnM -lLA -ejx -jIs +eLI +oFD +tgE +lop xLw vOy woh @@ -120362,7 +120865,7 @@ xMz lIY gxn aMy -kNV +dzF wNC wlr xyp @@ -120565,7 +121068,7 @@ njn ael ael agQ -aih +ffi ael hyT lGh @@ -120768,7 +121271,7 @@ lzt ael afE agT -dgI +oas ael ogT yiu @@ -120971,7 +121474,7 @@ jFM ael afH agV -ain +uuo ael cQC poD @@ -121175,7 +121678,7 @@ ael afI agY aiq -xfm +eYb xIj qdJ iCg @@ -121378,7 +121881,7 @@ ael afJ agY aiq -xfm +eYb xIj qdJ xIj @@ -121387,7 +121890,7 @@ onU onU qwJ cOV -imS +mCn rxl xQV qQS @@ -121587,10 +122090,10 @@ qdJ xIj mOi vRA -oYZ +wRK ezq -eXy -tFe +fht +tzb xQV pax tCC @@ -121793,10 +122296,10 @@ mAs mAs flR uMO -tFe +tzb xVc xQV -vpH +lPG aqU gjB wDy @@ -121997,9 +122500,9 @@ mOi mOi mOi mOi -mAe -mAe -mAe +sIz +sIz +sIz aqU jVE nTs @@ -122202,7 +122705,7 @@ tqu aqU gpW ofY -eQj +bWu aqU lyE rsO @@ -122608,7 +123111,7 @@ ryn mOi xdA qQS -uUB +fnt aqU aHq cnH @@ -124425,8 +124928,8 @@ asA msS nZf rho -jIs -emL +lop +bBL jvY jvY jvY @@ -125643,7 +126146,7 @@ aep aep aep umI -ddO +wbD umI jvY alL @@ -126252,7 +126755,7 @@ oVo oVo cMx nSw -qsG +mQB qhT jvY jvY @@ -126455,7 +126958,7 @@ fIK fIK wuS tzF -qsG +mQB qhT alL urM @@ -126667,7 +127170,7 @@ arq arq arq aze -xYZ +jdw aDe arq arq @@ -126861,20 +127364,20 @@ oVo rYU cMx nXV -qMI +jRP rUN -aqg -oOW +xSy +rUz atn atn atn -sAw +rAt anP aBh anP anP -iJs -dFN +tag +mIV atn aOB aRj @@ -127067,7 +127570,7 @@ sHI lOn acQ kwd -eDT +aSy amx amx amx @@ -127077,7 +127580,7 @@ amx amx amx amx -mpZ +kCb amx aoT kwd @@ -127270,17 +127773,17 @@ sHI jao qhT alO -ars +wbp amx amx aqf -pzX +ofJ amx amx amx amx amx -mpZ +kCb amx aOC alO @@ -127473,7 +127976,7 @@ kYb jao qhT inw -eDT +aSy amx amx amx @@ -127676,15 +128179,15 @@ sHI jao qhT inw -eDT +aSy amx auB -aqh -sqo -sqo -aDh -aDh -mux +oSI +ror +ror +tCX +tCX +nKK aya aBo amx @@ -127888,7 +128391,7 @@ aqY aBi aDi alO -aye +wWo aBo amx aBs @@ -128091,8 +128594,8 @@ amw anO aDj inw -aye -mpZ +wWo +kCb amx aBs alO @@ -128294,8 +128797,8 @@ azh aBk aoT inw -aye -mpZ +wWo +kCb amx aBs alO @@ -128494,11 +128997,11 @@ aoT alO aOG amA -kDH +cCh aOB -laQ +eZs arr -iav +jjR atc aOF alO @@ -128697,9 +129200,9 @@ aoT alO axA amA -aBl +uYt aoT -aFl +xAX arm aIU aMq @@ -129297,7 +129800,7 @@ whO whO bYL dlT -qHD +vXs qhT alO arA @@ -129906,7 +130409,7 @@ jhx dnH gpc tzF -uez +pTg qhT wDM uto @@ -132641,7 +133144,7 @@ jEM gCu jEM jEM -tXn +iYc jEM jEM jEM @@ -136466,21 +136969,21 @@ aKQ aaa aaa aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak +aak bdH bdH bdH @@ -136668,7 +137171,6 @@ aaa aKQ aaa aaa -aak bdH bdH bdH @@ -136684,6 +137186,7 @@ bdH bdH bdH bdH +aak bdH bdH bdH @@ -136871,7 +137374,7 @@ aaa aKQ aaa aaa -aab +aaa aaa bdH bdH @@ -136886,7 +137389,7 @@ bdH bdH bdH bdH -bdH +aak bdH bdH bdH @@ -137073,23 +137576,23 @@ aaa aaa aKQ aaa -bdH -aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn +iBn bdH bdH bdH +aak bdH aaa aaa @@ -137276,23 +137779,23 @@ aaa aaa aKQ aaa -bdH -aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +iBn +mrS +mrS +mrS +mrS +mrS +mrS +mrS +mrS +mrS +mrS +iBn +iBn bdH bdH bdH +aak bdH aaa aaa @@ -137479,23 +137982,23 @@ aaa aaa aKQ aaa -bdH -aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +iBn +mrS +tOj +tLf +gmR +pym +kdb +vLD +pLH +gmR +mrS +iBn +iBn bdH bdH bdH +aak bdH aaa aaa @@ -137682,23 +138185,23 @@ aaa aaa aKQ aaa -bdH -aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +iBn +mrS +ybX +sTz +ihe +ohC +ihe +rPV +ngZ +lAH +mrS +iBn +iBn bdH bdH bdH +aak bdH aaa aaa @@ -137885,23 +138388,23 @@ aaa aaa aKQ aaa -bdH -aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +iBn +mrS +fMz +oRb +gPo +pym +mBA +kXv +cfB +qSH +mrS +iBn +iBn bdH bdH bdH +aak bdH aaa aaa @@ -138088,23 +138591,23 @@ aaa aaa aKQ aaa -bdH -aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +iBn +mrS +vep +pYl +tJG +pym +vgK +vJA +vJA +kbr +mrS +iBn +iBn bdH bdH bdH +aak bdH aaa aaa @@ -138290,24 +138793,24 @@ aab aaa aaa aKQ -aaa -bdH -aak -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH bdH +iBn +mrS +vep +sts +gPo +pym +lDs +ngZ +ngZ +lAH +mrS +iBn +iBn bdH bdH bdH +aak bdH aaa aaa @@ -138494,22 +138997,22 @@ aaa aaa aKQ bdH +iBn +mrS +deM +brc +ihe +ohC +ihe +kGL +eFi +nkU +mrS +iBn +iBn +bdH +bdH bdH -aak -aak -aak -aak -aak -aak -aak -aak -aak -aak -aak -aak -aak -aak -aak aak bdH aaa @@ -138697,19 +139200,19 @@ bdH bdH aKQ bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +mrS +mrS +mrS +mrS +mrS +mrS +szQ +kyK +wQr +lAH +mrS +iBn +iBn bdH bdH bdH @@ -138899,20 +139402,20 @@ bdH bdH bdH aKQ -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH +lmz +mrS +czu +pMn +wtp +wAs +ivd +plc +rWo +rWo +ioh +mrS +iBn +iBn bdH bdH bdH @@ -139103,17 +139606,17 @@ lmz lmz lmz lmz -iBn -iBn -iBn -iBn -iBn -iBn -iBn -iBn -iBn -iBn -iBn +mrS +mrS +mrS +mrS +mrS +mrS +mrS +mrS +mrS +mrS +mrS iBn iBn bdH @@ -139305,12 +139808,12 @@ lmz lmz lmz lmz -lmz -lmz -lmz -lmz -lmz -lmz +daz +daz +daz +daz +daz +daz lmz lmz lmz @@ -139507,13 +140010,13 @@ lmz lmz lmz lmz -lmz -lmz -lmz -lmz -lmz -lmz -lmz +daz +jtj +eBo +eBo +kCK +lwD +daz lmz lmz lmz @@ -139711,10 +140214,10 @@ lmz lmz daz daz +yaV daz -daz -daz -daz +wnh +wnh daz daz daz @@ -139916,13 +140419,13 @@ daz vhe qQS cqm -gTH -qit +vsO +rZj ebN qQS gwn pfT -vCH +etM dyp daz lmz @@ -140121,11 +140624,11 @@ clw qQS sKY qQS -bIp -fKe +buH +bfN dDp -bFg -frM +tHy +pts lcg daz lmz @@ -140324,11 +140827,11 @@ eGr xDC dIn rby -bIp +buH euN -ujn +rWG sEK -etM +feB lcg daz lmz @@ -140528,10 +141031,10 @@ lnS uVv flf ebN -rOz +azT kBy kBy -nNA +oRl fPB daz lmz @@ -140719,7 +141222,7 @@ daz daz eKJ yaZ -ffE +dJC hZj clw daz @@ -140732,7 +141235,7 @@ roH ebN daz daz -daz +wnh wnh wnh daz @@ -140922,18 +141425,18 @@ daz jYH ubA cck -wyQ +gaW fmv ubA gMN -mRn +peL dJO vMt dkz aGk ktQ teZ -wkM +qrz ege hWP bZq @@ -141129,14 +141632,14 @@ nDy ffE ffE ffE -jqP +jBc cLo clw viB dIi qLS erN -wkM +qrz jvB jtj swx @@ -141332,14 +141835,14 @@ ios awu ydI aKs -fMt +bpx mEs gbm oBD lFj vyE mTr -wkM +qrz qNc jdl dpp @@ -141531,7 +142034,7 @@ daz daz eKJ yaZ -ffE +dJC hZj fQD daz @@ -141544,7 +142047,7 @@ gXs ebN daz daz -daz +wnh wnh wnh daz @@ -141948,11 +142451,11 @@ jrH xDC yaQ vLz -mFN +npW kSy -bFg +tHy dDp -nYg +sUu lcg daz lmz @@ -142151,10 +142654,10 @@ qRX qQS aCd qQS -mFN -igr +npW +gGC sEK -ujn +rWG mlb lcg daz @@ -142358,7 +142861,7 @@ ebN cxc kBy kBy -dzt +jcJ gyN daz lmz @@ -142746,7 +143249,7 @@ bdH bdH bdH bdH -izf +dRf hWM qQS hWM @@ -142950,7 +143453,7 @@ bdH bdH bdH vVk -cJI +myj fVx hWM ebN @@ -143153,10 +143656,10 @@ bdH bdH bdH fhR -nKO +hiX tmV qQS -gDh +jIU qQS qQS bMg @@ -143355,7 +143858,7 @@ bdH bdH bdH bdH -npq +eYs daz daz daz diff --git a/tgui/packages/tgui/interfaces/AresAdmin.js b/tgui/packages/tgui/interfaces/AresAdmin.js index dd51b5a1e007..45311e9a2d4b 100644 --- a/tgui/packages/tgui/interfaces/AresAdmin.js +++ b/tgui/packages/tgui/interfaces/AresAdmin.js @@ -25,6 +25,16 @@ const PAGES = { 'maintenance_management': () => MaintManagement, }; +const { data } = useBackend(); +const { is_pda } = data; +let remotelock = !is_pda; +let remotetip = 'You cannot do this via remote console.'; +let deletetip = remotetip; +if (!remotelock) { + remotetip = ''; + deletetip = 'Delete Record'; +} + export const AresAdmin = (props, context) => { const { data } = useBackend(context); const { current_menu, sudo } = data; @@ -329,13 +339,14 @@ const MainMenu = (props, context) => {