diff --git a/README.md b/README.md index 94ccaf07031f..abac21f624f0 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ ## CM-SS13 codebase -[![resentment](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://www.monkeyuser.com/assets/images/2019/131-bug-free.png) [![resentment](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://user-images.githubusercontent.com/8171642/50290880-ffef5500-043a-11e9-8270-a2e5b697c86c.png) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) + [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) [![Build Status](https://github.com/cmss13-devs/cmss13/workflows/CI%20Suite/badge.svg)](https://github.com/cmss13-devs/cmss13/actions?query=workflow%3A%22CI+Suite%22) - * **Website:** https://forum.cm-ss13.com/ * **Code:** https://github.com/cmss13-devs/cmss13 * **Wiki:** https://cm-ss13.com/wiki/Main_Page @@ -36,5 +35,3 @@ The code for CM-SS13 is licensed under the [GNU Affero General Public License v3 Assets including icons and sound are under the [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated. Authorship for assets including art and sound under the CC BY-SA license is defined as the active development team of CM-SS13 unless stated otherwise (by author of the commit). All code is assumed to be licensed under AGPL v3 unless stated otherwise by file header. Commits before 9a001bf520f889b434acd295253a1052420860af are assumed to be licensed under GPLv3 and can be used in closed source repo. - - diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 78d90c65ecb1..38e5693dcbe5 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -17,3 +17,9 @@ #define APPEARANCE_UI_IGNORE_ALPHA (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA|PIXEL_SCALE) /// Used for HUD objects #define APPEARANCE_UI (RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|PIXEL_SCALE) + +// Notification action types +#define NOTIFY_JUMP "jump" +#define NOTIFY_ATTACK "attack" +#define NOTIFY_ORBIT "orbit" +#define NOTIFY_JOIN_XENO "join_xeno" diff --git a/code/__DEFINES/sounds.dm b/code/__DEFINES/sounds.dm index f01ddfc86792..a6bb381100e7 100644 --- a/code/__DEFINES/sounds.dm +++ b/code/__DEFINES/sounds.dm @@ -21,6 +21,7 @@ #define ITEM_EQUIP_VOLUME 50 //Reserved channels +#define SOUND_CHANNEL_NOTIFY 1016 #define SOUND_CHANNEL_VOX 1017 #define SOUND_CHANNEL_MUSIC 1018 #define SOUND_CHANNEL_AMBIENCE 1019 diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 139de9e59a35..c6b642974881 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -27,3 +27,10 @@ #define ui_ghost_slot3 "SOUTH:6,CENTER:0" #define ui_ghost_slot4 "SOUTH:6,CENTER+1:0" #define ui_ghost_slot5 "SOUTH:6,CENTER+2:0" + +//Upper-middle right (alerts) +#define ui_alert1 "EAST-1:28,CENTER+5:27" +#define ui_alert2 "EAST-1:28,CENTER+4:25" +#define ui_alert3 "EAST-1:28,CENTER+3:23" +#define ui_alert4 "EAST-1:28,CENTER+2:21" +#define ui_alert5 "EAST-1:28,CENTER+1:19" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 7f9ad85e154e..392f3ae9a060 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -400,3 +400,40 @@ zone_sel.color = ui_color zone_sel.update_icon(mymob) static_inventory += zone_sel + +// Re-render all alerts - also called in /datum/hud/show_hud() because it's needed there +/datum/hud/proc/reorganize_alerts(mob/viewmob) + var/mob/screenmob = viewmob || mymob + if(!screenmob.client) + return + var/list/alerts = mymob.alerts + if(!length(alerts)) + return FALSE + if(!hud_shown) + for(var/category in alerts) + var/atom/movable/screen/alert/alert = alerts[category] + screenmob.client.screen -= alert + return TRUE + var/c = 0 + for(var/category in alerts) + var/atom/movable/screen/alert/alert = alerts[category] + c++ + switch(c) + if(1) + . = ui_alert1 + if(2) + . = ui_alert2 + if(3) + . = ui_alert3 + if(4) + . = ui_alert4 + if(5) + . = ui_alert5 // Right now there's 5 slots + else + . = "" + alert.screen_loc = . + screenmob.client.screen |= alert + if(!viewmob) + for(var/obs in mymob.observers) + reorganize_alerts(obs) + return TRUE diff --git a/code/controllers/subsystem/interior.dm b/code/controllers/subsystem/interior.dm index f81cc6c8d88c..389e95fe6022 100644 --- a/code/controllers/subsystem/interior.dm +++ b/code/controllers/subsystem/interior.dm @@ -19,7 +19,17 @@ SUBSYSTEM_DEF(interior) var/list/bottom_left = reserved_area.bottom_left_coords - template.load(locate(bottom_left[1] + (INTERIOR_BORDER_SIZE / 2), bottom_left[2] + (INTERIOR_BORDER_SIZE / 2), bottom_left[3]), centered = FALSE) + var/list/bounds = template.load(locate(bottom_left[1] + (INTERIOR_BORDER_SIZE / 2), bottom_left[2] + (INTERIOR_BORDER_SIZE / 2), bottom_left[3]), centered = FALSE) + + var/list/turfs = block( locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]), + locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ])) + + var/list/areas = list() + for(var/turf/current_turf as anything in turfs) + areas |= current_turf.loc + + for(var/area/current_area as anything in areas) + current_area.add_base_lighting() interiors += interior return reserved_area diff --git a/code/datums/effects/neurotoxin.dm b/code/datums/effects/neurotoxin.dm index 836fccf49ca3..1657d41d8a36 100644 --- a/code/datums/effects/neurotoxin.dm +++ b/code/datums/effects/neurotoxin.dm @@ -123,13 +123,8 @@ return TRUE /datum/effects/neurotoxin/proc/process_hallucination(mob/living/carbon/human/victim) - /// area of the victim for areachecks - var/hallu_area = get_area(victim) switch(rand(0, 100)) if(0 to 5) - if(hallu_area) - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("[victim] has experienced a rare neuro-induced 'Schizo Lurker Pounce' hallucination (5% chance) at \the [hallu_area]" + " [OBSERVER_JMP(observer, victim)]")) playsound_client(victim?.client,pick('sound/voice/alien_pounce.ogg','sound/voice/alien_pounce.ogg')) victim.KnockDown(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound_client), victim.client,"alien_claw_flesh"), 1 SECONDS) @@ -140,18 +135,12 @@ victim.apply_effect(AGONY,10) victim.emote("pain") if(6 to 10) - if(hallu_area) - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("[victim] has experienced a rare neuro-induced 'OB' hallucination (4% chance) at \the [hallu_area]" + " [OBSERVER_JMP(observer, victim)]")) playsound_client(victim.client,'sound/effects/ob_alert.ogg') addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound_client), victim.client,'sound/weapons/gun_orbital_travel.ogg'), 2 SECONDS) if(11 to 16) playsound_client(victim.client,'sound/voice/alien_queen_screech.ogg') victim.KnockDown(1) if(17 to 24) - if(hallu_area) - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("[victim] has experienced a rare neuro-induced 'Fake CAS firemission' hallucination (7% chance) at \the [hallu_area]" + " [OBSERVER_JMP(observer, victim)]")) hallucination_fakecas_sequence(victim) //Not gonna spam a billion timers for this one so outsourcing to a proc with sleeps is a better async solution if(25 to 42) to_chat(victim,SPAN_HIGHDANGER("A SHELL IS ABOUT TO IMPACT [pick(SPAN_UNDERLINE("TOWARDS THE [pick("WEST","EAST","SOUTH","NORTH")]"),SPAN_UNDERLINE("RIGHT ONTOP OF YOU!"))]!")) diff --git a/code/datums/skills.dm b/code/datums/skills.dm index a2edde24b8d4..252ef07c4806 100644 --- a/code/datums/skills.dm +++ b/code/datums/skills.dm @@ -1673,7 +1673,7 @@ COLONIAL MARSHALS SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, ) /datum/skills/military/survivor/upp_sl @@ -1682,12 +1682,13 @@ COLONIAL MARSHALS SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_SPEC_WEAPONS = SKILL_SPEC_UPP, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, - SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, + SKILL_VEHICLE = SKILL_VEHICLE_LARGE, SKILL_JTAC = SKILL_JTAC_EXPERT, ) diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index becee89adb6d..bc6adc026b6e 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -567,21 +567,39 @@ Additional game mode variables. var/hive_picked = tgui_input_list(xeno_candidate, "Select which Hive to attempt joining.", "Hive Choice", active_hives, theme="hive_status") if(!hive_picked) to_chat(xeno_candidate, SPAN_ALERT("Hive choice error. Aborting.")) - return + return FALSE hive = GLOB.hive_datum[active_hives[hive_picked]] else hive = GLOB.hive_datum[last_active_hive] - if(!hive.hive_location) - to_chat(xeno_candidate, SPAN_WARNING("The selected hive does not have a hive core to spawn from!")) - return - for(var/mob_name in hive.banished_ckeys) if(hive.banished_ckeys[mob_name] == xeno_candidate.ckey) to_chat(xeno_candidate, SPAN_WARNING("You are banished from the [hive], you may not rejoin unless the Queen re-admits you or dies.")) - return + return FALSE + + var/list/selection_list = list() + var/list/selection_list_structure = list() + + if(hive.hive_location?.lesser_drone_spawns >= 1) + selection_list += "hive core" + selection_list_structure += hive.hive_location + + for(var/obj/effect/alien/resin/special/pylon/cycled_pylon as anything in hive.hive_structures[XENO_STRUCTURE_PYLON]) + if(cycled_pylon.lesser_drone_spawns >= 1) + selection_list += "[cycled_pylon.name] at [get_area(cycled_pylon)]" + selection_list_structure += cycled_pylon + + if(!length(selection_list)) + to_chat(xeno_candidate, SPAN_WARNING("The selected hive does not have enough power for a lesser drone at any hive core or pylon!")) + return FALSE + + var/prompt = tgui_input_list(xeno_candidate, "Select spawn?", "Spawnpoint Selection", selection_list) + if(!prompt) + return FALSE + + var/obj/effect/alien/resin/special/pylon/selected_structure = selection_list_structure[selection_list.Find(prompt)] - hive.hive_location.spawn_lesser_drone(xeno_candidate) + selected_structure.spawn_lesser_drone(xeno_candidate) return TRUE diff --git a/code/game/machinery/ARES/ARES.dm b/code/game/machinery/ARES/ARES.dm index 56165cbccb58..e2ca3995ee83 100644 --- a/code/game/machinery/ARES/ARES.dm +++ b/code/game/machinery/ARES/ARES.dm @@ -159,6 +159,7 @@ COOLDOWN_DECLARE(ares_distress_cooldown) COOLDOWN_DECLARE(ares_nuclear_cooldown) + COOLDOWN_DECLARE(ares_quarters_cooldown) /obj/structure/machinery/computer/ares_console/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) if(link && !override) diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index bfe4c9dee21e..d83e9280b6c7 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -69,14 +69,14 @@ GLOBAL_LIST_INIT(maintenance_categories, list( /datum/ares_link/proc/log_ares_bioscan(title, input) interface.records_bioscan.Add(new /datum/ares_record/bioscan(title, input)) -/datum/ares_link/proc/log_ares_bombardment(mob/user, ob_name, coordinates) - interface.records_bombardment.Add(new /datum/ares_record/bombardment(ob_name, "Bombardment fired at [coordinates].", user.name)) +/datum/ares_link/proc/log_ares_bombardment(user, ob_name, coordinates) + interface.records_bombardment.Add(new /datum/ares_record/bombardment(ob_name, "Bombardment fired at [coordinates].", user)) /datum/ares_link/proc/log_ares_announcement(title, message) interface.records_announcement.Add(new /datum/ares_record/announcement(title, message)) -/datum/ares_link/proc/log_ares_requisition(source, details, mob/user) - interface.records_asrs.Add(new /datum/ares_record/requisition_log(source, details, user.name)) +/datum/ares_link/proc/log_ares_requisition(source, details, user) + interface.records_asrs.Add(new /datum/ares_record/requisition_log(source, details, user)) /datum/ares_link/proc/log_ares_security(title, details) interface.records_security.Add(new /datum/ares_record/security(title, details)) @@ -84,8 +84,8 @@ GLOBAL_LIST_INIT(maintenance_categories, list( /datum/ares_link/proc/log_ares_antiair(details) interface.records_security.Add(new /datum/ares_record/security/antiair(details)) -/datum/ares_link/proc/log_ares_flight(mob/user, details) - interface.records_flight.Add(new /datum/ares_record/flight(details, user.name)) +/datum/ares_link/proc/log_ares_flight(user, details) + interface.records_flight.Add(new /datum/ares_record/flight(details, user)) // ------ End ARES Logging Procs ------ // /proc/ares_apollo_talk(broadcast_message) @@ -234,6 +234,7 @@ GLOBAL_LIST_INIT(maintenance_categories, list( data["distresstime"] = ares_distress_cooldown data["distresstimelock"] = DISTRESS_TIME_LOCK + data["quarterstime"] = ares_quarters_cooldown data["mission_failed"] = SSticker.mode.is_in_endgame data["nuketimelock"] = NUCLEAR_TIME_LOCK data["nuke_available"] = nuke_available @@ -530,16 +531,18 @@ GLOBAL_LIST_INIT(maintenance_categories, list( // -- Emergency Buttons -- // if("general_quarters") - if(security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) - to_chat(usr, SPAN_WARNING("Alert level is already red or above, General Quarters cannot be called.")) + if(!COOLDOWN_FINISHED(src, ares_quarters_cooldown)) + to_chat(usr, 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 - set_security_level(2, no_sound = TRUE, announce = FALSE) + if(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(usr)] has called for general quarters via ARES.") message_admins("[key_name_admin(usr)] has called for general quarters via ARES.") var/datum/ares_link/link = GLOB.ares_link link.log_ares_security("General Quarters", "[last_login] has called for general quarters via ARES.") + COOLDOWN_START(src, ares_quarters_cooldown, 10 MINUTES) . = TRUE if("evacuation_start") diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index c55250fdc04d..78fc05d8e0d0 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -25,7 +25,6 @@ return ..() /obj/structure/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) -/* ..() if(inoperable()) return @@ -33,6 +32,8 @@ var/alarm_area = signal.data["zone"] var/alert = signal.data["alert"] + var/area/our_area = get_area(src) + if(alarm_area == our_area.name) switch(alert) if("severe") @@ -41,4 +42,3 @@ if("minor", "clear") autoclose = 0 open() -*/ diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index f58d50f3a8cf..da4ad01c086b 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -377,7 +377,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor/proc/vacate_premises() for(var/turf/self_turf as anything in locs) var/turf/near_turf = get_step(self_turf, throw_dir) - var/turf/projected = get_ranged_target_turf(near_turf, throw_dir, 50) + var/turf/space_turf = get_step(near_turf, throw_dir) + var/turf/projected = get_ranged_target_turf(space_turf, EAST, 50) for(var/atom/movable/atom_movable in near_turf) if(ismob(atom_movable) && !isobserver(atom_movable)) var/mob/mob = atom_movable @@ -389,7 +390,9 @@ continue else continue - INVOKE_ASYNC(atom_movable, TYPE_PROC_REF(/atom/movable, throw_atom), projected, 50, SPEED_FAST, null, TRUE) + atom_movable.forceMove(space_turf) + INVOKE_ASYNC(atom_movable, TYPE_PROC_REF(/atom/movable, throw_atom), projected, 50, SPEED_FAST, null, TRUE, HIGH_LAUNCH) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), atom_movable), 3 SECONDS) /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor/proc/bolt_explosion() var/turf/turf = get_step(src, throw_dir|dir) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm index d2e50aee9042..c02748fea509 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm @@ -79,10 +79,10 @@ list("WEBBINGS", -1, null, null), list("Brown Webbing Vest", round(scale * 1.25), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), - list("Black Webbing Vest", round(scale * 0.5), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), + list("Black Webbing Vest", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), list("Webbing", round(scale * 2), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), - list("Drop Pouch", round(scale * 0.5), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", round(scale * 0.5), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), + list("Drop Pouch", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", round(max(1,(scale * 0.5))), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), list("ARMOR", -1, null, null), list("M3 Pattern Carrier Marine Armor", round(scale * 15), /obj/item/clothing/suit/storage/marine/carrier, VENDOR_ITEM_REGULAR), @@ -107,7 +107,7 @@ list("RESTRICTED BACKPACKS", -1, null, null), list("USCM Technician Welderpack", round(scale * 1.25), /obj/item/storage/backpack/marine/engineerpack, VENDOR_ITEM_REGULAR), list("Technician Welder-Satchel", round(scale * 2), /obj/item/storage/backpack/marine/engineerpack/satchel, VENDOR_ITEM_REGULAR), - list("Radio Telephone Backpack", round(scale * 0.5), /obj/item/storage/backpack/marine/satchel/rto, VENDOR_ITEM_REGULAR), + list("Radio Telephone Backpack", round(max(1,(scale * 0.5))), /obj/item/storage/backpack/marine/satchel/rto, VENDOR_ITEM_REGULAR), list("BELTS", -1, null, null), list("M276 Pattern Ammo Load Rig", round(scale * 15), /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), @@ -155,6 +155,8 @@ list("M10 Helmet Rain Cover", round(scale * 10), /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR), list("Firearm Lubricant", round(scale * 15), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR), list("USCM Flair", round(scale * 15), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR), + list("Falling Falcons Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/falcon, VENDOR_ITEM_REGULAR), + list("USCM Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch, VENDOR_ITEM_REGULAR), ) //--------------SQUAD SPECIFIC VERSIONS-------------- @@ -272,11 +274,11 @@ list("Wirecutters", round(scale * 5), /obj/item/tool/wirecutters, VENDOR_ITEM_REGULAR), list("Crowbar", round(scale * 5), /obj/item/tool/crowbar, VENDOR_ITEM_REGULAR), list("Wrench", round(scale * 5), /obj/item/tool/wrench, VENDOR_ITEM_REGULAR), - list("ME3 hand welder", round(scale * 2), /obj/item/tool/weldingtool/simple, VENDOR_ITEM_REGULAR), + list("Multitool", round(scale * 1), /obj/item/device/multitool, VENDOR_ITEM_REGULAR), + list("ME3 hand welder", round(scale * 1), /obj/item/tool/weldingtool/simple, VENDOR_ITEM_REGULAR), list("FLARE AND LIGHT", -1, null, null), list("Combat Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), - list("Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), list("Box of Flashlight", round(scale * 1), /obj/item/ammo_box/magazine/misc/flashlight, VENDOR_ITEM_REGULAR), list("Box of Flares", round(scale * 1), /obj/item/ammo_box/magazine/misc/flares, VENDOR_ITEM_REGULAR), list("M94 Marking Flare Pack", round(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_REGULAR), @@ -286,6 +288,8 @@ list("Toolkit", round(scale * 1), /obj/item/storage/firstaid/toolkit/empty, VENDOR_ITEM_REGULAR), list("Map", round(scale * 5), /obj/item/map/current_map, VENDOR_ITEM_REGULAR), list("Extinguisher", round(scale * 5), /obj/item/tool/extinguisher, VENDOR_ITEM_REGULAR), + list("Fire Extinguisher (Portable)", round(scale * 1), /obj/item/tool/extinguisher/mini, VENDOR_ITEM_REGULAR), + list("Roller Bed", round(scale * 1), /obj/item/roller, VENDOR_ITEM_REGULAR), list("Machete Scabbard (Full)", round(scale * 5), /obj/item/storage/large_holster/machete/full, VENDOR_ITEM_REGULAR), list("Binoculars", round(scale * 1), /obj/item/device/binoculars, VENDOR_ITEM_REGULAR), list("MB-6 Folding Barricades (x3)", round(scale * 2), /obj/item/stack/folding_barricade/three, VENDOR_ITEM_REGULAR), diff --git a/code/game/objects/effects/landmarks/survivor_spawner.dm b/code/game/objects/effects/landmarks/survivor_spawner.dm index d19bbbe49516..25cc1a80d0b4 100644 --- a/code/game/objects/effects/landmarks/survivor_spawner.dm +++ b/code/game/objects/effects/landmarks/survivor_spawner.dm @@ -142,25 +142,44 @@ /obj/effect/landmark/survivor_spawner/upp/soldier equipment = /datum/equipment_preset/survivor/upp/soldier synth_equipment = /datum/equipment_preset/synth/survivor/upp - spawn_priority = SPAWN_PRIORITY_MEDIUM + intro_text = list("

You are a member of a UPP recon force!

",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route, but is the enemy of my enemy truly your friend?" + spawn_priority = SPAWN_PRIORITY_LOW /obj/effect/landmark/survivor_spawner/upp_sapper equipment = /datum/equipment_preset/survivor/upp/sapper synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

You are a member of a UPP recon force!

",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route, but is the enemy of my enemy truly your friend?" spawn_priority = SPAWN_PRIORITY_MEDIUM /obj/effect/landmark/survivor_spawner/upp_medic equipment = /datum/equipment_preset/survivor/upp/medic synth_equipment = /datum/equipment_preset/synth/survivor/upp - spawn_priority = SPAWN_PRIORITY_HIGH + intro_text = list("

You are a member of a UPP recon force!

",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route, but is the enemy of my enemy truly your friend?" + spawn_priority = SPAWN_PRIORITY_MEDIUM /obj/effect/landmark/survivor_spawner/upp_specialist equipment = /datum/equipment_preset/survivor/upp/specialist synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

You are a member of a UPP recon force!

",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route, but is the enemy of my enemy truly your friend?" spawn_priority = SPAWN_PRIORITY_HIGH /obj/effect/landmark/survivor_spawner/squad_leader equipment = /datum/equipment_preset/survivor/upp/squad_leader synth_equipment = /datum/equipment_preset/synth/survivor/upp + intro_text = list("

You are a member of a UPP recon force!

",\ + "You ARE aware of the xenomorph threat.",\ + "Your primary objective is to survive. You believe a second dropship crashed somewhere to the south east, which was carrying additional weapons") + story_text = "Your orders were simple, Recon the site, ascertain if there is a biological weapons program in the area, and if so to secure the colony and retrieve a sample. However your team failed to account for an active anti-air battery near the area. Both your craft and your sister ship crashed. Barely having a chance to catch your breath, you found yourself being assailed by vile xenomorphs! You and your team have barely held your ground, at the cost of four of your own, but more are coming and ammo is low. You believe an American rescue force is en route, but is the enemy of my enemy truly your friend?" spawn_priority = SPAWN_PRIORITY_VERY_HIGH - diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 4ab9e19d5ae1..dd5f0f88e6a7 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -850,7 +850,7 @@ /obj/item/device/radio/headset/distress/pmc/hvh desc = "A special headset used by corporate personnel. Channels are as follows: :o - colony." - initial_keys = list(/obj/item/device/encryptionkey/colony) + initial_keys = list(/obj/item/device/encryptionkey/colony, /obj/item/device/encryptionkey/WY) misc_tracking = FALSE /obj/item/device/radio/headset/distress/pmc/cct @@ -1022,3 +1022,13 @@ initial_keys = list(/obj/item/device/encryptionkey/vc) volume = RADIO_VOLUME_RAISED multibroadcast_cooldown = HIGH_MULTIBROADCAST_COOLDOWN + +/obj/item/device/radio/headset/distress/UPP/recon + name = "\improper UPP headset" + desc = "A special headset used by recon elements of the UPP military." + frequency = UPP_FREQ + initial_keys = list(/obj/item/device/encryptionkey/upp) + volume = RADIO_VOLUME_QUIET + ignore_z = FALSE + has_hud = TRUE + hud_type = MOB_HUD_FACTION_UPP diff --git a/code/game/objects/items/reagent_containers/hypospray.dm b/code/game/objects/items/reagent_containers/hypospray.dm index 5014c85547aa..fcea8997f0b5 100644 --- a/code/game/objects/items/reagent_containers/hypospray.dm +++ b/code/game/objects/items/reagent_containers/hypospray.dm @@ -10,7 +10,7 @@ icon_state = "hypo" amount_per_transfer_from_this = 5 volume = 30 - possible_transfer_amounts = list(5,10,15,30) + possible_transfer_amounts = list(3, 5, 10, 15, 30) flags_atom = FPRINT|OPENCONTAINER flags_equip_slot = SLOT_WAIST flags_item = NOBLUDGEON diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 50a6cc92cb5f..afeaff89ae07 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -51,6 +51,7 @@ /obj/item/storage/lockbox/loyalty name = "\improper Wey-Yu equipment lockbox" + req_access = null req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY) /obj/item/storage/lockbox/loyalty/fill_preset_inventory() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 173182b6cc3e..d47537743111 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -629,15 +629,15 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. /obj/structure/flora/jungle/vines/light_1 icon_state = "light_1" - icon_tag = "light_1" + icon_tag = "light" /obj/structure/flora/jungle/vines/light_2 icon_state = "light_2" - icon_tag = "light_2" + icon_tag = "light" /obj/structure/flora/jungle/vines/light_3 icon_state = "light_3" - icon_tag = "light_3" + icon_tag = "light" //heavy hide you /obj/structure/flora/jungle/vines/heavy diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 4d60c6c263cf..22a3f48c837e 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -1031,8 +1031,9 @@ var/datum/controller/supply/supply_controller = new() var/pack_name = supply_pack.name if(supply_pack.dollar_cost) pack_source = "Unknown" - pack_name = "Unknown" - link.log_ares_requisition(pack_source, pack_name, usr) + if(prob(90)) + pack_name = "Unknown" + link.log_ares_requisition(pack_source, pack_name, usr.name) else temp = "Not enough money left.
" temp += "
Back Main Menu" diff --git a/code/modules/admin/verbs/freeforghosts.dm b/code/modules/admin/verbs/freeforghosts.dm index a2f3912030e5..24c261ee18f3 100644 --- a/code/modules/admin/verbs/freeforghosts.dm +++ b/code/modules/admin/verbs/freeforghosts.dm @@ -6,22 +6,27 @@ to_chat(src, "Only staff members may use this.") return - free_for_ghosts(M) + free_for_ghosts(M, notify = TRUE) message_admins("[key_name_admin(usr)] freed [key_name(M)] for ghosts to take.") -/client/proc/free_for_ghosts(mob/living/M in GLOB.living_mob_list) +/client/proc/free_for_ghosts(mob/living/M in GLOB.living_mob_list, notify) if(!ismob(M)) return - M.free_for_ghosts() + M.free_for_ghosts(notify) -/mob/proc/free_for_ghosts() +/mob/proc/free_for_ghosts(notify) if(mind || client) ghostize(FALSE) GLOB.freed_mob_list |= WEAKREF(src) + if(!notify) + return + + notify_ghosts(header = "Freed Mob", message = "A mob is now available for ghosts. Name: [real_name], Job: [job ? job : ""]", enter_link = "claim_freed=[REF(src)]", source = src, action = NOTIFY_ORBIT) + /client/proc/free_all_mobs_in_view() set name = "Free All Mobs" set category = "Admin.InView" @@ -34,6 +39,6 @@ return for(var/mob/living/M in view()) - free_for_ghosts(M) + free_for_ghosts(M, notify = FALSE) message_admins(WRAP_STAFF_LOG(usr, "freed all mobs in [get_area(usr)] ([usr.x],[usr.y],[usr.z])"), usr.x, usr.y, usr.z) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 3722b32fb2b4..a7149c07d3e7 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -436,6 +436,9 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( //if(prefs.window_skin & TOGGLE_WINDOW_SKIN) // set_night_skin() + if(!tooltips && prefs.tooltips) + tooltips = new(src) + load_player_data() view = world_view_size diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 4f1161709657..76323a19ac8c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -234,6 +234,9 @@ var/const/MAX_SAVE_SLOTS = 10 /// if this client has custom cursors enabled var/custom_cursors = TRUE + /// if this client has tooltips enabled + var/tooltips = TRUE + /datum/preferences/New(client/C) key_bindings = deepCopyList(GLOB.hotkey_keybinding_list_by_key) // give them default keybinds and update their movement keys macros = new(C, src) @@ -573,6 +576,7 @@ var/const/MAX_SAVE_SLOTS = 10 dat += "Ambient Occlusion: [toggle_prefs & TOGGLE_AMBIENT_OCCLUSION ? "Enabled" : "Disabled"]
" dat += "Fit Viewport: [auto_fit_viewport ? "Auto" : "Manual"]
" dat += "Adaptive Zoom: [adaptive_zoom ? "[adaptive_zoom * 2]x" : "Disabled"]
" + dat += "Tooltips: [tooltips ? "Enabled" : "Disabled"]
" dat += "tgui Window Mode: [(tgui_fancy) ? "Fancy (default)" : "Compatible (slower)"]
" dat += "tgui Window Placement: [(tgui_lock) ? "Primary monitor" : "Free (default)"]
" dat += "Play Admin Midis: [(toggles_sound & SOUND_MIDI) ? "Yes" : "No"]
" @@ -1862,6 +1866,17 @@ var/const/MAX_SAVE_SLOTS = 10 adaptive_zoom = 0 owner?.adaptive_zoom() + if("tooltips") + tooltips = !tooltips + save_preferences() + + if(!tooltips) + closeToolTip() + return + + if(!owner.tooltips) + owner.tooltips = new(owner) + if("inputstyle") var/result = tgui_alert(user, "Which input style do you want?", "Input Style", list("Modern", "Legacy")) if(!result) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 0f482fa7f894..7d9a67c455a9 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -193,6 +193,7 @@ S["custom_cursors"] >> custom_cursors S["autofit_viewport"] >> auto_fit_viewport S["adaptive_zoom"] >> adaptive_zoom + S["tooltips"] >> tooltips //Sanitize ooccolor = sanitize_hexcolor(ooccolor, CONFIG_GET(string/ooc_color_default)) @@ -225,6 +226,7 @@ no_radial_labels_preference = sanitize_integer(no_radial_labels_preference, FALSE, TRUE, FALSE) auto_fit_viewport = sanitize_integer(auto_fit_viewport, FALSE, TRUE, TRUE) adaptive_zoom = sanitize_integer(adaptive_zoom, 0, 2, 0) + tooltips = sanitize_integer(tooltips, FALSE, TRUE, TRUE) synthetic_name = synthetic_name ? sanitize_text(synthetic_name, initial(synthetic_name)) : initial(synthetic_name) synthetic_type = sanitize_inlist(synthetic_type, PLAYER_SYNTHS, initial(synthetic_type)) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index a7844631051e..b31e6281dba1 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -140,6 +140,11 @@ req_skill_level = SKILL_RESEARCH_TRAINED clothing_traits = list(TRAIT_REAGENT_SCANNER) +/obj/item/clothing/glasses/science/prescription + name = "prescription reagent scanner HUD goggles" + desc = "These goggles are probably of use to someone who isn't holding a rifle and actively seeking to lower their combat life expectancy. Contains prescription lenses." + prescription = TRUE + /obj/item/clothing/glasses/science/get_examine_text(mob/user) . = ..() . += SPAN_INFO("While wearing them, you can examine items to see their reagent contents.") diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm index 593134642198..e8b95f7e1aae 100644 --- a/code/modules/cm_aliens/structures/special/pylon_core.dm +++ b/code/modules/cm_aliens/structures/special/pylon_core.dm @@ -21,6 +21,11 @@ var/protection_level = TURF_PROTECTION_CAS + /// How many lesser drone spawns this pylon is able to spawn currently + var/lesser_drone_spawns = 0 + /// The maximum amount of lesser drone spawns this pylon can hold + var/lesser_drone_spawn_limit = 5 + plane = FLOOR_PLANE /obj/effect/alien/resin/special/pylon/Initialize(mapload, hive_ref) @@ -42,6 +47,11 @@ QDEL_NULL(node) . = ..() +/obj/effect/alien/resin/special/pylon/process(delta_time) + if(lesser_drone_spawns < lesser_drone_spawn_limit) + // One every 10 seconds while on ovi, one every 120-ish seconds while off ovi + lesser_drone_spawns = min(lesser_drone_spawns + ((linked_hive.living_xeno_queen?.ovipositor ? 0.1 : 0.008) * delta_time), lesser_drone_spawn_limit) + /obj/effect/alien/resin/special/pylon/attack_alien(mob/living/carbon/xenomorph/M) if(isxeno_builder(M) && M.a_intent == INTENT_HELP && M.hivenumber == linked_hive.hivenumber) do_repair(M) //This handles the delay itself. @@ -49,6 +59,20 @@ else return ..() +/obj/effect/alien/resin/special/pylon/get_examine_text(mob/user) + . = ..() + + var/lesser_count = 0 + for(var/mob/living/carbon/xenomorph/lesser_drone in linked_hive.totalXenos) + lesser_count++ + + . += "Currently holding [SPAN_NOTICE("[Floor(lesser_drone_spawns)]")]/[SPAN_NOTICE("[lesser_drone_spawn_limit]")] lesser drones." + . += "There are currently [SPAN_NOTICE("[lesser_count]")] lesser drones in the hive. The hive can support [SPAN_NOTICE("[linked_hive.lesser_drone_limit]")] lesser drones." + +/obj/effect/alien/resin/special/pylon/attack_ghost(mob/dead/observer/user) + . = ..() + spawn_lesser_drone(user) + /obj/effect/alien/resin/special/pylon/proc/do_repair(mob/living/carbon/xenomorph/xeno) if(!istype(xeno)) return @@ -94,6 +118,25 @@ pylon_node.resin_parent = src return pylon_node +/obj/effect/alien/resin/special/pylon/proc/spawn_lesser_drone(mob/xeno_candidate) + if(!linked_hive.can_spawn_as_lesser_drone(xeno_candidate, src)) + return FALSE + + if(tgui_alert(xeno_candidate, "Are you sure you want to become a lesser drone?", "Confirmation", list("Yes", "No")) != "Yes") + return FALSE + + if(!linked_hive.can_spawn_as_lesser_drone(xeno_candidate, src)) + return FALSE + + var/mob/living/carbon/xenomorph/lesser_drone/new_drone = new(loc, null, linked_hive.hivenumber) + xeno_candidate.mind.transfer_to(new_drone, TRUE) + lesser_drone_spawns -= 1 + new_drone.visible_message(SPAN_XENODANGER("A lesser drone emerges out of [src]!"), SPAN_XENODANGER("You emerge out of [src] and awaken from your slumber. For the Hive!")) + playsound(new_drone, 'sound/effects/xeno_newlarva.ogg', 25, TRUE) + new_drone.generate_name() + + return TRUE + /obj/effect/alien/resin/special/pylon/endgame cover_range = WEED_RANGE_CORE var/activated = FALSE @@ -189,6 +232,7 @@ protection_level = TURF_PROTECTION_OB + lesser_drone_spawn_limit = 10 /obj/effect/alien/resin/special/pylon/core/Initialize(mapload, datum/hive_status/hive_ref) . = ..() @@ -205,6 +249,7 @@ SSminimaps.add_marker(src, z, MINIMAP_FLAG_XENO, "core[health < (initial(health) * 0.5) ? "_warn" : "_passive"]") /obj/effect/alien/resin/special/pylon/core/process() + . = ..() update_minimap_icon() // Handle spawning larva if core is connected to a hive @@ -236,14 +281,13 @@ last_surge_time = world.time linked_hive.stored_larva++ linked_hive.hijack_burrowed_left-- - announce_dchat("The hive has gained another burrowed larva! Use the Join As Xeno verb to take it.", src) + notify_ghosts(header = "Claim Xeno", message = "The Hive has gained another burrowed larva! Click to take it.", source = src, action = NOTIFY_JOIN_XENO, enter_link = "join_xeno") if(surge_cooldown > 30 SECONDS) //mostly for sanity purposes surge_cooldown = surge_cooldown - surge_incremental_reduction //ramps up over time if(linked_hive.hijack_burrowed_left < 1) linked_hive.hijack_burrowed_surge = FALSE xeno_message(SPAN_XENOANNOUNCE("The hive's power wanes. You will no longer gain pooled larva over time."), 3, linked_hive.hivenumber) - // Hive core can repair itself over time if(health < maxhealth && last_healed <= world.time) health += min(heal_amount, maxhealth-health) @@ -400,22 +444,5 @@ // Tell admins that this condition is reached so they know what has happened if it fails somehow return -/obj/effect/alien/resin/special/pylon/core/proc/spawn_lesser_drone(mob/xeno_candidate) - if(!linked_hive.can_spawn_as_lesser_drone(xeno_candidate)) - return FALSE - - var/mob/living/carbon/xenomorph/lesser_drone/new_drone = new /mob/living/carbon/xenomorph/lesser_drone(loc, null, linked_hive.hivenumber) - xeno_candidate.mind.transfer_to(new_drone, TRUE) - new_drone.visible_message(SPAN_XENODANGER("A lesser drone emerges out of [src]!"), SPAN_XENODANGER("You emerge out of [src] and awaken from your slumber. For the Hive!")) - playsound(new_drone, 'sound/effects/xeno_newlarva.ogg', 25, TRUE) - new_drone.generate_name() - - return TRUE - -/obj/effect/alien/resin/special/pylon/core/attack_ghost(mob/dead/observer/user) - . = ..() - if(SSticker.mode.check_xeno_late_join(user)) - SSticker.mode.attempt_to_join_as_lesser_drone(user) - #undef PYLON_REPAIR_TIME #undef PYLON_WEEDS_REGROWTH_TIME diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index a9a3855a53e4..aa01535ff888 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -315,16 +315,16 @@ //M44 Combat Revolver /obj/item/storage/box/guncase/m44 name = "\improper M44 Combat Revolver case" - desc = "A gun case containing an M44 Combat Revolver." + desc = "A gun case containing an M44 Combat Revolver loaded with marksman ammo." storage_slots = 5 can_hold = list(/obj/item/attachable/flashlight, /obj/item/weapon/gun/revolver/m44, /obj/item/ammo_magazine/revolver) /obj/item/storage/box/guncase/m44/fill_preset_inventory() new /obj/item/attachable/flashlight(src) - new /obj/item/weapon/gun/revolver/m44(src) - new /obj/item/ammo_magazine/revolver(src) - new /obj/item/ammo_magazine/revolver(src) - new /obj/item/ammo_magazine/revolver(src) + new /obj/item/weapon/gun/revolver/m44/mp(src) + new /obj/item/ammo_magazine/revolver/marksman(src) + new /obj/item/ammo_magazine/revolver/marksman(src) + new /obj/item/ammo_magazine/revolver/marksman(src) //M4A3 Service Pistol /obj/item/storage/box/guncase/m4a3 diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 070cf1f6c1cf..aa8de9dccf56 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -1,3 +1,5 @@ +#define MAX_SAVED_COORDINATES 3 + #define HIDE_ALMAYER 2 #define HIDE_GROUND 1 #define HIDE_NONE 0 @@ -28,10 +30,18 @@ var/datum/tacmap/tacmap var/minimap_type = MINIMAP_FLAG_USCM + + ///List of saved coordinates, format of ["x", "y", "comment"] + var/list/saved_coordinates = list() + ///Currently selected UI theme + var/ui_theme = "crtblue" + + /obj/structure/machinery/computer/overwatch/Initialize() . = ..() tacmap = new(src, minimap_type) + /obj/structure/machinery/computer/overwatch/Destroy() QDEL_NULL(tacmap) return ..() @@ -57,437 +67,345 @@ to_chat(user, SPAN_WARNING("You don't have the training to use [src].")) return - user.set_interaction(src) - var/dat = "" + tgui_interact(user) - if(!operator) - dat += "
Operator: ----------
" - else - dat += "
Operator: [operator.name]
" - dat += " Stop Overwatch
" - dat += "
" - - switch(state) - if(0) // Base menu - dat += get_base_menu_text() - if(1) //Info screen. - dat += get_info_screen_text() - if(2) - dat += get_supply_drop_menu_text() - if(3) - dat += get_orbital_bombardment_control_text() - - show_browser(user, dat, "Overwatch Console", "overwatch", "size=550x550") - return +/obj/structure/machinery/computer/overwatch/get_examine_text(mob/user) + . = ..() -/obj/structure/machinery/computer/overwatch/proc/get_base_menu_text() - var/dat = "" + . += SPAN_NOTICE("Alt-Click this machine to change the UI theme.") - if(!current_squad) //No squad has been set yet. Pick one. - dat += "Current Squad: ----------
" - return dat; +/obj/structure/machinery/computer/overwatch/clicked(mob/user, list/mods) - dat += "Current Squad: [current_squad.name] Squad " - dat += "Message Squad

" - dat += "Toggle Tactical Map" - dat += "

" - if(current_squad.squad_leader) - dat += "Squad Leader: [current_squad.squad_leader.name] " - dat += "MSG " - dat += "CHANGE SQUAD LEADER

" - else - dat += "Squad Leader: NONE ASSIGN SQUAD LEADER

" + if(!ishuman(user)) + return ..() + if(mods["alt"]) //Changing UI theme + var/list/possible_options = list("Blue"= "crtblue", "Green" = "crtgreen", "Yellow" = "crtyellow", "Red" = "crtred") + var/chosen_theme = tgui_input_list(user, "Choose a UI theme:", "UI Theme", list("Blue", "Green", "Yellow", "Red")) + if(possible_options[chosen_theme]) + ui_theme = possible_options[chosen_theme] + return TRUE + . = ..() - dat += "Primary Objective: " - if(current_squad.primary_objective) - dat += "Check Set
" - else - dat += "NONE! Set
" - dat += "Secondary Objective: " - if(current_squad.secondary_objective) - dat += "Check Set
" - else - dat += "NONE! Set
" - dat += "
" - dat += "Report a marine for insubordination
" - dat += "Transfer a marine to another squad

" - - dat += "Supply Drop Control
" - dat += "Orbital Bombardment Control
" - dat += "Squad Monitor
" - dat += "
" - dat += "Refresh" - - return dat - -/obj/structure/machinery/computer/overwatch/proc/get_info_screen_text() - var/dat = "" - - dat += {" - - "} +/obj/structure/machinery/computer/overwatch/ui_static_data(mob/user) + var/list/data = list() + data["mapRef"] = tacmap.map_holder.map_ref + return data + +/obj/structure/machinery/computer/overwatch/tgui_interact(mob/user, datum/tgui/ui) + + if(!tacmap.map_holder) + var/level = SSmapping.levels_by_trait(tacmap.targeted_ztrait) + if(!level[1]) + return + tacmap.map_holder = SSminimaps.fetch_tacmap_datum(level[1], tacmap.allowed_flags) + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + user.client.register_map_obj(tacmap.map_holder.map) + ui = new(user, src, "OverwatchConsole", "Overwatch Console") + ui.open() + +/obj/structure/machinery/computer/overwatch/ui_data(mob/user) + var/list/data = list() + + data["theme"] = ui_theme if(!current_squad) - dat += "No Squad selected!
" - else - var/leader_text = "" - var/leader_count = 0 - var/tl_text = "" - var/tl_count = 0 - var/spec_text = "" - var/spec_count = 0 - var/medic_text = "" - var/medic_count = 0 - var/engi_text = "" - var/engi_count = 0 - var/smart_text = "" - var/smart_count = 0 - var/marine_text = "" - var/marine_count = 0 - var/misc_text = "" - var/living_count = 0 - - var/conscious_text = "" - var/unconscious_text = "" - var/dead_text = "" - - var/SL_z //z level of the Squad Leader - if(current_squad.squad_leader) - var/turf/SL_turf = get_turf(current_squad.squad_leader) - SL_z = SL_turf.z - - - for(var/X in current_squad.marines_list) - if(!X) - continue //just to be safe - var/mob_name = "unknown" - var/mob_state = "" - var/role = "unknown" - var/act_sl = "" - var/fteam = "" - var/dist = "???" - var/area_name = "???" - var/mob/living/carbon/human/H - - var/is_filtered = FALSE - if(X && ("\ref[X]" in marine_filter)) - is_filtered = TRUE - - if(ishuman(X)) - H = X - mob_name = H.real_name - var/area/A = get_area(H) - var/turf/M_turf = get_turf(H) - if(!M_turf) - continue - if(A) - area_name = sanitize_area(A.name) - - switch(z_hidden) - if(HIDE_ALMAYER) - if(is_mainship_level(M_turf.z)) - continue - if(HIDE_GROUND) - if(is_ground_level(M_turf.z)) - continue - - if(H.job) - role = H.job - else if(istype(H.wear_id, /obj/item/card/id)) //decapitated marine is mindless, - var/obj/item/card/id/ID = H.wear_id //we use their ID to get their role. - if(ID.rank) role = ID.rank - - if(current_squad.squad_leader) - if(H == current_squad.squad_leader) - dist = "N/A" - if(current_squad.name == SQUAD_SOF) - if(H.job == JOB_MARINE_RAIDER_CMD) - act_sl = " (direct command)" - else if(H.job != JOB_MARINE_RAIDER_SL) - act_sl = " (acting TL)" - else if(H.job != JOB_SQUAD_LEADER) - act_sl = " (acting SL)" - else if(M_turf && (M_turf.z == SL_z)) - dist = "[get_dist(H, current_squad.squad_leader)] ([dir2text_short(get_dir(current_squad.squad_leader, H))])" - - if(is_filtered && marine_filter_enabled) - continue - - switch(H.stat) - if(CONSCIOUS) - mob_state = "Conscious" - living_count++ - conscious_text += "[mob_name][role][act_sl][mob_state][area_name][dist][is_filtered ? "Show" : "Hide"]" - - if(UNCONSCIOUS) - mob_state = "Unconscious" - living_count++ - unconscious_text += "[mob_name][role][act_sl][mob_state][area_name][dist][is_filtered ? "Show" : "Hide"]" - - if(DEAD) - if(dead_hidden) - continue - mob_state = SET_CLASS("DEAD", INTERFACE_RED) - dead_text += "[mob_name][role][act_sl][mob_state][area_name][dist][is_filtered ? "Show" : "Hide"]" - - if(!istype(H.head, /obj/item/clothing/head/helmet/marine)) - mob_state += SET_CLASS(" (NO HELMET)", INTERFACE_ORANGE) - - if(!H.key || !H.client) - if(H.stat != DEAD) - mob_state += " (SSD)" - - - if(H.assigned_fireteam) - fteam = " [H.assigned_fireteam]" - - else //listed marine was deleted or gibbed, all we have is their name - if(dead_hidden) - continue - if(z_hidden) //gibbed marines are neither on the colony nor on the almayer - continue - for(var/datum/data/record/t in GLOB.data_core.general) - if(t.fields["name"] == X) - role = t.fields["real_rank"] - break - mob_state = SET_CLASS("DEAD", INTERFACE_RED) - mob_name = X - - dead_text += "[mob_name][role][act_sl][mob_state][area_name][dist][is_filtered ? "Show" : "Hide"]" - - - var/marine_infos = "[mob_name][role][act_sl][fteam][mob_state][area_name][dist][is_filtered ? "Show" : "Hide"]" - switch(role) - if(JOB_SQUAD_LEADER) - leader_text += marine_infos - leader_count++ - if(JOB_SQUAD_TEAM_LEADER) - tl_text += marine_infos - tl_count++ - if(JOB_SQUAD_SPECIALIST) - spec_text += marine_infos - spec_count++ - if(JOB_SQUAD_MEDIC) - medic_text += marine_infos - medic_count++ - if(JOB_SQUAD_ENGI) - engi_text += marine_infos - engi_count++ - if(JOB_SQUAD_SMARTGUN) - smart_text += marine_infos - smart_count++ - if(JOB_SQUAD_MARINE) - marine_text += marine_infos - marine_count++ - else - misc_text += marine_infos - - dat += "[leader_count ? "Squad Leader Deployed" : SET_CLASS("No Squad Leader Deployed!", INTERFACE_RED)]
" - dat += "Fireteam Leaders: [tl_count ? "[tl_count]" : SET_CLASS("No Fireteam Leaders Deployed!", INTERFACE_RED)]
" - dat += "[spec_count ? "Squad Specialist Deployed" : SET_CLASS("No Specialist Deployed!", INTERFACE_RED)]
" - dat += "[smart_count ? "Squad Smartgunner Deployed" : SET_CLASS("No Smartgunner Deployed!", INTERFACE_RED)]
" - dat += "Squad Hospital Corpsmen: [medic_count] Deployed | Squad Combat Technicians: [engi_count] Deployed
" - dat += "Squad Riflemen: [marine_count] Deployed
" - dat += "Total: [current_squad.marines_list.len] Deployed
" - dat += "Marines alive: [living_count]


" - dat += "
Search:
" - dat += "" - dat += "" - if(!living_marines_sorting) - dat += leader_text + tl_text + spec_text + medic_text + engi_text + smart_text + marine_text + misc_text - else - dat += conscious_text + unconscious_text + dead_text - dat += "
NameRoleStateLocationSL DistanceFilter
" - dat += "

" - dat += "Refresh
" - dat += "Change Sorting Method
" - dat += "[dead_hidden ? "Show Dead Marines" : "Hide Dead Marines" ]
" - dat += "[marine_filter_enabled ? "Disable Marine Filter" : "Enable Marine Filter"]
" - dat += "Change Locations Ignored
" - dat += "
Back" - return dat - -/obj/structure/machinery/computer/overwatch/proc/get_supply_drop_menu_text() - var/dat = "Supply Drop Control

" - if(!current_squad) - dat += "No squad selected!" - else - dat += "Current Supply Drop Status: " - var/cooldown_left = COOLDOWN_TIMELEFT(current_squad, next_supplydrop) - if(cooldown_left > 0) - dat += "Launch tubes resetting ([round(cooldown_left/10)] seconds)
" - else - dat += SET_CLASS("Ready!", INTERFACE_GREEN) - dat += "
" - dat += "Launch Pad Status: " - var/obj/structure/closet/crate/C = locate() in current_squad.drop_pad.loc - if(C) - dat += SET_CLASS("Supply crate loaded", INTERFACE_GREEN) - dat += "
" - else - dat += "Empty
" - dat += "Longitude: [x_supply] Change
" - dat += "Latitude: [y_supply] Change

" - dat += "LAUNCH!" - dat += "

" - dat += "Refresh
" - dat += "Back" - return dat - -/obj/structure/machinery/computer/overwatch/proc/get_orbital_bombardment_control_text() - var/dat = "Orbital Bombardment Control

" - if(!current_squad) - dat += "No squad selected!" - else - dat += "Current Cannon Status: " - var/cooldown_left = COOLDOWN_TIMELEFT(almayer_orbital_cannon, ob_firing_cooldown) - if(almayer_orbital_cannon.is_disabled) - dat += "Cannon is disabled!
" - else if(cooldown_left > 0) - dat += "Cannon on cooldown ([round(cooldown_left/10)] seconds)
" - else if(!almayer_orbital_cannon.chambered_tray) - dat += SET_CLASS("No ammo chambered in the cannon.", INTERFACE_RED) - dat += "
" - else - dat += SET_CLASS("Ready!", INTERFACE_GREEN) - dat += "
" - dat += "Longitude: [x_bomb] Change
" - dat += "Latitude: [y_bomb] Change

" - dat += "FIRE!" - dat += "

" - dat += "Refresh
" - dat += "Back" - return dat - -/obj/structure/machinery/computer/overwatch/Topic(href, href_list) - if(..()) - return - if(!href_list["operation"]) - return - - if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (ishighersilicon(usr))) - usr.set_interaction(src) - - switch(href_list["operation"]) - // main interface - if("mapview") - tacmap.tgui_interact(usr) - if("back") - state = 0 - if("monitor") - state = 1 - if("supplies") - state = 2 - if("bombs") - state = 3 - if("change_operator") - if(operator != usr) - if(operator && ishighersilicon(operator)) - visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("AI override in progress. Access denied.")]") - return - if(!current_squad || current_squad.assume_overwatch(usr)) - operator = usr - if(ishighersilicon(usr)) - to_chat(usr, "[icon2html(src, usr)] [SPAN_BOLDNOTICE("Overwatch system AI override protocol successful.")]") - current_squad?.send_squad_message("Attention. [operator.name] has engaged overwatch system control override.", displayed_icon = src) - else - var/mob/living/carbon/human/H = operator - var/obj/item/card/id/ID = H.get_idcard() - visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Basic overwatch systems initialized. Welcome, [ID ? "[ID.rank] ":""][operator.name]. Please select a squad.")]") - current_squad?.send_squad_message("Attention. Your Overwatch officer is now [ID ? "[ID.rank] ":""][operator.name].", displayed_icon = src) + data["squad_list"] = list() + for(var/datum/squad/current_squad in RoleAuthority.squads) + if(current_squad.active && !current_squad.overwatch_officer && current_squad.faction == faction && current_squad.name != "Root") + data["squad_list"] += current_squad.name + return data + + data["current_squad"] = current_squad.name + + data["primary_objective"] = current_squad.primary_objective + data["secondary_objective"] = current_squad.secondary_objective + + data["marines"] = list() + + var/leader_count = 0 + var/ftl_count = 0 + var/spec_count = 0 + var/medic_count = 0 + var/engi_count = 0 + var/smart_count = 0 + var/marine_count = 0 + + var/leaders_alive = 0 + var/ftl_alive = 0 + var/spec_alive= 0 + var/medic_alive= 0 + var/engi_alive = 0 + var/smart_alive = 0 + var/marines_alive = 0 + + var/specialist_type + + var/SL_z //z level of the Squad Leader + if(current_squad.squad_leader) + var/turf/SL_turf = get_turf(current_squad.squad_leader) + SL_z = SL_turf.z + + for(var/marine in current_squad.marines_list) + if(!marine) + continue //just to be safe + var/mob_name = "unknown" + var/mob_state = "" + var/has_helmet = TRUE + var/role = "unknown" + var/acting_sl = "" + var/fteam = "" + var/distance = "???" + var/area_name = "???" + var/is_squad_leader = FALSE + var/mob/living/carbon/human/marine_human + + + if(ishuman(marine)) + marine_human = marine + if(istype(marine_human.loc, /obj/structure/machinery/cryopod)) //We don't care much for these + continue + mob_name = marine_human.real_name + var/area/current_area = get_area(marine_human) + var/turf/current_turf = get_turf(marine_human) + if(!current_turf) + continue + if(current_area) + area_name = sanitize_area(current_area.name) + + switch(z_hidden) + if(HIDE_ALMAYER) + if(is_mainship_level(current_turf.z)) + continue + if(HIDE_GROUND) + if(is_ground_level(current_turf.z)) + continue + + if(marine_human.job) + role = marine_human.job + else if(istype(marine_human.wear_id, /obj/item/card/id)) //decapitated marine is mindless, + var/obj/item/card/id/ID = marine_human.wear_id //we use their ID to get their role. + if(ID.rank) + role = ID.rank + + + if(current_squad.squad_leader) + if(marine_human == current_squad.squad_leader) + distance = "N/A" + if(current_squad.name == SQUAD_SOF) + if(marine_human.job == JOB_MARINE_RAIDER_CMD) + acting_sl = " (direct command)" + else if(marine_human.job != JOB_MARINE_RAIDER_SL) + acting_sl = " (acting TL)" + else if(marine_human.job != JOB_SQUAD_LEADER) + acting_sl = " (acting SL)" + is_squad_leader = TRUE + else if(current_turf && (current_turf.z == SL_z)) + distance = "[get_dist(marine_human, current_squad.squad_leader)] ([dir2text_short(get_dir(current_squad.squad_leader, marine_human))])" + + + switch(marine_human.stat) + if(CONSCIOUS) + mob_state = "Conscious" + + if(UNCONSCIOUS) + mob_state = "Unconscious" + + if(DEAD) + mob_state = "Dead" + + if(!istype(marine_human.head, /obj/item/clothing/head/helmet/marine)) + has_helmet = FALSE + + if(!marine_human.key || !marine_human.client) + if(marine_human.stat != DEAD) + mob_state += " (SSD)" + + + if(marine_human.assigned_fireteam) + fteam = " [marine_human.assigned_fireteam]" + + else //listed marine was deleted or gibbed, all we have is their name + for(var/datum/data/record/marine_record as anything in GLOB.data_core.general) + if(marine_record.fields["name"] == marine) + role = marine_record.fields["real_rank"] + break + mob_state = "Dead" + mob_name = marine + + + switch(role) + if(JOB_SQUAD_LEADER) + leader_count++ + if(mob_state != "Dead") + leaders_alive++ + if(JOB_SQUAD_TEAM_LEADER) + ftl_count++ + if(mob_state != "Dead") + ftl_alive++ + if(JOB_SQUAD_SPECIALIST) + spec_count++ + if(marine_human) + if(istype(marine_human.wear_id, /obj/item/card/id)) //decapitated marine is mindless, + var/obj/item/card/id/ID = marine_human.wear_id //we use their ID to get their role. + if(ID.assignment) + if(specialist_type) + specialist_type = "MULTIPLE" + else + var/list/spec_type = splittext(ID.assignment, "(") + if(islist(spec_type) && (length(spec_type) > 1)) + specialist_type = splittext(spec_type[2], ")")[1] + else if(!specialist_type) + specialist_type = "UNKNOWN" + if(mob_state != "Dead") + spec_alive++ + if(JOB_SQUAD_MEDIC) + medic_count++ + if(mob_state != "Dead") + medic_alive++ + if(JOB_SQUAD_ENGI) + engi_count++ + if(mob_state != "Dead") + engi_alive++ + if(JOB_SQUAD_SMARTGUN) + smart_count++ + if(mob_state != "Dead") + smart_alive++ + if(JOB_SQUAD_MARINE) + marine_count++ + if(mob_state != "Dead") + marines_alive++ + + var/marine_data = list(list("name" = mob_name, "state" = mob_state, "has_helmet" = has_helmet, "role" = role, "acting_sl" = acting_sl, "fteam" = fteam, "distance" = distance, "area_name" = area_name,"ref" = REF(marine))) + data["marines"] += marine_data + if(is_squad_leader) + if(!data["squad_leader"]) + data["squad_leader"] = marine_data[1] + + data["total_deployed"] = leader_count + ftl_count + spec_count + medic_count + engi_count + smart_count + marine_count + data["living_count"] = leaders_alive + ftl_alive + spec_alive + medic_alive + engi_alive + smart_alive + marines_alive + + data["leader_count"] = leader_count + data["ftl_count"] = ftl_count + data["spec_count"] = spec_count + data["medic_count"] = medic_count + data["engi_count"] = engi_count + data["smart_count"] = smart_count + + data["leaders_alive"] = leaders_alive + data["ftl_alive"] = ftl_alive + data["spec_alive"] = spec_alive + data["medic_alive"] = medic_alive + data["engi_alive"] = engi_alive + data["smart_alive"] = smart_alive + data["specialist_type"] = specialist_type ? specialist_type : "NONE" + + data["z_hidden"] = z_hidden + + data["saved_coordinates"] = list() + for(var/i in 1 to length(saved_coordinates)) + data["saved_coordinates"] += list(list("x" = saved_coordinates[i]["x"], "y" = saved_coordinates[i]["y"], "comment" = saved_coordinates[i]["comment"], "index" = i)) + + var/has_supply_pad = FALSE + var/obj/structure/closet/crate/supply_crate + if(current_squad.drop_pad) + supply_crate = locate() in current_squad.drop_pad.loc + has_supply_pad = TRUE + data["can_launch_crates"] = has_supply_pad + data["has_crate_loaded"] = supply_crate + data["supply_cooldown"] = COOLDOWN_TIMELEFT(current_squad, next_supplydrop) + data["ob_cooldown"] = COOLDOWN_TIMELEFT(almayer_orbital_cannon, ob_firing_cooldown) + data["ob_loaded"] = almayer_orbital_cannon.chambered_tray + + data["operator"] = operator.name + + return data + +/obj/structure/machinery/computer/overwatch/ui_state(mob/user) + return GLOB.not_incapacitated_and_adjacent_strict_state + +/obj/structure/machinery/computer/overwatch/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/mob/user = usr + + if((user.contents.Find(src) || (in_range(src, user) && istype(loc, /turf))) || (ishighersilicon(user))) + user.set_interaction(src) + + switch(action) + if("pick_squad") + if(current_squad) + return + var/datum/squad/selected_squad + for(var/datum/squad/searching_squad in RoleAuthority.squads) + if(searching_squad.active && !searching_squad.overwatch_officer && searching_squad.faction == faction && searching_squad.name != "Root" && searching_squad.name == params["squad"]) + selected_squad = searching_squad + break + + if(!selected_squad) + return + + if(selected_squad.assume_overwatch(user)) + current_squad = selected_squad + operator = user + current_squad.send_squad_message("Attention - Your squad has been selected for Overwatch. Check your Status pane for objectives.", displayed_icon = src) + current_squad.send_squad_message("Your Overwatch officer is: [operator.name].", displayed_icon = src) + visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Tactical data for squad '[current_squad]' loaded. All tactical functions initialized.")]") + return TRUE if("logout") if(current_squad?.release_overwatch()) - if(ishighersilicon(usr)) + if(ishighersilicon(user)) current_squad.send_squad_message("Attention. [operator.name] has released overwatch system control. Overwatch functions deactivated.", displayed_icon = src) - to_chat(usr, "[icon2html(src, usr)] [SPAN_BOLDNOTICE("Overwatch system control override disengaged.")]") + to_chat(user, "[icon2html(src, user)] [SPAN_BOLDNOTICE("Overwatch system control override disengaged.")]") else - var/mob/living/carbon/human/H = operator - var/obj/item/card/id/ID = H.get_idcard() + var/mob/living/carbon/human/human_operator = operator + var/obj/item/card/id/ID = human_operator.get_idcard() current_squad.send_squad_message("Attention. [ID ? "[ID.rank] ":""][operator ? "[operator.name]":"sysadmin"] is no longer your Overwatch officer. Overwatch functions deactivated.", displayed_icon = src) visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Overwatch systems deactivated. Goodbye, [ID ? "[ID.rank] ":""][operator ? "[operator.name]":"sysadmin"].")]") operator = null current_squad = null - if(cam && !ishighersilicon(usr)) - usr.reset_view(null) - usr.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) + if(cam && !ishighersilicon(user)) + user.reset_view(null) + user.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) cam = null - state = 0 - if("pick_squad") - if(operator == usr) - if(current_squad) - to_chat(usr, SPAN_WARNING("[icon2html(src, usr)] You are already selecting a squad.")) - else - var/list/squad_list = list() - for(var/datum/squad/S in RoleAuthority.squads) - if(S.active && !S.overwatch_officer && S.faction == faction && S.name != "Root") - squad_list += S.name - - var/name_sel = tgui_input_list(usr, "Which squad would you like to claim for Overwatch?", "Claim Squad", squad_list) - if(!name_sel) - return - if(operator != usr) - return - if(current_squad) - to_chat(usr, SPAN_WARNING("[icon2html(src, usr)] You are already selecting a squad.")) - return - var/datum/squad/selected = get_squad_by_name(name_sel) - if(selected) - //Link everything together, squad, console, and officer - if(selected.assume_overwatch(usr)) - current_squad = selected - current_squad.send_squad_message("Attention - Your squad has been selected for Overwatch. Check your Status pane for objectives.", displayed_icon = src) - current_squad.send_squad_message("Your Overwatch officer is: [operator.name].", displayed_icon = src) - visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Tactical data for squad '[current_squad]' loaded. All tactical functions initialized.")]") - attack_hand(usr) - else - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("Invalid input. Aborting.")]") + ui.close() + return TRUE + if("message") - if(current_squad && operator == usr) - var/input = sanitize_control_chars(stripped_input(usr, "Please write a message to announce to the squad:", "Squad Message")) + if(current_squad) + var/input = sanitize_control_chars(stripped_input(user, "Please write a message to announce to the squad:", "Squad Message")) if(input) current_squad.send_message(input, 1) //message, adds username current_squad.send_maptext(input, "Squad Message:") visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Message '[input]' sent to all Marines of squad '[current_squad]'.")]") - log_overwatch("[key_name(usr)] sent '[input]' to squad [current_squad].") + log_overwatch("[key_name(user)] sent '[input]' to squad [current_squad].") + if("sl_message") - if(current_squad && operator == usr) - var/input = sanitize_control_chars(stripped_input(usr, "Please write a message to announce to the squad leader:", "SL Message")) + if(current_squad) + var/input = sanitize_control_chars(stripped_input(user, "Please write a message to announce to the squad leader:", "SL Message")) if(input) current_squad.send_message(input, 1, 1) //message, adds username, only to leader current_squad.send_maptext(input, "Squad Leader Message:", 1) visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Message '[input]' sent to Squad Leader [current_squad.squad_leader] of squad '[current_squad]'.")]") - log_overwatch("[key_name(usr)] sent '[input]' to Squad Leader [current_squad.squad_leader] of squad [current_squad].") + log_overwatch("[key_name(user)] sent '[input]' to Squad Leader [current_squad.squad_leader] of squad [current_squad].") + if("check_primary") if(current_squad) //This is already checked, but ehh. if(current_squad.primary_objective) - visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Reminding primary objectives of squad '[current_squad]'.")]") - to_chat(usr, "[icon2html(src, usr)] Primary Objective: [current_squad.primary_objective]") + visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Reminding '[current_squad]' of primary objectives: [current_squad.primary_objective].")]") + current_squad.send_message("Your primary objective is '[current_squad.primary_objective]'. See Status pane for details.") + current_squad.send_maptext(current_squad.primary_objective, "Primary Objective:") + if("check_secondary") if(current_squad) //This is already checked, but ehh. if(current_squad.secondary_objective) - visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Reminding secondary objectives of squad '[current_squad]'.")]") - to_chat(usr, "[icon2html(src, usr)] Secondary Objective: [current_squad.secondary_objective]") + visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Reminding '[current_squad]' of secondary objectives: [current_squad.secondary_objective].")]") + current_squad.send_message("Your secondary objective is '[current_squad.secondary_objective]'. See Status pane for details.") + current_squad.send_maptext(current_squad.secondary_objective, "Secondary Objective:") + if("set_primary") var/input = sanitize_control_chars(stripped_input(usr, "What will be the squad's primary objective?", "Primary Objective")) if(current_squad && input) @@ -496,6 +414,8 @@ current_squad.send_maptext(input, "Primary Objective Updated:") visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Primary objective of squad '[current_squad]' set to '[input]'.")]") log_overwatch("[key_name(usr)] set [current_squad]'s primary objective to '[input]'.") + return TRUE + if("set_secondary") var/input = sanitize_control_chars(stripped_input(usr, "What will be the squad's secondary objective?", "Secondary Objective")) if(input) @@ -504,108 +424,174 @@ current_squad.send_maptext(input, "Secondary Objective Updated:") visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Secondary objective of squad '[current_squad]' set to '[input]'.")]") log_overwatch("[key_name(usr)] set [current_squad]'s secondary objective to '[input]'.") - if("supply_x") - var/input = tgui_input_real_number(usr,"What longitude should be targetted? (Increments towards the east)", "X Coordinate", 0) - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Longitude is now [input].")]") - x_supply = input - if("supply_y") - var/input = tgui_input_real_number(usr,"What latitude should be targetted? (Increments towards the north)", "Y Coordinate", 0) - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Latitude is now [input].")]") - y_supply = input - if("bomb_x") - var/input = tgui_input_real_number(usr,"What longitude should be targetted? (Increments towards the east)", "X Coordinate", 0) - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Longitude is now [input].")]") - x_bomb = input - if("bomb_y") - var/input = tgui_input_real_number(usr,"What latitude should be targetted? (Increments towards the north)", "Y Coordinate", 0) - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Latitude is now [input].")]") - y_bomb = input - if("refresh") - attack_hand(usr) - if("change_sort") - living_marines_sorting = !living_marines_sorting - if(living_marines_sorting) - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Marines are now sorted by health status.")]") - else - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Marines are now sorted by rank.")]") - if("hide_dead") - dead_hidden = !dead_hidden - if(dead_hidden) - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Dead marines are now not shown.")]") - else - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Dead marines are now shown again.")]") - if("choose_z") + return TRUE + if("replace_lead") + if(!params["ref"]) + return + change_lead(user, params["ref"]) + + if("insubordination") + mark_insubordination() + if("transfer_marine") + transfer_squad() + + if("change_locations_ignored") switch(z_hidden) if(HIDE_NONE) z_hidden = HIDE_ALMAYER - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Marines on the Almayer are now hidden.")]") + to_chat(user, "[icon2html(src, usr)] [SPAN_NOTICE("Marines on the Almayer are now hidden.")]") if(HIDE_ALMAYER) z_hidden = HIDE_GROUND - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Marines on the ground are now hidden.")]") + to_chat(user, "[icon2html(src, usr)] [SPAN_NOTICE("Marines on the ground are now hidden.")]") else z_hidden = HIDE_NONE - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("No location is ignored anymore.")]") - - if("toggle_marine_filter") - if(marine_filter_enabled) - marine_filter_enabled = FALSE - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("All marines will now be shown regardless of filter.")]") + to_chat(user, "[icon2html(src, usr)] [SPAN_NOTICE("No location is ignored anymore.")]") + if("tacmap_unpin") + tacmap.tgui_interact(user) + if("dropbomb") + if(!params["x"] || !params["y"]) + return + x_bomb = text2num(params["x"]) + y_bomb = text2num(params["y"]) + if(almayer_orbital_cannon.is_disabled) + to_chat(user, "[icon2html(src, usr)] [SPAN_WARNING("Orbital bombardment cannon disabled!")]") + else if(!COOLDOWN_FINISHED(almayer_orbital_cannon, ob_firing_cooldown)) + to_chat(user, "[icon2html(src, usr)] [SPAN_WARNING("Orbital bombardment cannon not yet ready to fire again! Please wait [COOLDOWN_TIMELEFT(almayer_orbital_cannon, ob_firing_cooldown)/10] seconds.")]") else - marine_filter_enabled = TRUE - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Individual Marine Filter is now enabled.")]") - if("filter_marine") - if (current_squad) - var/squaddie = href_list["squaddie"] - if(!(squaddie in marine_filter)) - marine_filter += squaddie - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Marine now hidden.")]") - else - marine_filter -= squaddie - to_chat(usr, "[icon2html(src, usr)] [SPAN_NOTICE("Marine will now be shown.")]") - if("change_lead") - change_lead() - if("insubordination") - mark_insubordination() - if("squad_transfer") - transfer_squad() + handle_bombard(user) + if("dropsupply") + if(!params["x"] || !params["y"]) + return + x_supply = text2num(params["x"]) + y_supply = text2num(params["y"]) if(current_squad) if(!COOLDOWN_FINISHED(current_squad, next_supplydrop)) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("Supply drop not yet ready to launch again!")]") + to_chat(user, "[icon2html(src, user)] [SPAN_WARNING("Supply drop not yet ready to launch again!")]") else handle_supplydrop() - if("dropbomb") - if(almayer_orbital_cannon.is_disabled) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("Orbital bombardment cannon disabled!")]") - else if(!COOLDOWN_FINISHED(almayer_orbital_cannon, ob_firing_cooldown)) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("Orbital bombardment cannon not yet ready to fire again! Please wait [COOLDOWN_TIMELEFT(almayer_orbital_cannon, ob_firing_cooldown)/10] seconds.")]") - else - handle_bombard(usr) - if("back") - state = 0 - if("use_cam") - if(isRemoteControlling(usr)) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("Unable to override console camera viewer. Track with camera instead. ")]") + + if("save_coordinates") + if(!params["x"] || !params["y"]) + return + if(length(saved_coordinates) >= MAX_SAVED_COORDINATES) + popleft(saved_coordinates) + saved_coordinates += list(list("x" = text2num(params["x"]), "y" = text2num(params["y"]))) + return TRUE + if("change_coordinate_comment") + if(!params["index"] || !params["comment"]) + return + var/index = text2num(params["index"]) + if(length(saved_coordinates) + 1 < index) + return + saved_coordinates[index]["comment"] = params["comment"] + return TRUE + + if("watch_camera") + if(isRemoteControlling(user)) + to_chat(user, "[icon2html(src, user)] [SPAN_WARNING("Unable to override console camera viewer. Track with camera instead. ")]") + return + if(!params["target_ref"]) return if(current_squad) - var/mob/cam_target = locate(href_list["cam_target"]) + var/mob/cam_target = locate(params["target_ref"]) var/obj/structure/machinery/camera/new_cam = get_camera_from_target(cam_target) if(!new_cam || !new_cam.can_use()) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("Searching for helmet cam. No helmet cam found for this marine! Tell your squad to put their helmets on!")]") + to_chat(user, "[icon2html(src, user)] [SPAN_WARNING("Searching for helmet cam. No helmet cam found for this marine! Tell your squad to put their helmets on!")]") else if(cam && cam == new_cam)//click the camera you're watching a second time to stop watching. visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Stopping helmet cam view of [cam_target].")]") - usr.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) + user.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) cam = null - usr.reset_view(null) - else if(usr.client.view != world_view_size) - to_chat(usr, SPAN_WARNING("You're too busy peering through binoculars.")) + user.reset_view(null) + else if(user.client.view != world_view_size) + to_chat(user, SPAN_WARNING("You're too busy peering through binoculars.")) else if(cam) - usr.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) + user.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) cam = new_cam - usr.reset_view(cam) - usr.RegisterSignal(cam, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/mob, reset_observer_view_on_deletion)) - attack_hand(usr) //The above doesn't ever seem to work. + user.reset_view(cam) + user.RegisterSignal(cam, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/mob, reset_observer_view_on_deletion)) + if("change_operator") + if(operator != user) + if(operator && ishighersilicon(operator)) + visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("AI override in progress. Access denied.")]") + return + if(!current_squad || current_squad.assume_overwatch(user)) + operator = user + if(ishighersilicon(user)) + to_chat(user, "[icon2html(src, usr)] [SPAN_BOLDNOTICE("Overwatch system AI override protocol successful.")]") + current_squad?.send_squad_message("Attention. [operator.name] has engaged overwatch system control override.", displayed_icon = src) + else + var/mob/living/carbon/human/H = operator + var/obj/item/card/id/ID = H.get_idcard() + visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Basic overwatch systems initialized. Welcome, [ID ? "[ID.rank] ":""][operator.name]. Please select a squad.")]") + current_squad?.send_squad_message("Attention. Your Overwatch officer is now [ID ? "[ID.rank] ":""][operator.name].", displayed_icon = src) + + +/obj/structure/machinery/computer/overwatch/proc/change_lead(mob/user, sl_ref) + if(!user) + return + + if(!current_squad) + return + + var/mob/living/carbon/human/selected_sl = locate(sl_ref) in current_squad.marines_list + if(!selected_sl) + return + if(!istype(selected_sl)) + return + + if(!istype(selected_sl) || !selected_sl.mind || selected_sl.stat == DEAD) //marines_list replaces mob refs of gibbed marines with just a name string + to_chat(user, "[icon2html(src, usr)] [SPAN_WARNING("[selected_sl] is KIA!")]") + return + if(selected_sl == current_squad.squad_leader) + to_chat(user, "[icon2html(src, usr)] [SPAN_WARNING("[selected_sl] is already the Squad Leader!")]") + return + if(jobban_isbanned(selected_sl, JOB_SQUAD_LEADER)) + to_chat(user, "[icon2html(src, usr)] [SPAN_WARNING("[selected_sl] is unfit to lead!")]") + return + if(current_squad.squad_leader) + current_squad.send_message("Attention: [current_squad.squad_leader] is [current_squad.squad_leader.stat == DEAD ? "stepping down" : "demoted"]. A new Squad Leader has been set: [selected_sl.real_name].") + visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Squad Leader [current_squad.squad_leader] of squad '[current_squad]' has been [current_squad.squad_leader.stat == DEAD ? "replaced" : "demoted and replaced"] by [selected_sl.real_name]! Logging to enlistment files.")]") + var/old_lead = current_squad.squad_leader + current_squad.demote_squad_leader(current_squad.squad_leader.stat != DEAD) + SStracking.start_tracking(current_squad.tracking_id, old_lead) + else + current_squad.send_message("Attention: A new Squad Leader has been set: [selected_sl.real_name].") + visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("[selected_sl.real_name] is the new Squad Leader of squad '[current_squad]'! Logging to enlistment file.")]") + + to_chat(selected_sl, "[icon2html(src, selected_sl)] Overwatch: You've been promoted to \'[selected_sl.job == JOB_SQUAD_LEADER ? "SQUAD LEADER" : "ACTING SQUAD LEADER"]\' for [current_squad.name]. Your headset has access to the command channel (:v).") + to_chat(user, "[icon2html(src, usr)] [selected_sl.real_name] is [current_squad]'s new leader!") + + if(selected_sl.assigned_fireteam) + if(selected_sl == current_squad.fireteam_leaders[selected_sl.assigned_fireteam]) + current_squad.unassign_ft_leader(selected_sl.assigned_fireteam, TRUE, FALSE) + current_squad.unassign_fireteam(selected_sl, FALSE) + + current_squad.squad_leader = selected_sl + current_squad.update_squad_leader() + current_squad.update_free_mar() + + SStracking.set_leader(current_squad.tracking_id, selected_sl) + SStracking.start_tracking("marine_sl", selected_sl) + + if(selected_sl.job == JOB_SQUAD_LEADER)//a real SL + selected_sl.comm_title = "SL" + else //an acting SL + selected_sl.comm_title = "aSL" + ADD_TRAIT(selected_sl, TRAIT_LEADERSHIP, TRAIT_SOURCE_SQUAD_LEADER) + + var/obj/item/device/radio/headset/almayer/marine/sl_headset = selected_sl.get_type_in_ears(/obj/item/device/radio/headset/almayer/marine) + if(sl_headset) + sl_headset.keys += new /obj/item/device/encryptionkey/squadlead/acting(sl_headset) + sl_headset.recalculateChannels() + if(istype(selected_sl.wear_id, /obj/item/card/id)) + var/obj/item/card/id/ID = selected_sl.wear_id + ID.access += ACCESS_MARINE_LEADER + selected_sl.hud_set_squad() + selected_sl.update_inv_head() //updating marine helmet leader overlays + selected_sl.update_inv_wear_suit() + /obj/structure/machinery/computer/overwatch/check_eye(mob/user) if(user.is_mob_incapacitated(TRUE) || get_dist(user, src) > 1 || user.blinded) //user can't see - not sure why canmove is here. @@ -621,6 +607,14 @@ cam = null user.reset_view(null) +/obj/structure/machinery/computer/overwatch/ui_close(mob/user) + ..() + if(!isRemoteControlling(user)) + if(cam) + user.UnregisterSignal(cam, COMSIG_PARENT_QDELETING) + cam = null + user.reset_view(null) + //returns the helmet camera the human is wearing /obj/structure/machinery/computer/overwatch/proc/get_camera_from_target(mob/living/carbon/human/H) if(current_squad) @@ -648,73 +642,9 @@ to_chat(M, SPAN_HIGHDANGER("Orbital bombardment launch command detected!")) to_chat(M, SPAN_DANGER("Launch command informs [ob_type] warhead. Estimated impact area: [ob_area.name]")) -/obj/structure/machinery/computer/overwatch/proc/change_lead() - if(!usr || usr != operator) - return - if(!current_squad) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("No squad selected!")]") - return - var/sl_candidates = list() - for(var/mob/living/carbon/human/H in current_squad.marines_list) - if(istype(H) && H.stat != DEAD && H.mind && !jobban_isbanned(H, JOB_SQUAD_LEADER)) - sl_candidates += H - var/new_lead = tgui_input_list(usr, "Choose a new Squad Leader", "Replace SL", sl_candidates) - if(!new_lead || new_lead == "Cancel") - return - var/mob/living/carbon/human/H = new_lead - if(!istype(H) || !H.mind || H.stat == DEAD) //marines_list replaces mob refs of gibbed marines with just a name string - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("[H] is KIA!")]") - return - if(H == current_squad.squad_leader) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("[H] is already the Squad Leader!")]") - return - if(jobban_isbanned(H, JOB_SQUAD_LEADER)) - to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("[H] is unfit to lead!")]") - return - if(current_squad.squad_leader) - current_squad.send_message("Attention: [current_squad.squad_leader] is [current_squad.squad_leader.stat == DEAD ? "stepping down" : "demoted"]. A new Squad Leader has been set: [H.real_name].") - visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("Squad Leader [current_squad.squad_leader] of squad '[current_squad]' has been [current_squad.squad_leader.stat == DEAD ? "replaced" : "demoted and replaced"] by [H.real_name]! Logging to enlistment files.")]") - var/old_lead = current_squad.squad_leader - current_squad.demote_squad_leader(current_squad.squad_leader.stat != DEAD) - SStracking.start_tracking(current_squad.tracking_id, old_lead) - else - current_squad.send_message("Attention: A new Squad Leader has been set: [H.real_name].") - visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("[H.real_name] is the new Squad Leader of squad '[current_squad]'! Logging to enlistment file.")]") - - to_chat(H, "[icon2html(src, H)] Overwatch: You've been promoted to \'[H.job == JOB_SQUAD_LEADER ? "SQUAD LEADER" : "ACTING SQUAD LEADER"]\' for [current_squad.name]. Your headset has access to the command channel (:v).") - to_chat(usr, "[icon2html(src, usr)] [H.real_name] is [current_squad]'s new leader!") - - if(H.assigned_fireteam) - if(H == current_squad.fireteam_leaders[H.assigned_fireteam]) - current_squad.unassign_ft_leader(H.assigned_fireteam, TRUE, FALSE) - current_squad.unassign_fireteam(H, FALSE) - - current_squad.squad_leader = H - current_squad.update_squad_leader() - current_squad.update_free_mar() - - SStracking.set_leader(current_squad.tracking_id, H) - SStracking.start_tracking("marine_sl", H) - - if(H.job == JOB_SQUAD_LEADER)//a real SL - H.comm_title = "SL" - else //an acting SL - H.comm_title = "aSL" - ADD_TRAIT(H, TRAIT_LEADERSHIP, TRAIT_SOURCE_SQUAD_LEADER) - - var/obj/item/device/radio/headset/almayer/marine/R = H.get_type_in_ears(/obj/item/device/radio/headset/almayer/marine) - if(R) - R.keys += new /obj/item/device/encryptionkey/squadlead/acting(R) - R.recalculateChannels() - if(istype(H.wear_id, /obj/item/card/id)) - var/obj/item/card/id/ID = H.wear_id - ID.access += ACCESS_MARINE_LEADER - H.hud_set_squad() - H.update_inv_head() //updating marine helmet leader overlays - H.update_inv_wear_suit() /obj/structure/machinery/computer/overwatch/proc/mark_insubordination() - if(!usr || usr != operator) + if(!usr) return if(!current_squad) to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("No squad selected!")]") @@ -748,7 +678,7 @@ return /obj/structure/machinery/computer/overwatch/proc/transfer_squad() - if(!usr || usr != operator) + if(!usr) return if(!current_squad) to_chat(usr, "[icon2html(src, usr)] [SPAN_WARNING("No squad selected!")]") @@ -862,12 +792,13 @@ return var/ob_name = lowertext(almayer_orbital_cannon.tray.warhead.name) - announce_dchat("\A [ob_name] targeting [A.name] has been fired!", T) + var/mutable_appearance/warhead_appearance = mutable_appearance(almayer_orbital_cannon.tray.warhead.icon, almayer_orbital_cannon.tray.warhead.icon_state) + notify_ghosts(header = "Bombardment Inbound", message = "\A [ob_name] targeting [A.name] has been fired!", source = T, alert_overlay = warhead_appearance, extra_large = TRUE) message_admins(FONT_SIZE_HUGE("ALERT: [key_name(user)] fired an orbital bombardment in [A.name] for squad '[current_squad]' [ADMIN_JMP(T)]")) log_attack("[key_name(user)] fired an orbital bombardment in [A.name] for squad '[current_squad]'") /// Project ARES interface log. - GLOB.ares_link.log_ares_bombardment(user, ob_name, "X[x_bomb], Y[y_bomb] in [A.name]") + GLOB.ares_link.log_ares_bombardment(user.name, ob_name, "X[x_bomb], Y[y_bomb] in [A.name]") busy = FALSE var/turf/target = locate(T.x + rand(-3, 3), T.y + rand(-3, 3), T.z) @@ -877,7 +808,7 @@ /obj/structure/machinery/computer/overwatch/proc/handle_supplydrop() SHOULD_NOT_SLEEP(TRUE) - if(!usr || usr != operator) + if(!usr) return if(busy) diff --git a/code/modules/gear_presets/_select_equipment.dm b/code/modules/gear_presets/_select_equipment.dm index 89b0fe072c9b..879cabefdf12 100644 --- a/code/modules/gear_presets/_select_equipment.dm +++ b/code/modules/gear_presets/_select_equipment.dm @@ -954,7 +954,7 @@ var/list/rebel_rifles = list( /datum/equipment_preset/proc/add_upp_weapon(mob/living/carbon/human/new_human) var/random_gun = rand(1,5) switch(random_gun) - if(1,2) + if(1, 2) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71(new_human), WEAR_L_HAND) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) @@ -967,7 +967,7 @@ var/list/rebel_rifles = list( new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot(new_human), WEAR_IN_BACK) - if(4) + if(5) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/bizon(new_human), WEAR_L_HAND) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon(new_human), WEAR_IN_BACK) diff --git a/code/modules/gear_presets/survivors.dm b/code/modules/gear_presets/survivors.dm index 37bc52936c40..15fa02142727 100644 --- a/code/modules/gear_presets/survivors.dm +++ b/code/modules/gear_presets/survivors.dm @@ -1614,11 +1614,13 @@ new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/med_small_stack(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/recon(new_human), WEAR_L_EAR) /datum/equipment_preset/survivor/upp/soldier name = "Survivor - UPP Soldier" paygrade = "UE2" - assignment = "UPP Soldier" + assignment = JOB_UPP + rank = JOB_UPP skills = /datum/skills/military/survivor/upp_private /datum/equipment_preset/survivor/upp/soldier/load_gear(mob/living/carbon/human/new_human) @@ -1641,7 +1643,8 @@ /datum/equipment_preset/survivor/upp/sapper name = "Survivor - UPP Sapper" paygrade = "UE3S" - assignment = "UPP Sapper" + assignment = JOB_UPP_ENGI + rank = JOB_UPP_ENGI skills = /datum/skills/military/survivor/upp_sapper /datum/equipment_preset/survivor/upp/sapper/load_gear(mob/living/carbon/human/new_human) @@ -1667,7 +1670,8 @@ /datum/equipment_preset/survivor/upp/medic name = "Survivor - UPP Medic" paygrade = "UE3M" - assignment = "UPP Medic" + assignment = JOB_UPP_MEDIC + rank = JOB_UPP_MEDIC skills = /datum/skills/military/survivor/upp_medic /datum/equipment_preset/survivor/upp/medic/load_gear(mob/living/carbon/human/new_human) @@ -1694,8 +1698,9 @@ /datum/equipment_preset/survivor/upp/specialist name = "Survivor - UPP Specialist" + assignment = JOB_UPP_SPECIALIST + rank = JOB_UPP_SPECIALIST paygrade = "UE4" - assignment = "UPP Specialist" skills = /datum/skills/military/survivor/upp_spec /datum/equipment_preset/survivor/upp/specialist/load_gear(mob/living/carbon/human/new_human) @@ -1714,14 +1719,15 @@ /datum/equipment_preset/survivor/upp/squad_leader name = "Survivor - UPP Squad Leader" paygrade = "UE5" + assignment = JOB_UPP_LEADER + rank = JOB_UPP_LEADER languages = list(LANGUAGE_RUSSIAN, LANGUAGE_ENGLISH, LANGUAGE_GERMAN, LANGUAGE_CHINESE) - assignment = "UPP Squad Leader" role_comm_title = "UPP 173Rd RECON SL" skills = /datum/skills/military/survivor/upp_sl /datum/equipment_preset/survivor/upp/squad_leader/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/officer (new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer (new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP (new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index 32bcd61d6708..51b41c1387af 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -460,7 +460,7 @@ flags = EQUIPMENT_PRESET_EXTRA languages = ALL_SYNTH_LANGUAGES_UPP assignment = JOB_UPP_COMBAT_SYNTH - rank = JOB_SURVIVOR + rank = JOB_UPP_COMBAT_SYNTH faction = FACTION_UPP faction_group = list(FACTION_UPP, FACTION_SURVIVOR) skills = /datum/skills/colonial_synthetic @@ -479,7 +479,7 @@ new_human.equip_to_slot_or_del(uniform, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver, WEAR_R_EAR) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/recon, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/multitool, WEAR_IN_BACK) diff --git a/code/modules/gear_presets/uscm_medical.dm b/code/modules/gear_presets/uscm_medical.dm index 080911951b54..47d5ee19c9b4 100644 --- a/code/modules/gear_presets/uscm_medical.dm +++ b/code/modules/gear_presets/uscm_medical.dm @@ -173,9 +173,9 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science/prescription(new_human), WEAR_EYES) else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/researcher(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/bad(new_human), WEAR_IN_JACKET) diff --git a/code/modules/maptext_alerts/screen_alerts.dm b/code/modules/maptext_alerts/screen_alerts.dm index e96b436bde21..6d251080e87b 100644 --- a/code/modules/maptext_alerts/screen_alerts.dm +++ b/code/modules/maptext_alerts/screen_alerts.dm @@ -116,3 +116,133 @@ if(LAZYLEN(player.screen_texts)) player.screen_texts[1].play_to_client() // Theres more? +/** + * Proc to create or update an alert. Returns the alert if the alert is new or updated, 0 if it was thrown already + * category is a text string. Each mob may only have one alert per category; the previous one will be replaced + * path is a type path of the actual alert type to throw + * severity is an optional number that will be placed at the end of the icon_state for this alert + * For example, high pressure's icon_state is "highpressure" and can be serverity 1 or 2 to get "highpressure1" or "highpressure2" + * new_master is optional and sets the alert's icon state to "template" in the ui_style icons with the master as an overlay. + * Clicks are forwarded to master + * Override makes it so the alert is not replaced until cleared by a clear_alert with clear_override, and it's used for hallucinations. + */ +/mob/proc/throw_alert(category, type, severity, obj/new_master, override = FALSE) + if(!category || QDELETED(src)) + return + + var/atom/movable/screen/alert/thealert + if(alerts[category]) + thealert = alerts[category] + if(thealert.override_alerts) + return FALSE + if(new_master && new_master != thealert.master) + WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [thealert.master]") + + clear_alert(category) + return .() + else if(thealert.type != type) + clear_alert(category) + return .() + else if(!severity || severity == thealert.severity) + if(thealert.timeout) + clear_alert(category) + return .() + else //no need to update + return FALSE + else + thealert = new type() + thealert.override_alerts = override + if(override) + thealert.timeout = null + thealert.owner = src + + if(new_master) + var/old_layer = new_master.layer + var/old_plane = new_master.plane + new_master.layer = FLOAT_LAYER + new_master.plane = FLOAT_PLANE + thealert.overlays += new_master + new_master.layer = old_layer + new_master.plane = old_plane + thealert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts() + thealert.master = new_master + else + thealert.icon_state = "[initial(thealert.icon_state)][severity]" + thealert.severity = severity + + alerts[category] = thealert + if(client && hud_used) + hud_used.reorganize_alerts() + thealert.transform = matrix(32, 6, MATRIX_TRANSLATE) + animate(thealert, transform = matrix(), time = 2.5, easing = CUBIC_EASING) + + if(thealert.timeout) + addtimer(CALLBACK(src, PROC_REF(alert_timeout), thealert, category), thealert.timeout) + thealert.timeout = world.time + thealert.timeout - world.tick_lag + return thealert + +/mob/proc/alert_timeout(atom/movable/screen/alert/alert, category) + if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout) + clear_alert(category) + +// Proc to clear an existing alert. +/mob/proc/clear_alert(category, clear_override = FALSE) + var/atom/movable/screen/alert/alert = alerts[category] + if(!alert) + return FALSE + if(alert.override_alerts && !clear_override) + return FALSE + + alerts -= category + if(client && hud_used) + hud_used.reorganize_alerts() + client.screen -= alert + qdel(alert) + +/atom/movable/screen/alert + icon = 'icons/mob/screen_alert.dmi' + icon_state = "default" + name = "Alert" + desc = "Something seems to have gone wrong with this alert, so report this bug please" + mouse_opacity = MOUSE_OPACITY_ICON + /// If set to a number, this alert will clear itself after that many deciseconds + var/timeout = 0 + var/severity = 0 + var/alerttooltipstyle = "" + /// If it is overriding other alerts of the same type + var/override_alerts = FALSE + /// Alert owner + var/mob/owner + +/atom/movable/screen/alert/MouseEntered(location,control,params) + . = ..() + if(!QDELETED(src)) + openToolTip(usr, src, params, title = name, content = desc, theme = alerttooltipstyle) + +/atom/movable/screen/alert/notify_action + name = "Notification" + desc = "A new notification. You can enter it." + icon_state = "template" + timeout = 15 SECONDS + var/atom/target = null + var/action = NOTIFY_JUMP + +/atom/movable/screen/alert/notify_action/Click() + var/mob/dead/observer/ghost_user = usr + if(!istype(ghost_user) || usr != owner) + return + if(!ghost_user.client) + return + if(!target) + return + switch(action) + if(NOTIFY_ATTACK) + target.attack_ghost(ghost_user) + if(NOTIFY_JUMP) + var/turf/gotten_turf = get_turf(target) + if(gotten_turf) + ghost_user.forceMove(gotten_turf) + if(NOTIFY_ORBIT) + ghost_user.ManualFollow(target) + if(NOTIFY_JOIN_XENO) + ghost_user.join_as_alien() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 407c64987d88..21a992693aa8 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -256,6 +256,10 @@ A.JumpToCoord(x, y, z) if(href_list["joinresponseteam"]) JoinResponseTeam() + if(href_list["claim_freed"]) + handle_joining_as_freed_mob(locate(href_list["claim_freed"])) + if(href_list["join_xeno"]) + join_as_alien() /mob/dead/observer/proc/set_huds_from_prefs() if(!client || !client.prefs) @@ -907,19 +911,23 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return var/mob/living/L = freed_mob_choices[choice] - if(!L || !(WEAKREF(L) in GLOB.freed_mob_list)) + + handle_joining_as_freed_mob(L) + +/mob/dead/proc/handle_joining_as_freed_mob(mob/living/freed_mob) + if(!freed_mob || !(WEAKREF(freed_mob) in GLOB.freed_mob_list)) return - if(!istype(L)) + if(!istype(freed_mob)) return - if(QDELETED(L) || L.client) - GLOB.freed_mob_list -= WEAKREF(L) + if(QDELETED(freed_mob) || freed_mob.client) + GLOB.freed_mob_list -= WEAKREF(freed_mob) to_chat(src, SPAN_WARNING("Something went wrong.")) return - GLOB.freed_mob_list -= WEAKREF(L) - M.mind.transfer_to(L, TRUE) + GLOB.freed_mob_list -= WEAKREF(freed_mob) + mind.transfer_to(freed_mob, TRUE) /mob/dead/verb/join_as_hellhound() set category = "Ghost.Join" diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 3896cd1f9ded..19810893694a 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -104,7 +104,7 @@ delayer_armour.can_camo = FALSE //fuck you to_chat(delayer, SPAN_WARNING("Your [delayer_armour]'s camo system breaks!")) //tell the ghosts - announce_dchat("There is only one person left: [last_living_human.real_name].", last_living_human) + notify_ghosts(header = "Last Human", message = "There is only one person left: [last_living_human.real_name]!", source = last_living_human, action = NOTIFY_ORBIT) var/death_message = species.death_message if(HAS_TRAIT(src, TRAIT_HARDCORE)) diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index 4ce266f70596..95c0d420b3e5 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -273,14 +273,8 @@ // Inform observers to grab some popcorn if it isnt nested if(!HAS_TRAIT(affected_mob, TRAIT_NESTED)) var/area/burst_area = get_area(src) - if(burst_area) - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob] at \the [burst_area]! [OBSERVER_JMP(observer, affected_mob)]")) - to_chat(src, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob] at \the [burst_area]!")) - else - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob]! [OBSERVER_JMP(observer, affected_mob)]")) - to_chat(src, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob]!")) + var/area_text = burst_area ? " at [burst_area]" : "" + notify_ghosts(header = "Burst Imminent", message = "A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob][area_text]!", source = affected_mob) stage = 7 // Begin the autoburst countdown diff --git a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm index bc86ea40361c..5571b122ecaa 100644 --- a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm @@ -284,12 +284,10 @@ var/area/hug_area = get_area(src) var/name = hugger ? "[hugger]" : "\a [src]" if(hug_area) - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("[human] has been facehugged by [name] at \the [hug_area] [OBSERVER_JMP(observer, human)]")) + notify_ghosts(header = "Hugged", message = "[human] has been hugged by [name] at [hug_area]!", source = human, action = NOTIFY_ORBIT) to_chat(src, SPAN_DEADSAY("[human] has been facehugged by [name] at \the [hug_area]")) else - for(var/mob/dead/observer/observer as anything in GLOB.observer_list) - to_chat(observer, SPAN_DEADSAY("[human] has been facehugged by [name] [OBSERVER_JMP(observer, human)]")) + notify_ghosts(header = "Hugged", message = "[human] has been hugged by [name]!", source = human, action = NOTIFY_ORBIT) to_chat(src, SPAN_DEADSAY("[human] has been facehugged by [name]")) if(hug_area) xeno_message(SPAN_XENOMINORWARNING("You sense that [name] has facehugged a host at \the [hug_area]!"), 1, hivenumber) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 32c55ba6fd4c..5c1210f5c845 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -1091,7 +1091,7 @@ handle_ghost_message() /mob/living/carbon/xenomorph/proc/handle_ghost_message() - announce_dchat("[src] ([mutation_type] [caste_type]) has ghosted and their body is up for grabs!", src) + notify_ghosts("[src] ([mutation_type] [caste_type]) has ghosted and their body is up for grabs!", source = src) /mob/living/carbon/xenomorph/larva/handle_ghost_message() if(locate(/obj/effect/alien/resin/special/pylon/core) in range(2, get_turf(src))) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm index 8a7425e2071a..b83b33e2eee5 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm @@ -391,6 +391,7 @@ . = ..() if(!is_admin_level(z))//so admins can safely spawn Queens in Thunderdome for tests. xeno_message(SPAN_XENOANNOUNCE("A new Queen has risen to lead the Hive! Rejoice!"),3,hivenumber) + notify_ghosts(header = "New Queen", message = "A new Queen has risen.", source = src, action = NOTIFY_ORBIT) playsound(loc, 'sound/voice/alien_queen_command.ogg', 75, 0) set_resin_build_order(GLOB.resin_build_order_drone) for(var/datum/action/xeno_action/action in actions) diff --git a/code/modules/mob/living/carbon/xenomorph/death.dm b/code/modules/mob/living/carbon/xenomorph/death.dm index 3a8d344ff68d..d81413b68651 100644 --- a/code/modules/mob/living/carbon/xenomorph/death.dm +++ b/code/modules/mob/living/carbon/xenomorph/death.dm @@ -61,6 +61,7 @@ message_alien_candidates(players_with_xeno_pref, dequeued = count) if(hive && hive.living_xeno_queen == src) + notify_ghosts(header = "Queen Death", message = "The Queen has been slain!", source = src, action = NOTIFY_ORBIT) xeno_message(SPAN_XENOANNOUNCE("A sudden tremor ripples through the hive... the Queen has been slain! Vengeance!"),3, hivenumber) hive.slashing_allowed = XENO_SLASH_ALLOWED hive.set_living_xeno_queen(null) @@ -129,7 +130,7 @@ // Tell the xeno she is the last one. if(X.client) to_chat(X, SPAN_XENOANNOUNCE("Your carapace rattles with dread. You are all that remains of the hive!")) - announce_dchat("There is only one Xenomorph left: [X.name].", X) + notify_ghosts(header = "Last Xenomorph", message = "There is only one Xenomorph left: [X.name].", source = X, action = NOTIFY_ORBIT) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_XENO_DEATH, src, gibbed) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index c2bf91edde6e..1de164fccc85 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -351,11 +351,17 @@ var/hugger_timelock = 15 MINUTES /// How many huggers can the hive support var/playable_hugger_limit = 0 + /// Minimum number of huggers available at any hive size + var/playable_hugger_minimum = 2 + /// This number divides the total xenos counted for slots to give the max number of facehuggers + var/playable_hugger_max_divisor = 4 /// How many lesser drones the hive can support var/lesser_drone_limit = 0 /// Slots available for lesser drones will never go below this number - var/lesser_drone_minimum = 3 + var/lesser_drone_minimum = 2 + /// This number divides the total xenos counted for slots to give the max number of lesser drones + var/playable_lesser_drones_max_divisor = 3 var/datum/tacmap/xeno/tacmap var/minimap_type = MINIMAP_FLAG_XENO @@ -1035,7 +1041,12 @@ return TRUE /datum/hive_status/proc/update_hugger_limit() - playable_hugger_limit = 2 + Ceiling(totalXenos.len / 4) + var/countable_xeno_iterator = 0 + for(var/mob/living/carbon/xenomorph/cycled_xeno as anything in totalXenos) + if(cycled_xeno.counts_for_slots) + countable_xeno_iterator++ + + playable_hugger_limit = max(Floor(countable_xeno_iterator / playable_hugger_max_divisor), playable_hugger_minimum) /datum/hive_status/proc/can_spawn_as_hugger(mob/dead/observer/user) if(!GLOB.hive_datum || ! GLOB.hive_datum[hivenumber]) @@ -1086,9 +1097,14 @@ hugger.timeofdeath = user.timeofdeath // Keep old death time /datum/hive_status/proc/update_lesser_drone_limit() - lesser_drone_limit = lesser_drone_minimum + Ceiling(length(totalXenos) / 3) + var/countable_xeno_iterator = 0 + for(var/mob/living/carbon/xenomorph/cycled_xeno as anything in totalXenos) + if(cycled_xeno.counts_for_slots) + countable_xeno_iterator++ + + lesser_drone_limit = max(Floor(countable_xeno_iterator / playable_lesser_drones_max_divisor), lesser_drone_minimum) -/datum/hive_status/proc/can_spawn_as_lesser_drone(mob/dead/observer/user) +/datum/hive_status/proc/can_spawn_as_lesser_drone(mob/dead/observer/user, obj/effect/alien/resin/special/pylon/spawning_pylon) if(!GLOB.hive_datum || ! GLOB.hive_datum[hivenumber]) return FALSE @@ -1109,8 +1125,8 @@ to_chat(user, SPAN_WARNING("The selected hive does not have a Queen!")) return FALSE - if(!living_xeno_queen.ovipositor && !SSticker.mode.is_in_endgame) - to_chat(user, SPAN_WARNING("The selected hive does not have a Queen on Ovipositor!")) + if(spawning_pylon.lesser_drone_spawns < 1) + to_chat(user, SPAN_WARNING("The selected core or pylon does not have enough power for a lesser drone!")) return FALSE update_lesser_drone_limit() @@ -1120,9 +1136,6 @@ if(islesserdrone(mob)) current_lesser_drone_count++ - if(tgui_alert(user, "Are you sure you want to become a lesser drone?", "Confirmation", list("Yes", "No")) != "Yes") - return FALSE - if(lesser_drone_limit <= current_lesser_drone_count) to_chat(user, SPAN_WARNING("[GLOB.hive_datum[hivenumber]] cannot support more lesser drones! Limit: [current_lesser_drone_count]/[lesser_drone_limit]")) return FALSE diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index b469052104fd..3e765e167ec1 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -271,6 +271,9 @@ /// User is thinking in character. Used to revert to thinking state after stop_typing var/thinking_IC = FALSE + // contains /atom/movable/screen/alert only + var/list/alerts = list() + /mob/vv_get_dropdown() . = ..() VV_DROPDOWN_OPTION(VV_HK_EXPLODE, "Trigger Explosion") diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 32a3ca51d456..6eb32501512f 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -529,8 +529,68 @@ var/global/list/limb_types_by_name = list( /mob/proc/get_paygrade() return + +/proc/notify_ghosts(message, ghost_sound = null, enter_link = null, enter_text = null, atom/source = null, mutable_appearance/alert_overlay = null, action = NOTIFY_JUMP, flashwindow = FALSE, ignore_mapload = TRUE, ignore_key, header = null, notify_volume = 100, extra_large = FALSE) //Easy notification of ghosts. + if(ignore_mapload && SSatoms.initialized != INITIALIZATION_INNEW_REGULAR) //don't notify for objects created during a map load + return + for(var/mob/dead/observer/ghost as anything in GLOB.observer_list) + if(!ghost.client) + continue + ghost.notify_ghost(message, ghost_sound, enter_link, enter_text, source, alert_overlay, action, flashwindow, ignore_mapload, ignore_key, header, notify_volume, extra_large) + +/mob/dead/observer/proc/notify_ghost(message, ghost_sound, enter_link, enter_text, atom/source, mutable_appearance/alert_overlay, action = NOTIFY_JUMP, flashwindow = FALSE, ignore_mapload = TRUE, ignore_key, header, notify_volume = 100, extra_large = FALSE) //Easy notification of a single ghosts. + if(ignore_mapload && SSatoms.initialized != INITIALIZATION_INNEW_REGULAR) //don't notify for objects created during a map load + return + if(!client) + return + var/track_link + if (source && action == NOTIFY_ORBIT) + track_link = " (Follow)" + if (source && action == NOTIFY_JUMP) + var/turf/T = get_turf(source) + track_link = " (Jump)" + var/full_enter_link + if (enter_link) + full_enter_link = "[(enter_text) ? "[enter_text]" : "(Claim)"]" + to_chat(src, "[(extra_large) ? "

" : ""][SPAN_DEADSAY("[message][(enter_link) ? " [full_enter_link]" : ""][track_link]")][(extra_large) ? "

" : ""]") + if(ghost_sound) + SEND_SOUND(src, sound(ghost_sound, volume = notify_volume, channel = SOUND_CHANNEL_NOTIFY)) + if(flashwindow) + window_flash(client) + + if(!source) + return + + var/atom/movable/screen/alert/notify_action/screen_alert = throw_alert("[REF(source)]_notify_action", /atom/movable/screen/alert/notify_action) + if(!screen_alert) + return + if (header) + screen_alert.name = header + screen_alert.desc = message + screen_alert.action = action + screen_alert.target = source + if(!alert_overlay) + alert_overlay = new(source) + var/icon/source_icon = icon(source.icon) + var/iheight = source_icon.Height() + var/iwidth = source_icon.Width() + var/higher_power = (iheight > iwidth) ? iheight : iwidth + if(higher_power > 32) + var/diff = 32 / higher_power + alert_overlay.transform = alert_overlay.transform.Scale(diff, diff) + if(higher_power > 48) + alert_overlay.pixel_y = -(iheight / 2) * diff + alert_overlay.pixel_x = -(iwidth / 2) * diff + + + alert_overlay.layer = FLOAT_LAYER + alert_overlay.plane = FLOAT_PLANE + + screen_alert.overlays += alert_overlay + /mob/proc/reset_lighting_alpha() SIGNAL_HANDLER lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE sync_lighting_plane_alpha() + diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index 775f18ee8953..c7a79b9c44ca 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -220,7 +220,7 @@ dropship.control_doors("unlock", "all", TRUE) dropship_control_lost = TRUE door_control_cooldown = addtimer(CALLBACK(src, PROC_REF(remove_door_lock)), SHUTTLE_LOCK_COOLDOWN, TIMER_STOPPABLE) - announce_dchat("[xeno] has locked \the [dropship]", src) + notify_ghosts(header = "Dropship Locked", message = "[xeno] has locked [dropship]!", source = xeno, action = NOTIFY_ORBIT) if(almayer_orbital_cannon) almayer_orbital_cannon.is_disabled = TRUE @@ -369,7 +369,7 @@ update_equipment(is_optimised) if(is_set_flyby) to_chat(user, SPAN_NOTICE("You begin the launch sequence for a flyby.")) - link.log_ares_flight(user, "Launched Dropship [shuttle.name] on a flyby.") + link.log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flyby.") var/log = "[key_name(user)] launched the dropship [src.shuttleId] on flyby." msg_admin_niche(log) log_interact(user, msg = "[log]") @@ -398,7 +398,7 @@ return TRUE SSshuttle.moveShuttle(shuttle.id, dock.id, TRUE) to_chat(user, SPAN_NOTICE("You begin the launch sequence to [dock].")) - link.log_ares_flight(user, "Launched Dropship [shuttle.name] on a flight to [dock].") + link.log_ares_flight(user.name, "Launched Dropship [shuttle.name] on a flight to [dock].") var/log = "[key_name(user)] launched the dropship [src.shuttleId] on transport." msg_admin_niche(log) log_interact(user, msg = "[log]") @@ -418,13 +418,13 @@ to_chat(user, SPAN_WARNING("Door controls have been overridden. Please call technical support.")) if("set-ferry") is_set_flyby = FALSE - link.log_ares_flight(user, "Set Dropship [shuttle.name] to transport runs.") + link.log_ares_flight(user.name, "Set Dropship [shuttle.name] to transport runs.") var/log = "[key_name(user)] set the dropship [src.shuttleId] into transport" msg_admin_niche(log) log_interact(user, msg = "[log]") if("set-flyby") is_set_flyby = TRUE - link.log_ares_flight(user, "Set Dropship [shuttle.name] to flyby runs.") + link.log_ares_flight(user.name, "Set Dropship [shuttle.name] to flyby runs.") var/log = "[key_name(user)] set the dropship [src.shuttleId] into flyby." msg_admin_niche(log) log_interact(user, msg = "[log]") @@ -447,7 +447,7 @@ shuttle.automated_lz_id = ground_lz shuttle.automated_delay = delay playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) - link.log_ares_flight(user, "Enabled autopilot for Dropship [shuttle.name].") + link.log_ares_flight(user.name, "Enabled autopilot for Dropship [shuttle.name].") var/log = "[key_name(user)] has enabled auto pilot on '[shuttle.name]'" message_admins(log) log_interact(user, msg = "[log]") @@ -464,7 +464,7 @@ shuttle.automated_lz_id = null shuttle.automated_delay = null playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) - link.log_ares_flight(user, "Disabled autopilot for Dropship [shuttle.name].") + link.log_ares_flight(user.name, "Disabled autopilot for Dropship [shuttle.name].") var/log = "[key_name(user)] has disabled auto pilot on '[shuttle.name]'" message_admins(log) log_interact(user, msg = "[log]") diff --git a/code/modules/shuttle/dropship_hijack.dm b/code/modules/shuttle/dropship_hijack.dm index ce151c14324c..7796ed0510c8 100644 --- a/code/modules/shuttle/dropship_hijack.dm +++ b/code/modules/shuttle/dropship_hijack.dm @@ -1,5 +1,5 @@ -#define HIJACK_CRASH_SITE_OFFSET_X -5 -#define HIJACK_CRASH_SITE_OFFSET_Y -11 +#define HIJACK_CRASH_SITE_OFFSET_X 0 +#define HIJACK_CRASH_SITE_OFFSET_Y 0 /datum/dropship_hijack var/obj/docking_port/mobile/shuttle @@ -151,7 +151,7 @@ marine_announcement("DROPSHIP ON COLLISION COURSE. CRASH IMMINENT." , "EMERGENCY", 'sound/AI/dropship_emergency.ogg', logging = ARES_LOG_SECURITY) - announce_dchat("The dropship is about to impact [get_area_name(crash_site)]", crash_site) + notify_ghosts(header = "Dropship Collision", message = "The dropship is about to impact [get_area_name(crash_site)]!", source = crash_site, extra_large = TRUE) final_announcement = TRUE playsound_area(get_area(crash_site), 'sound/effects/engine_landing.ogg', 100) diff --git a/code/modules/vehicles/multitile/multitile.dm b/code/modules/vehicles/multitile/multitile.dm index 20cf6217cc06..9e4d2c9d297b 100644 --- a/code/modules/vehicles/multitile/multitile.dm +++ b/code/modules/vehicles/multitile/multitile.dm @@ -180,13 +180,12 @@ lighting_holder.set_light_range(vehicle_light_range) lighting_holder.set_light_power(vehicle_light_power) lighting_holder.set_light_on(vehicle_light_range || vehicle_light_power) + else if(light_range) + set_light_on(TRUE) light_pixel_x = -bound_x light_pixel_y = -bound_y - if(light_range) - set_light_on(TRUE) - healthcheck() update_icon() @@ -444,6 +443,7 @@ /atom/movable/vehicle_light_holder light_system = MOVABLE_LIGHT + mouse_opacity = MOUSE_OPACITY_TRANSPARENT /atom/movable/vehicle_light_holder/Initialize(mapload, ...) . = ..() diff --git a/html/changelogs/AutoChangeLog-pr-4210.yml b/html/changelogs/AutoChangeLog-pr-4210.yml deleted file mode 100644 index bcde3ee07d48..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4210.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - bugfix: "Areas around LZs (particularly on Sorokyne) are now unweedable as intended." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4211.yml b/html/changelogs/AutoChangeLog-pr-4211.yml new file mode 100644 index 000000000000..1aa299523395 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4211.yml @@ -0,0 +1,4 @@ +author: "Private Tristan" +delete-after: True +changes: + - qol: "Researchers now spawn with reagent scanner goggles." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4229.yml b/html/changelogs/AutoChangeLog-pr-4229.yml deleted file mode 100644 index 540f5be31d69..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4229.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TiviPlus, A-lexa, SyncIt21, Azarak, harryob, MorrowWolf, Zonespace" -delete-after: True -changes: - - rscadd: "shadows are now in the game, and light follows you." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4258.yml b/html/changelogs/AutoChangeLog-pr-4258.yml deleted file mode 100644 index ef01fcfa19ff..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4258.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MikeKuwait" -delete-after: True -changes: - - bugfix: "teleporting canister pouch to chemical dispenser" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4259.yml b/html/changelogs/AutoChangeLog-pr-4259.yml deleted file mode 100644 index 76d084cf6b12..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4259.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MikeKuwait" -delete-after: True -changes: - - bugfix: "Plants should not grow every time it's sampled" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4261.yml b/html/changelogs/AutoChangeLog-pr-4261.yml deleted file mode 100644 index 78cd6c82d21a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4261.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Fixed pointblanks" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4263.yml b/html/changelogs/AutoChangeLog-pr-4263.yml deleted file mode 100644 index f6beeab795db..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4263.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - rscadd: "IO's and FTL's can now purchase a 'welding visor' from their vendor. This visor grants whichever helmet it is attached with the ability to flip a protective visor that prevents the user's eyes from taking damage while welding." - - balance: "The M12 Helmet, normally used by FTL's and USCM Officers, can mount two visors at once, instead of only one." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4264.yml b/html/changelogs/AutoChangeLog-pr-4264.yml deleted file mode 100644 index 515720e1fb06..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4264.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Fixed western medbay door buttons" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4265.yml b/html/changelogs/AutoChangeLog-pr-4265.yml deleted file mode 100644 index 0dfffbd61f9c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4265.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CapCamIII" -delete-after: True -changes: - - bugfix: "actually fixes m4ra custom barrel offset" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4266.yml b/html/changelogs/AutoChangeLog-pr-4266.yml deleted file mode 100644 index 6db5fd504bd5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4266.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xufysz" -delete-after: True -changes: - - bugfix: "Fixes the kitchen soda fountain being wrenchable." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4267.yml b/html/changelogs/AutoChangeLog-pr-4267.yml deleted file mode 100644 index 9951fc30945a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4267.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - code_imp: "Moved the Request ERT message to a proc to reduce duplication." - - admin: "Added a detail in ERT request to indicate if a RANDOM ERT was granted by staff already or not. This will not work for manual specific chosen ERTs." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4268.yml b/html/changelogs/AutoChangeLog-pr-4268.yml deleted file mode 100644 index 4b2ed66d89f9..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4268.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Xufysz" -delete-after: True -changes: - - bugfix: "Fixes admin training dummy interaction distance" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4269.yml b/html/changelogs/AutoChangeLog-pr-4269.yml new file mode 100644 index 000000000000..57776f9df5c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4269.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - maptweak: "Hidden floor safe in LV-624 is now positioned correctly." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4274.yml b/html/changelogs/AutoChangeLog-pr-4274.yml new file mode 100644 index 000000000000..549de49756e0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4274.yml @@ -0,0 +1,4 @@ +author: "Huffie56" +delete-after: True +changes: + - mapadd: "adding an an access to the exterior side of each lifeboats." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4275.yml b/html/changelogs/AutoChangeLog-pr-4275.yml deleted file mode 100644 index e5d70fdd3c7c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4275.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - bugfix: "Fixes UPP/CLF access to antag vendors." - - rscadd: "Adds faction specific accesses to TWE and UPP representatives." - - rscdel: "Removes pirate access from Press and Corp. Liaison." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4276.yml b/html/changelogs/AutoChangeLog-pr-4276.yml deleted file mode 100644 index 057891442b4a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4276.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MikeKuwait" -delete-after: True -changes: - - bugfix: "Camera console should now close if you step away from it" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4291.yml b/html/changelogs/AutoChangeLog-pr-4291.yml new file mode 100644 index 000000000000..f48d5265739a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4291.yml @@ -0,0 +1,4 @@ +author: "harryob" +delete-after: True +changes: + - rscdel: "removed the hallucinating ghost notification" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4292.yml b/html/changelogs/AutoChangeLog-pr-4292.yml new file mode 100644 index 000000000000..17d5bd5babc4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4292.yml @@ -0,0 +1,4 @@ +author: "Huffie56" +delete-after: True +changes: + - bugfix: "fix seing decimal in clothing vendor surplus." \ No newline at end of file diff --git a/html/changelogs/archive/2023-08.yml b/html/changelogs/archive/2023-08.yml index bcbe26a9a6c4..e8c44d82dbde 100644 --- a/html/changelogs/archive/2023-08.yml +++ b/html/changelogs/archive/2023-08.yml @@ -423,3 +423,80 @@ two snacks and an AP mag harryob: - bugfix: whispering no longer uses the old speech bubble +2023-08-29: + CapCamIII: + - bugfix: actually fixes m4ra custom barrel offset + MikeKuwait: + - bugfix: Plants should not grow every time it's sampled + - bugfix: Camera console should now close if you step away from it + - bugfix: teleporting canister pouch to chemical dispenser + Morrow: + - bugfix: Fixed pointblanks + - bugfix: Fixed western medbay door buttons + Steelpoint: + - rscadd: IO's and FTL's can now purchase a 'welding visor' from their vendor. This + visor grants whichever helmet it is attached with the ability to flip a protective + visor that prevents the user's eyes from taking damage while welding. + - balance: The M12 Helmet, normally used by FTL's and USCM Officers, can mount two + visors at once, instead of only one. + TiviPlus, A-lexa, SyncIt21, Azarak, harryob, MorrowWolf, Zonespace: + - rscadd: shadows are now in the game, and light follows you. + Xufysz: + - bugfix: Fixes admin training dummy interaction distance + - bugfix: Fixes the kitchen soda fountain being wrenchable. + realforest2001: + - bugfix: Fixes UPP/CLF access to antag vendors. + - rscadd: Adds faction specific accesses to TWE and UPP representatives. + - rscdel: Removes pirate access from Press and Corp. Liaison. + - bugfix: Areas around LZs (particularly on Sorokyne) are now unweedable as intended. + - code_imp: Moved the Request ERT message to a proc to reduce duplication. + - admin: Added a detail in ERT request to indicate if a RANDOM ERT was granted by + staff already or not. This will not work for manual specific chosen ERTs. +2023-08-30: + Ben10083: + - qol: General Quarters via ARES can now be called regardless of alert level. + Huffie56: + - bugfix: give back marksman ammo to MP's because i remove it in a previous PR by + mistake + JackieEstegado: + - bugfix: Most 'light' vines on LV are no longer invisible. + Morrow: + - rscadd: Added 3 to hypospray transfer amount option + TheGamerdk: + - refactor: Refactors the overwatch console in TGUI +2023-08-31: + Huffie56: + - rscadd: Add roller bed, mini extinguisher and multi-tool to the utility vendor + in small quantity. + - balance: divide by two the number of "ME3 hand welder" in utility vendor. + - bugfix: remove a duplicate item being sell the flashlight. + - bugfix: some clothing items have a minimum of one now. + Morrow: + - rscadd: Allowed lesser drones to spawn at pylons and core. + - rscadd: Created a pool of lesser drones at cores and pylons that regenerate over + time. It takes about 10 seconds to get one more when queen is on ovi and about + 120 seconds when queen is off. + - balance: Lesser drones and facehuggers no longer count towards the lesser drone + count but lesser drones are still capped at 1/3rd of the hive with a minimum + of 3. + - balance: Facehuggers have also been changed to not count lesser drones and themselves + for max calculations. + - bugfix: Fixed dropship hijack offset + QuickLode: + - bugfix: PMC Survivors now can use WY Comms. + Segrain: + - bugfix: CL's lockbox can be properly opened once again. + Steelpoint: + - balance: Large amount of balance changes to UPP survivors on Trijent. New spawn + setup guarantee's you'll get 1 Medic and 1 Engineer. + - balance: UPP survivors now have access to HUD icons for squad roles, and access + to the UPP communications channel if the colony communications is repaired. + - balance: UPP surv SL's and Specialists can now drive vehicles. + - balance: A second, crashed, UPP dropship can be found somewhere on Trijent if + the UPP survivors spawn. It contains extra supplies and stronger firearms. But + requires a detour to find. + Tkdrg, many TG contributors: + - rscadd: dchat notifications now have a better interface + harryob: + - bugfix: vehicles no longer have two lights + - bugfix: vehicles are now properly bright inside diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi new file mode 100644 index 000000000000..af61a47aa885 Binary files /dev/null and b/icons/mob/screen_alert.dmi differ diff --git a/maps/Nightmare/maps/DesertDam/nightmare.json b/maps/Nightmare/maps/DesertDam/nightmare.json index 261481f6531b..75a4a605556f 100644 --- a/maps/Nightmare/maps/DesertDam/nightmare.json +++ b/maps/Nightmare/maps/DesertDam/nightmare.json @@ -12,5 +12,12 @@ "chance": 1.0, "path": "standalone/crashlanding-upp-bar.dmm", "when": { "lvevent": "uppcrash" } + }, + { + "type": "map_insert", + "landmark": "uppcrash-supply", + "chance": 1.0, + "path": "standalone/crashlanding-upp-alt1.dmm", + "when": { "lvevent": "uppcrash" } } ] diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm index 3eb5dabff911..66e91ebc2505 100644 --- a/maps/map_files/DesertDam/Desert_Dam.dmm +++ b/maps/map_files/DesertDam/Desert_Dam.dmm @@ -60501,6 +60501,14 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/plating, /area/desert_dam/exterior/valley/valley_crashsite) +"fcu" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "uppcrash-supply" + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) "fcE" = ( /obj/structure/flora/bush/desert{ icon_state = "tree_3" @@ -103519,7 +103527,7 @@ cCH clZ clZ crW -cko +fcu cmc cpY cpY diff --git a/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm b/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm new file mode 100644 index 000000000000..b707028441cf --- /dev/null +++ b/maps/map_files/DesertDam/standalone/crashlanding-upp-alt1.dmm @@ -0,0 +1,1969 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bm" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"bz" = ( +/turf/closed/shuttle/ert{ + icon_state = "T7"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"bV" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 9 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"cn" = ( +/turf/closed/shuttle/ert{ + icon_state = "T5"; + name = "Fulcrum" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"cp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"cG" = ( +/obj/structure/flora/grass/desert/lightgrass_9, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"dv" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"dz" = ( +/obj/structure/desertdam/decals/road_stop{ + icon_state = "stop_decal5" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"dN" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"dP" = ( +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached18" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"eb" = ( +/obj/effect/spawner/gibspawner/human, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"eC" = ( +/turf/closed/shuttle/ert{ + icon_state = "T17"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"eF" = ( +/turf/open/desert/dirt{ + dir = 6; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"fa" = ( +/turf/closed/shuttle/ert{ + icon_state = "T9"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"fg" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"fp" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"ft" = ( +/turf/closed/wall, +/area/desert_dam/exterior/valley/valley_civilian) +"fA" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"fL" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"gb" = ( +/obj/structure/desertdam/decals/road_edge, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"ge" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"hK" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -7; + pixel_y = 17 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp4"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"hP" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 5 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"ig" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"ih" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/shuttle/ert{ + icon_state = "upp21"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"im" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached18" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"jN" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached19" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"jU" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"jX" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"kd" = ( +/turf/closed/shuttle/ert{ + icon_state = "leftengine_1"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"kV" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"la" = ( +/turf/closed/wall/rock/orange, +/area/desert_dam/exterior/rock) +"ly" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"mk" = ( +/obj/structure/closet/crate/ammo, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/obj/item/explosive/grenade/high_explosive/upp, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"mt" = ( +/obj/structure/machinery/light/double{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"mw" = ( +/turf/open/desert/dirt{ + dir = 10; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"mM" = ( +/turf/open/desert/dirt{ + dir = 9; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"mN" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"nd" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nj" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nn" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"nA" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp4"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nH" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"nX" = ( +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"of" = ( +/obj/structure/flora/grass/tallgrass/desert/corner, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"oj" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin4" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"os" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship{ + icon_state = "rasputin5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"oL" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"oX" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal9" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"pF" = ( +/turf/closed/shuttle/ert{ + icon_state = "T14"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"qD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"qM" = ( +/obj/structure/closet/crate/ammo, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/obj/item/ammo_magazine/rifle/type71/ap, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"sl" = ( +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"ss" = ( +/obj/structure/flora/bush/desert/cactus/multiple{ + icon_state = "cacti_7" + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"sJ" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"ta" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal10" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"uw" = ( +/obj/effect/decal/sand_overlay/sand1, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"uG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"uK" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"uQ" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"vn" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"vz" = ( +/obj/structure/closet/crate/ammo, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/ammo_magazine/rifle/type71, +/obj/item/weapon/gun/rifle/type71, +/obj/item/weapon/gun/rifle/type71, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"vJ" = ( +/obj/structure/prop/invuln/fire, +/turf/closed/shuttle/ert{ + icon_state = "T3"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"wl" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"xp" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal10" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"xt" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"xz" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"xE" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin7" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"xK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/obj/structure/girder, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"xM" = ( +/obj/structure/flora/bush/desert, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"xP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"yl" = ( +/turf/closed/shuttle/ert{ + icon_state = "T19"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"ym" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"yU" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp20"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"zs" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached12" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"zE" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"zO" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"As" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"AW" = ( +/turf/open/desert/dirt{ + dir = 1; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Bk" = ( +/turf/closed/shuttle/ert{ + icon_state = "T4"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"BE" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"BJ" = ( +/obj/structure/flora/grass/desert/lightgrass_3, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"BM" = ( +/obj/structure/flora/grass/desert/lightgrass_3, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"BU" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached18" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"BY" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal10" + }, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"CB" = ( +/obj/structure/flora/grass/desert/lightgrass_11, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"CL" = ( +/obj/structure/bed/chair/dropship/passenger, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Dd" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -7; + pixel_y = 17 + }, +/turf/closed/shuttle/ert{ + icon_state = "rightengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"DO" = ( +/obj/structure/flora/grass/desert/lightgrass_9, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Eh" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"EF" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"EL" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"EW" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 6 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"FG" = ( +/obj/structure/flora/grass/desert/lightgrass_8, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Gh" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Gt" = ( +/turf/closed/shuttle/ert{ + icon_state = "T4"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Hm" = ( +/turf/closed/shuttle/ert{ + icon_state = "T1"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Ho" = ( +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Hs" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/closed/shuttle/ert{ + icon_state = "rightengine_1"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Hu" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 10 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"HP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"IS" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp16"; + name = "Fulcrum" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Jb" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Jd" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 4 + }, +/obj/effect/decal/sand_overlay/sand1/corner1, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Jy" = ( +/obj/structure/prop/invuln/fire, +/turf/closed/shuttle/ert{ + icon_state = "leftengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"JG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"JW" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp25"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Kr" = ( +/turf/closed/shuttle/ert{ + icon_state = "T10"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"KC" = ( +/turf/open/desert/dirt{ + dir = 8; + icon_state = "desert_transition_corner1" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"KX" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached13" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Lc" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal9" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"Lp" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = 8; + pixel_y = 10 + }, +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Lt" = ( +/obj/effect/spawner/gibspawner/human, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"Lv" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"LD" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 1 + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Mo" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Mp" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"MM" = ( +/turf/closed/shuttle/ert{ + icon_state = "T5"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Nt" = ( +/turf/closed/shuttle/ert{ + icon_state = "T7"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Ny" = ( +/obj/structure/closet/crate/ammo, +/obj/item/ammo_magazine/pkp, +/obj/item/weapon/gun/pkp, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"NP" = ( +/turf/closed/shuttle/ert{ + icon_state = "rightengine_2"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Ou" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt/cement_sunbleached, +/area/desert_dam/exterior/valley/valley_civilian) +"OB" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal4" + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 6 + }, +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"OG" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"OJ" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Pc" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal7" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"Pf" = ( +/obj/structure/flora/grass/desert/lightgrass_12, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Pr" = ( +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"PI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"PS" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp20"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Qc" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 5 + }, +/obj/effect/spawner/gibspawner/human, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Qj" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Rq" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin6" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Ry" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/shuttle/dropship{ + icon_state = "rasputin8" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"RG" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Sb" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Sf" = ( +/turf/closed/shuttle/ert{ + icon_state = "T14"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Sm" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal8" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"SE" = ( +/obj/structure/flora/grass/desert/lightgrass_2, +/obj/effect/decal/sand_overlay/sand1{ + dir = 10 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"SN" = ( +/obj/effect/spawner/gibspawner/human, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"SV" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -7; + pixel_y = 24 + }, +/turf/closed/shuttle/ert{ + icon_state = "T3"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Td" = ( +/obj/structure/flora/bush/desert/cactus, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Tn" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp5"; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"TT" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/desert_dam/exterior/valley/valley_civilian) +"Ug" = ( +/obj/structure/bed/chair/dropship/pilot{ + dir = 1 + }, +/obj/structure/machinery/computer/cameras{ + desc = "The flight controls for a Mi-220 Attack Dropship. these controls look pretty banged up, and there's some blood covering the screen.."; + name = "\improper 'Buran' flight controls"; + network = null; + pixel_y = 21 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"UB" = ( +/obj/structure/prop/invuln/fire{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/closed/shuttle/ert{ + icon_state = "rightengine_1"; + opacity = 0; + name = "Buran" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"UK" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"VD" = ( +/obj/structure/flora/bush/desert/cactus{ + icon_state = "cactus_8" + }, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"VK" = ( +/obj/structure/desertdam/decals/road_edge{ + icon_state = "road_edge_decal2" + }, +/turf/open/asphalt, +/area/desert_dam/exterior/valley/valley_civilian) +"Wb" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 4 + }, +/turf/open/asphalt/cement_sunbleached{ + icon_state = "cement_sunbleached2" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Wy" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"WU" = ( +/obj/effect/decal/sand_overlay/sand1{ + dir = 1 + }, +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"WW" = ( +/turf/open/asphalt{ + icon_state = "tile" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Xn" = ( +/obj/effect/decal/sand_overlay/sand1, +/obj/effect/decal/sand_overlay/sand1{ + dir = 9 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Xq" = ( +/turf/template_noop, +/area/template_noop) +"XT" = ( +/obj/structure/flora/tree/joshua, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Yr" = ( +/turf/closed/shuttle/ert{ + icon_state = "upp27"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Yv" = ( +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"YD" = ( +/obj/structure/fence, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"YZ" = ( +/obj/effect/decal/sand_overlay/sand1/corner1{ + dir = 1 + }, +/turf/open/mars{ + icon_state = "mars_dirt_5" + }, +/area/desert_dam/exterior/valley/valley_civilian) +"Zm" = ( +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) +"Zz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/prop/invuln/fire{ + pixel_x = 8; + pixel_y = 10 + }, +/turf/closed/shuttle/ert{ + icon_state = "T2"; + name = "Buran"; + opacity = 0 + }, +/area/desert_dam/exterior/valley/valley_civilian) + +(1,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +la +la +la +Mo +Mo +Mo +Jd +Mo +Mo +Mo +Gh +WW +uK +Pr +Xq +Xq +Xq +"} +(2,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +la +la +ft +YD +YD +YD +ft +YD +YD +YD +ft +jN +uK +PI +Xq +Xq +Xq +"} +(3,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +la +Bk +sl +nX +xM +VD +nX +Jb +Xn +Hm +SV +vJ +Gt +Pr +Xq +Xq +Xq +"} +(4,1,1) = {" +la +la +la +la +la +la +la +la +la +la +la +la +la +Nt +cn +eF +Eh +Td +nX +uw +OJ +nH +As +xK +Zz +Sf +Pr +Xq +Xq +Xq +"} +(5,1,1) = {" +yU +nA +IS +nA +la +la +la +la +la +la +la +la +Nt +fa +Jy +kd +FG +nX +ss +uw +Mp +Sb +zO +ge +zE +OB +JG +Xq +Xq +Xq +"} +(6,1,1) = {" +Yr +Ug +ih +Ug +As +la +la +la +la +la +la +la +Nt +Kr +NP +Hs +cG +nX +RG +Wb +KX +KX +KX +KX +Lv +uQ +sJ +Xq +Xq +Xq +"} +(7,1,1) = {" +Yr +fg +OG +oL +jX +la +la +la +la +la +la +la +la +CB +nj +nj +SE +nX +WU +dP +oX +gb +gb +gb +gb +Pc +Pr +Xq +Xq +Xq +"} +(8,1,1) = {" +JW +Tn +TT +xz +Yv +nj +As +la +la +la +OJ +nj +nj +YZ +Yv +Yv +Yv +Qj +wl +BU +uK +Pr +Pr +Pr +dz +Pr +PI +Xq +Xq +Xq +"} +(9,1,1) = {" +nX +nX +nX +Mp +ym +Yv +Yv +PS +hK +nA +nA +xz +ig +Yv +Yv +DO +Yv +As +fL +im +mN +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(10,1,1) = {" +nX +nX +Pf +BM +xt +XT +Yv +xz +Rq +mt +jU +OG +oj +Yv +Yv +Yv +Yv +EF +nX +nX +ta +VK +VK +VK +Sm +Pr +Pr +Xq +Xq +Xq +"} +(11,1,1) = {" +FG +EW +hP +nX +xt +Yv +Yv +ly +os +CL +mk +Ny +SN +kV +dN +Yv +Yv +Yv +As +nX +Lc +gb +gb +gb +Pc +Pr +PI +Xq +Xq +Xq +"} +(12,1,1) = {" +EW +Zm +LD +BJ +Yv +Yv +Yv +Lt +Wy +CL +vz +qM +xP +Yv +Yv +Yv +Yv +Yv +jX +eb +nn +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(13,1,1) = {" +of +Zm +bV +xt +Yv +Yv +UK +xz +xE +bm +OG +OG +Ry +Yv +Yv +Yv +Yv +Yv +nd +nX +nn +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(14,1,1) = {" +Hu +bV +cG +xt +Yv +nd +nX +TT +Tn +Lp +Tn +Tn +xz +Yv +Yv +Yv +ym +jX +nX +vn +BY +VK +VK +VK +Sm +Pr +PI +Xq +Xq +Xq +"} +(15,1,1) = {" +EL +nX +nX +Qc +nd +nX +mM +mw +la +la +la +la +yl +fA +kd +Yv +Yv +nd +nX +fp +oX +gb +gb +gb +Pc +Pr +Pr +Xq +Xq +Xq +"} +(16,1,1) = {" +nX +nX +mM +Ho +mw +mM +KC +la +la +la +la +la +eC +Dd +UB +Yv +nd +nX +BE +zs +uK +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(17,1,1) = {" +nX +nX +AW +la +la +la +la +la +la +la +la +la +bz +MM +xt +jX +nX +Ou +HP +cp +uK +Pr +Pr +Pr +dz +Pr +Pr +Xq +Xq +Xq +"} +(18,1,1) = {" +dv +mM +la +la +la +la +la +la +la +la +la +la +la +pF +xt +nd +nX +uG +qD +cp +xp +VK +VK +VK +VK +VK +VK +Xq +Xq +Xq +"} +(19,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(20,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(21,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(22,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(23,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(24,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(25,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} +(26,1,1) = {" +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +Xq +"} diff --git a/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm b/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm index f4efd48f0a88..73ae1b5ef485 100644 --- a/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm +++ b/maps/map_files/DesertDam/standalone/crashlanding-upp-bar.dmm @@ -281,7 +281,9 @@ }, /obj/item/paper/bigred/upp{ pixel_y = 4; - pixel_x = 3 + pixel_x = 3; + icon_state = "paper_words"; + item_state = "paper_words" }, /turf/open/shuttle/dropship{ icon_state = "rasputin15" @@ -2002,6 +2004,7 @@ /obj/item/ammo_magazine/rifle/type71/heap{ current_rounds = 0 }, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/shuttle/dropship{ icon_state = "rasputin3" }, @@ -2203,7 +2206,8 @@ }, /area/desert_dam/exterior/valley/bar_valley_dam) "Lo" = ( -/obj/effect/landmark/survivor_spawner/upp_medic, +/obj/effect/landmark/survivor_spawner/upp/soldier, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/shuttle/dropship{ icon_state = "rasputin3" }, @@ -2301,6 +2305,15 @@ icon_state = "cement_sunbleached12" }, /area/desert_dam/exterior/valley/bar_valley_dam) +"Ne" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S-corner" + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/desert_dam/building/bar/bar) "Nh" = ( /obj/structure/flora/grass/desert/lightgrass_4, /obj/effect/decal/sand_overlay/sand1{ @@ -2560,6 +2573,7 @@ /obj/item/ammo_box/rounds/type71/heap/empty{ bullet_amount = 0 }, +/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/shuttle/dropship{ icon_state = "rasputin4" }, @@ -2567,6 +2581,15 @@ "Rl" = ( /obj/structure/closet/crate/supply, /obj/item/ammo_box/magazine/misc/flares, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_magazine/handful/shotgun/heavy/buckshot, +/obj/item/ammo_box/magazine/misc/flares, /turf/open/shuttle/dropship{ icon_state = "rasputin15" }, @@ -3094,12 +3117,6 @@ icon_state = "platingdmg1" }, /area/desert_dam/building/bar/bar_restroom) -"Zn" = ( -/obj/effect/landmark/survivor_spawner/upp_sapper, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, -/area/desert_dam/building/bar/bar) "ZA" = ( /obj/effect/decal/sand_overlay/sand1{ dir = 1 @@ -3527,14 +3544,14 @@ hm CA DB NH -Zn +Cn Cn tu IF IF IF sE -RW +Ne GZ OS sv diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index d438b91d214a..7aaff922baa9 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -10305,7 +10305,6 @@ "aSQ" = ( /obj/structure/safe/floor{ name = "safe"; - pixel_x = 30; spawnkey = 0 }, /turf/open/floor{ diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index e8b44f0d25ba..926219de59e3 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -1110,6 +1110,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) +"adC" = ( +/obj/structure/surface/rack, +/obj/item/stock_parts/manipulator/nano{ + pixel_y = -9 + }, +/obj/item/stock_parts/scanning_module/adv{ + pixel_y = 15; + pixel_x = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "adD" = ( /obj/structure/window/reinforced{ dir = 1; @@ -1431,6 +1444,15 @@ allow_construction = 0 }, /area/almayer/stair_clone) +"aeM" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "aeN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -3493,6 +3515,18 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"alk" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 1"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple, +/area/almayer/medical/containment/cell) "all" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -3732,23 +3766,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"amq" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) -"ams" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "amw" = ( /turf/open/floor/almayer{ dir = 9; @@ -4475,6 +4492,20 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"aoJ" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 1"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 1 + }, +/area/almayer/medical/containment/cell) "aoK" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/warning_stripes{ @@ -4909,6 +4940,20 @@ icon_state = "test_floor4" }, /area/almayer/engineering/engineering_workshop/hangar) +"apU" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 2"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 8 + }, +/area/almayer/medical/containment/cell) "apV" = ( /obj/structure/machinery/light{ dir = 8 @@ -5133,12 +5178,6 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"aqC" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) "aqD" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control{ @@ -5184,6 +5223,12 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"aqK" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "aqM" = ( /obj/effect/projector{ name = "Almayer_Up2"; @@ -5200,6 +5245,32 @@ icon_state = "plate" }, /area/almayer/command/cic) +"aqP" = ( +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + dir = 1; + id = "Containment Cell 1"; + locked = 1; + name = "\improper Containment Cell 1" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Containment Cell 1"; + name = "\improper Containment Cell 1"; + unacidable = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/containment/cell) "aqS" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ @@ -5568,16 +5639,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) -"asb" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ - id_tag = "Boat2-D2"; - linked_dock = "almayer-lifeboat2"; - throw_dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "asc" = ( /turf/open/floor/almayer{ dir = 1; @@ -5664,6 +5725,14 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) +"asn" = ( +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/plating, +/area/almayer/medical/upper_medical) "aso" = ( /turf/open/floor/almayer{ dir = 8; @@ -7751,14 +7820,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"ayg" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "ayh" = ( /obj/structure/machinery/power/smes/buildable, /obj/structure/sign/safety/hazard{ @@ -8063,6 +8124,20 @@ icon_state = "sterile_green" }, /area/almayer/medical/medical_science) +"ayZ" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/medical/medical_science) "azb" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -8723,6 +8798,20 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"aBe" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 2"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 4 + }, +/area/almayer/medical/containment/cell) "aBf" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "Telecommunications"; @@ -10455,6 +10544,19 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"aIo" = ( +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 8; + id = "researchlockdownext_windoor"; + name = "\improper Research Windoor Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/plating, +/area/almayer/medical/medical_science) "aIq" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -10536,10 +10638,6 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) -"aIM" = ( -/obj/structure/largecrate/random, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) "aIP" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -11495,20 +11593,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"aMR" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) -"aMS" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) "aMT" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -11565,6 +11649,12 @@ icon_state = "plating" }, /area/almayer/hull/lower_hull/l_f_s) +"aNl" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "aNm" = ( /turf/open/floor/wood/ship, /area/almayer/living/chapel) @@ -11943,15 +12033,6 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"aPk" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "aPl" = ( /obj/structure/machinery/cm_vending/clothing/marine/alpha{ density = 0; @@ -12270,6 +12351,26 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"aRd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/door/window/westright, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/window/westright{ + dir = 4; + req_access_txt = "28" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 8; + id = "researchlockdownext_windoor"; + name = "\improper Research Windoor Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "aRi" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -13225,6 +13326,13 @@ /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"aVC" = ( +/obj/structure/machinery/vending/cigarette, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "aVF" = ( /obj/structure/closet/secure_closet/engineering_electrical, /obj/structure/machinery/light/small, @@ -16286,6 +16394,11 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"blJ" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/starboard) "blZ" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/med_data/laptop, @@ -20360,14 +20473,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"bFD" = ( -/obj/structure/pipes/vents/pump/no_boom{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "bFJ" = ( /obj/docking_port/stationary/marine_dropship/almayer_hangar_2, /turf/open/floor/plating, @@ -20385,6 +20490,15 @@ "bGb" = ( /turf/closed/wall/almayer, /area/almayer/hallways/port_hallway) +"bGc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "bGe" = ( /obj/structure/machinery/light{ dir = 1 @@ -23396,6 +23510,25 @@ "bSy" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/engine_core) +"bSD" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_x = -4; + pixel_y = -3 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = -4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "bSG" = ( /obj/structure/machinery/power/smes/buildable, /turf/open/floor/almayer{ @@ -24391,6 +24524,14 @@ "bXe" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"bXf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "bXl" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -26459,20 +26600,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"chJ" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 3"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 4 - }, -/area/almayer/medical/containment/cell) "chL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -26966,10 +27093,6 @@ icon_state = "red" }, /area/almayer/hallways/port_hallway) -"ckn" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "ckr" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -28696,6 +28819,14 @@ icon_state = "plate" }, /area/almayer/shipboard/weapon_room) +"cFn" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "cFA" = ( /obj/structure/surface/rack, /obj/item/tool/weldpack, @@ -28725,12 +28856,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"cFZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "cGr" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -28787,18 +28912,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower_engineering) -"cHS" = ( -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "researchlockdownext_se_2"; - name = "\improper Research Window Shutter" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/plating, -/area/almayer/medical/medical_science) "cIe" = ( /obj/structure/machinery/light{ dir = 4 @@ -28825,6 +28938,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"cIG" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "cII" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -29023,6 +29144,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) +"cMN" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "cMV" = ( /obj/structure/sign/prop1{ pixel_x = -32; @@ -29098,6 +29228,19 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"cOK" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 4; + icon_state = "outerhull_dir" + }, +/area/almayer/engineering/upper_engineering/starboard) "cOM" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -29496,12 +29639,26 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"cXY" = ( +/obj/item/stack/catwalk, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "cXZ" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"cYu" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "cYT" = ( /obj/structure/machinery/light{ dir = 8 @@ -29629,6 +29786,12 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"dbq" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "plating_striped" + }, +/area/almayer/engineering/upper_engineering/port) "dbv" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/prop/almayer/computer{ @@ -29800,6 +29963,21 @@ icon_state = "plate" }, /area/almayer/hallways/port_umbilical) +"dfg" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/item/tool/mop{ + pixel_x = -6; + pixel_y = 24 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "dfk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -29919,6 +30097,16 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) +"diz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat1-D4"; + linked_dock = "almayer-lifeboat1"; + throw_dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/port) "diF" = ( /obj/structure/pipes/standard/simple/visible{ dir = 4 @@ -29947,12 +30135,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) -"djc" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_p) "djm" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -30712,6 +30894,15 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) +"dxK" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "dxL" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -31471,6 +31662,20 @@ /obj/structure/bed/chair/comfy/black, /turf/open/floor/almayer, /area/almayer/shipboard/brig/chief_mp_office) +"dPm" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) +"dPC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "dPU" = ( /obj/structure/sign/safety/nonpress_ag{ pixel_x = 32 @@ -31927,6 +32132,20 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/port_emb) +"ean" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 3"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 4 + }, +/area/almayer/medical/containment/cell) "eas" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31943,6 +32162,12 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"eaX" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "ebd" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk, @@ -32463,15 +32688,6 @@ icon_state = "mono" }, /area/almayer/hallways/aft_hallway) -"ejr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) "ejt" = ( /turf/open/floor/almayer/uscm/directional{ dir = 4 @@ -32919,28 +33135,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/gym) -"esP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_x = -1; - pixel_y = 1 - }, -/obj/structure/machinery/door/airlock/almayer/research/reinforced{ - dir = 8; - name = "\improper Containment Airlock" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "esT" = ( /turf/open/floor/almayer/uscm/directional{ dir = 9 @@ -33049,6 +33243,12 @@ icon_state = "logo_c" }, /area/almayer/command/cic) +"euY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "eva" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 @@ -33131,6 +33331,10 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_s) +"exi" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "exr" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -33275,6 +33479,13 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"eAL" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "eAU" = ( /obj/structure/bed/chair{ dir = 8 @@ -33327,6 +33538,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) +"eBO" = ( +/obj/structure/bed, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) "eBV" = ( /obj/structure/window/reinforced{ dir = 8; @@ -33958,20 +34175,6 @@ "eRL" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) -"eRM" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research{ - name = "\improper Research Hydroponics Workshop" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/hydroponics) "eRR" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, @@ -34311,6 +34514,15 @@ /obj/effect/landmark/start/synthetic, /turf/open/floor/almayer, /area/almayer/living/synthcloset) +"eYR" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orangecorner" + }, +/area/almayer/engineering/upper_engineering/port) "eYW" = ( /obj/structure/filingcabinet/security, /turf/open/floor/wood/ship, @@ -34466,17 +34678,6 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/execution) -"fce" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "researchlockdownext_door"; - name = "\improper Research Doorway Shutter" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "fcf" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -34766,20 +34967,6 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) -"fhW" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 1"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 1 - }, -/area/almayer/medical/containment/cell) "fiq" = ( /turf/closed/wall/almayer, /area/almayer/hull/lower_hull/l_m_p) @@ -34957,12 +35144,6 @@ icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_a_s) -"foI" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "foL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35568,6 +35749,12 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"fCp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "fCL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -36695,6 +36882,18 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"gbs" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/ashtray/plastic{ + icon_state = "ashtray_full_bl"; + pixel_x = 5; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "gbQ" = ( /obj/structure/toilet{ dir = 8 @@ -36888,17 +37087,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) -"gfh" = ( -/obj/structure/closet/crate/freezer{ - desc = "A freezer crate. There is a note attached, it reads: Do not open, property of Pvt. Mendoza." - }, -/obj/item/storage/beer_pack, -/obj/item/reagent_container/food/drinks/cans/beer, -/obj/item/reagent_container/food/drinks/cans/beer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "gfk" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -37233,6 +37421,13 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) +"gms" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "gnu" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/green, @@ -38014,12 +38209,14 @@ icon_state = "cargo" }, /area/almayer/squads/delta) -"gEz" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 6 +"gEv" = ( +/obj/structure/machinery/light{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "gEK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38549,6 +38746,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) +"gQO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "gRd" = ( /obj/structure/platform, /obj/structure/target{ @@ -38900,6 +39105,31 @@ "gZK" = ( /turf/open/floor/almayer, /area/almayer/living/auxiliary_officer_office) +"gZP" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D4"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) +"had" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"hal" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "ham" = ( /turf/open/floor/almayer{ icon_state = "sterile_green" @@ -38953,31 +39183,6 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"hbi" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - dir = 1; - id = "Containment Cell 5"; - locked = 1; - name = "\improper Containment Cell 5" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Containment Cell 5"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/containment/cell) "hbu" = ( /obj/structure/bed/chair{ dir = 1 @@ -39707,6 +39912,23 @@ icon_state = "redfull" }, /area/almayer/command/cic) +"hrn" = ( +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + name = "\improper Research Reception Laboratory" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "hrF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -39763,6 +39985,12 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"htb" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/starboard) "htI" = ( /obj/structure/platform_decoration{ dir = 1 @@ -40270,6 +40498,12 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"hFw" = ( +/obj/structure/machinery/disposal/broken, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "hFC" = ( /obj/structure/bed/chair/comfy, /turf/open/floor/almayer{ @@ -40608,6 +40842,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"hPe" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext_door"; + name = "\improper Research Doorway Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "hPg" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_2" @@ -40783,6 +41029,15 @@ "hSk" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"hSt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "hSu" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -40878,6 +41133,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) +"hTF" = ( +/obj/structure/machinery/suit_storage_unit/compression_suit/uscm{ + isopen = 1; + starting_helmet_type = null; + starting_mask_type = null; + starting_suit_type = null; + starting_tank_type = null + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "hTP" = ( /obj/structure/machinery/door_control{ id = "crate_room2"; @@ -40931,6 +41198,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"hVf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "hVz" = ( /obj/structure/machinery/light{ dir = 1 @@ -41006,6 +41282,12 @@ icon_state = "blue" }, /area/almayer/command/cichallway) +"hWU" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_a_s) "hXb" = ( /turf/open/floor/almayer{ dir = 1; @@ -41182,26 +41464,6 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) -"icn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/obj/structure/machinery/door/airlock/almayer/research/reinforced{ - dir = 8; - name = "\improper Containment Airlock" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/containment) "icp" = ( /turf/open/floor/almayer{ dir = 8; @@ -41592,20 +41854,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/main_office) -"ikN" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 2"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 8 - }, -/area/almayer/medical/containment/cell) "ils" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -41675,6 +41923,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"ins" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "inw" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -42016,16 +42270,6 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"iui" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/hydroponics) "iun" = ( /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, @@ -42468,35 +42712,6 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) -"iEh" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - id = "Containment Cell 3"; - locked = 1; - name = "\improper Containment Cell 3"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ - dir = 4; - id = "Containment Cell 3"; - name = "\improper Containment Cell 3" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/containment/cell) "iEr" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -42738,6 +42953,14 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) +"iKc" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "iKf" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -42789,6 +43012,15 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/general_equipment) +"iKZ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "iLd" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -42879,17 +43111,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"iMK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) "iNZ" = ( /obj/structure/machinery/light{ dir = 8 @@ -42908,13 +43129,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"iOp" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/structure/pipes/vents/pump/no_boom, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "iOD" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -42932,6 +43146,12 @@ icon_state = "silver" }, /area/almayer/living/briefing) +"iPD" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "iPS" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -43158,6 +43378,16 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"iUW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/item/tool/crowbar/red, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "iUZ" = ( /obj/docking_port/stationary/escape_pod/cl, /turf/open/floor/plating, @@ -43196,6 +43426,13 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"iVY" = ( +/obj/effect/decal/hefa_cult_decals/d32, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "iVZ" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/folder/black, @@ -43371,15 +43608,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"iZr" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "iZw" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_AresUp"; @@ -43411,12 +43639,6 @@ icon_state = "emerald" }, /area/almayer/hallways/port_hallway) -"iZL" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 9 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) "iZP" = ( /obj/structure/platform{ dir = 8 @@ -43590,6 +43812,11 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) +"jcP" = ( +/turf/open/floor/almayer{ + icon_state = "plating_striped" + }, +/area/almayer/engineering/upper_engineering/starboard) "jcZ" = ( /obj/structure/machinery/light{ dir = 8 @@ -43750,20 +43977,6 @@ icon_state = "orange" }, /area/almayer/engineering/engine_core) -"jfV" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 5"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 1 - }, -/area/almayer/medical/containment/cell) "jfY" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -43847,6 +44060,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) +"jgC" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_a_p) "jgF" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -44132,6 +44353,13 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) +"jlT" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "jlX" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, @@ -44625,6 +44853,15 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) +"jAJ" = ( +/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/engineering/upper_engineering/port) "jBy" = ( /obj/structure/machinery/light{ dir = 4 @@ -44643,6 +44880,29 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"jBO" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 3"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 8 + }, +/area/almayer/medical/containment/cell) +"jBX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "jCa" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -44753,34 +45013,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_s) -"jGm" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - id = "Containment Cell 2"; - locked = 1; - name = "\improper Containment Cell 2" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ - dir = 4; - id = "Containment Cell 2"; - name = "\improper Containment Cell 2" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/containment/cell) "jGn" = ( /obj/structure/machinery/light{ dir = 1 @@ -44851,6 +45083,15 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"jHL" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "jHQ" = ( /obj/structure/machinery/crema_switch{ pixel_x = -24; @@ -44907,21 +45148,6 @@ icon_state = "plating" }, /area/almayer/shipboard/port_missiles) -"jKy" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - name = "\improper Medical Bay"; - req_one_access = null - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/upper_medical) "jKz" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -45058,6 +45284,16 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) +"jMG" = ( +/obj/structure/largecrate/random/case/small, +/obj/structure/largecrate/random/mini/wooden{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "jMK" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -45086,6 +45322,35 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"jNc" = ( +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + id = "Containment Cell 3"; + locked = 1; + name = "\improper Containment Cell 3"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ + dir = 4; + id = "Containment Cell 3"; + name = "\improper Containment Cell 3" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/containment/cell) "jNq" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access = null @@ -45189,6 +45454,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) +"jPq" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "jQt" = ( /turf/open/floor/almayer/research/containment/floor2{ dir = 8 @@ -45223,6 +45494,15 @@ }, /turf/closed/wall/almayer/outer, /area/space) +"jRC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "jRK" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -45783,6 +46063,15 @@ "kcp" = ( /turf/closed/wall/almayer, /area/almayer/living/auxiliary_officer_office) +"kcA" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "kcH" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/synthcloset) @@ -45933,6 +46222,18 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"kgs" = ( +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext_se_2"; + name = "\improper Research Window Shutter" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/plating, +/area/almayer/medical/medical_science) "khd" = ( /obj/structure/bed/chair{ dir = 4 @@ -46626,23 +46927,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"kxx" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - name = "\improper Research Reception Laboratory" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "kxL" = ( /obj/structure/closet/coffin/woodencrate, /obj/structure/largecrate/random/mini/wooden{ @@ -46890,14 +47174,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) -"kCP" = ( -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "kCS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -47135,12 +47411,30 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/almayer, /area/almayer/shipboard/brig/execution) +"kHS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "kHT" = ( /turf/open/floor/almayer{ dir = 5; icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"kHY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "kIm" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -47312,6 +47606,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"kMK" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 8; + icon_state = "outerhull_dir" + }, +/area/almayer/engineering/upper_engineering/port) "kMU" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -47332,6 +47639,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/processing) +"kNk" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/almayer, +/area/almayer/engineering/upper_engineering/starboard) "kNl" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -48013,12 +48326,15 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) -"lbE" = ( -/obj/structure/pipes/vents/pump/no_boom, +"lbB" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/command/lifeboat) +/area/almayer/engineering/upper_engineering/port) "lbX" = ( /obj/structure/bed/chair{ dir = 4 @@ -48496,6 +48812,12 @@ }, /turf/open/floor/almayer, /area/almayer/living/port_emb) +"lne" = ( +/obj/structure/bed/chair, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "lnm" = ( /turf/open/floor/almayer{ icon_state = "orangecorner" @@ -48559,6 +48881,29 @@ icon_state = "plate" }, /area/almayer/squads/charlie) +"lol" = ( +/obj/structure/machinery/status_display{ + pixel_x = 16; + pixel_y = -30 + }, +/obj/structure/sign/safety/airlock{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) +"lou" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "loK" = ( /obj/structure/closet/crate/medical, /obj/item/storage/firstaid/adv, @@ -48945,6 +49290,13 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"luY" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "luZ" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -49080,24 +49432,6 @@ icon_state = "plate" }, /area/almayer/living/auxiliary_officer_office) -"lyf" = ( -/obj/structure/machinery/door/airlock/almayer/research/reinforced{ - dir = 8; - name = "\improper Containment Airlock" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "lyi" = ( /obj/structure/surface/table/almayer, /obj/item/trash/pistachios, @@ -49196,18 +49530,15 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"lAq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +"lAu" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ + dir = 1 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_side" + icon_state = "test_floor4" }, -/area/almayer/medical/medical_science) +/area/almayer/engineering/upper_engineering/port) "lAy" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 @@ -49394,14 +49725,6 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_p) -"lDO" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "lDV" = ( /obj/effect/landmark/start/marine/medic/bravo, /obj/effect/landmark/late_join/bravo, @@ -49711,6 +50034,18 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) +"lJv" = ( +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext"; + name = "\improper Research Window Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/plating, +/area/almayer/medical/medical_science) "lJG" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -49928,6 +50263,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_two) +"lON" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext_door"; + name = "\improper Research Doorway Shutter" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "lPB" = ( /obj/structure/surface/table/almayer, /obj/item/device/lightreplacer, @@ -50554,6 +50900,12 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"mhG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "mhI" = ( /obj/structure/machinery/vending/cigarette{ density = 0; @@ -50694,6 +51046,23 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) +"mkH" = ( +/obj/structure/surface/rack{ + density = 0; + pixel_y = 16 + }, +/obj/structure/surface/rack{ + layer = 2.5 + }, +/obj/item/storage/fancy/candle_box{ + pixel_x = 6; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "mlb" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -50744,6 +51113,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) +"mmN" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "researchlockdownext_se_2"; + name = "\improper Research Window Shutter" + }, +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/plating, +/area/almayer/medical/medical_science) "mnf" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -51003,32 +51384,12 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"msw" = ( -/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ - dir = 1; - id = "Containment Cell 1"; - locked = 1; - name = "\improper Containment Cell 1" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "Containment Cell 1"; - name = "\improper Containment Cell 1"; - unacidable = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +"msP" = ( +/obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/medical/containment/cell) +/area/almayer/engineering/upper_engineering/starboard) "msV" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, @@ -51615,26 +51976,6 @@ icon_state = "silver" }, /area/almayer/command/airoom) -"mHG" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/door/window/westright, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/window/westright{ - dir = 4; - req_access_txt = "28" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 8; - id = "researchlockdownext_windoor"; - name = "\improper Research Windoor Shutter" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "mHO" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -51778,19 +52119,6 @@ "mKq" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/bridgebunks) -"mKs" = ( -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 8; - id = "researchlockdownext_windoor"; - name = "\improper Research Windoor Shutter" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/open/floor/plating, -/area/almayer/medical/medical_science) "mKw" = ( /obj/structure/disposalpipe/junction{ dir = 1 @@ -52380,6 +52708,17 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"mWs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "mWw" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -52482,15 +52821,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"mYT" = ( -/obj/structure/bed, -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/medical_science) "mYY" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -52581,6 +52911,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/auxiliary_officer_office) +"nau" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "naB" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/perma) @@ -52592,6 +52928,17 @@ icon_state = "kitchen" }, /area/almayer/engineering/upper_engineering/port) +"naR" = ( +/obj/structure/machinery/iv_drip, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_corner" + }, +/area/almayer/medical/medical_science) "naV" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -52614,6 +52961,15 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"ncp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "ncE" = ( /obj/structure/machinery/light{ dir = 8 @@ -52696,6 +53052,15 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/engineering_workshop) +"new" = ( +/obj/item/reagent_container/glass/bucket/janibucket, +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_y = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "neE" = ( /obj/structure/platform_decoration{ dir = 1 @@ -52811,6 +53176,13 @@ icon_state = "redcorner" }, /area/almayer/living/briefing) +"ngU" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/almayer, +/area/almayer/engineering/upper_engineering/starboard) "nhi" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -52993,6 +53365,12 @@ icon_state = "cargo_arrow" }, /area/almayer/hallways/vehiclehangar) +"nkn" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "nkx" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -53014,15 +53392,14 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) -"nlV" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +"nlW" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "orange" }, -/area/almayer/command/lifeboat) +/area/almayer/engineering/upper_engineering/starboard) "nmb" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -53289,6 +53666,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"nrO" = ( +/obj/structure/bed/chair/comfy{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "nsc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -53777,6 +54163,14 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"nCT" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "nDd" = ( /obj/structure/closet/secure_closet/guncabinet/red, /obj/item/ammo_magazine/smg/m39, @@ -54426,17 +54820,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"nPM" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Lifeboat Control Bubble"; - req_access = null - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "nPT" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ desc = "These shutters seem to be pretty poorly mantained and almost wedged into the room.. you're not sure if these are official."; @@ -54651,6 +55034,16 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) +"nVX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D1"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/starboard) "nWN" = ( /obj/structure/surface/table/almayer, /turf/open/floor/wood/ship, @@ -54902,6 +55295,27 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"odb" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"odl" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/starboard) +"odu" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "odB" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -54931,6 +55345,15 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/sea_office) +"odV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "oed" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -54993,6 +55416,23 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) +"ofH" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) +"ofK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "ofZ" = ( /obj/structure/bed/sofa/south/grey, /turf/open/floor/almayer{ @@ -55035,6 +55475,16 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"ohH" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D3"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "ohJ" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/wood/ship, @@ -55045,14 +55495,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"ohR" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 9 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "oih" = ( /obj/structure/bed{ icon_state = "abed" @@ -55082,6 +55524,15 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"oir" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/structure/machinery/power/apc/almayer/hardened{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "oit" = ( /obj/effect/landmark/railgun_computer{ dir = 1 @@ -55415,14 +55866,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"opy" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "opC" = ( /obj/structure/machinery/door/airlock/almayer/command/reinforced{ name = "\improper Combat Information Center" @@ -55943,6 +56386,16 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) +"ozN" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat2-D2"; + linked_dock = "almayer-lifeboat2"; + throw_dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/starboard) "ozT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -56014,6 +56467,15 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"oCf" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "oCi" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = -17 @@ -56032,12 +56494,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) -"oCO" = ( -/obj/structure/pipes/vents/pump/no_boom{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "oCX" = ( /turf/open/floor/almayer{ dir = 6; @@ -56285,6 +56741,12 @@ icon_state = "orange" }, /area/almayer/shipboard/brig/perma) +"oIm" = ( +/obj/structure/prop/server_equipment/broken, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "oIn" = ( /obj/structure/bed/chair{ dir = 8; @@ -56294,6 +56756,28 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"oIr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/research/reinforced{ + dir = 8; + name = "\improper Containment Airlock" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "oIB" = ( /turf/closed/wall/almayer, /area/almayer/command/combat_correspondent) @@ -56500,16 +56984,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"oMT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ - id_tag = "Boat2-D1"; - linked_dock = "almayer-lifeboat2"; - throw_dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "oNb" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -56563,6 +57037,12 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"oPf" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "oPk" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control{ @@ -56819,10 +57299,6 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) -"oTP" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "oUG" = ( /obj/structure/machinery/light{ dir = 8 @@ -56936,18 +57412,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) -"oYj" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "researchlockdownext_se_2"; - name = "\improper Research Window Shutter" - }, -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/plating, -/area/almayer/medical/medical_science) "oYp" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -57013,6 +57477,15 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/main_office) +"paI" = ( +/obj/structure/sign/safety/debark_lounge{ + pixel_x = 15; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "paL" = ( /turf/open/floor/almayer/uscm/directional{ dir = 1 @@ -57077,6 +57550,15 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) +"pcv" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "pcD" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -57188,6 +57670,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/navigation) +"pfc" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/starboard) "pfh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -57324,15 +57818,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"pjh" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "pji" = ( /turf/closed/wall/almayer, /area/almayer/hallways/stern_hallway) @@ -57998,6 +58483,12 @@ icon_state = "plating" }, /area/almayer/shipboard/starboard_point_defense) +"pzJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "pzO" = ( /obj/item/tool/warning_cone{ pixel_y = 13 @@ -58046,12 +58537,6 @@ icon_state = "orangecorner" }, /area/almayer/hull/upper_hull/u_a_s) -"pCb" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "pCi" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/upper_hull/u_f_s) @@ -58147,12 +58632,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"pDL" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 10 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) "pEl" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -58240,18 +58719,6 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/perma) -"pFz" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 5"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple, -/area/almayer/medical/containment/cell) "pFA" = ( /obj/structure/pipes/standard/simple/visible{ dir = 4 @@ -58496,6 +58963,27 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"pLv" = ( +/obj/structure/device/broken_moog, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"pLO" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 5"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple{ + dir = 1 + }, +/area/almayer/medical/containment/cell) "pLW" = ( /obj/structure/machinery/firealarm{ dir = 4; @@ -58753,6 +59241,15 @@ icon_state = "plate" }, /area/almayer/living/offices) +"pRn" = ( +/obj/structure/bed, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/medical_science) "pRy" = ( /turf/open/floor/almayer/research/containment/corner_var1{ dir = 4 @@ -59397,6 +59894,22 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"qeK" = ( +/obj/structure/pipes/vents/scrubber, +/obj/structure/surface/table/reinforced/black, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/cable_coil{ + pixel_x = -7; + pixel_y = 11 + }, +/obj/item/device/helmet_visor{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "qeY" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/toy/beach_ball/holoball, @@ -59420,15 +59933,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"qfu" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/upper_medical) "qfy" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -59646,6 +60150,14 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"qjV" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "qki" = ( /obj/effect/landmark/start/marine/smartgunner/charlie, /obj/effect/landmark/late_join/charlie, @@ -59842,20 +60354,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) -"qnZ" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 2"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 4 - }, -/area/almayer/medical/containment/cell) "qof" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -60209,6 +60707,18 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"qxm" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + dir = 4; + id = "W_Containment Cell 5"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/closed/wall/almayer/research/containment/wall/purple, +/area/almayer/medical/containment/cell) "qxA" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -60451,6 +60961,17 @@ /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) +"qDt" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Lifeboat Control Bubble"; + req_access = null + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "qDv" = ( /obj/structure/closet, /obj/item/stack/sheet/glass/large_stack, @@ -60465,12 +60986,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"qDz" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "qDN" = ( /obj/structure/machinery/light{ dir = 8 @@ -60502,6 +61017,20 @@ icon_state = "plating" }, /area/almayer/command/cic) +"qEn" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research{ + name = "\improper Research Hydroponics Workshop" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) "qEy" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -61388,6 +61917,12 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"qYu" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "qYC" = ( /obj/structure/disposalpipe/down/almayer{ dir = 4; @@ -61743,17 +62278,6 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"rfY" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "rgy" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -61887,6 +62411,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"rjG" = ( +/obj/structure/pipes/standard/tank/oxygen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "rjH" = ( /obj/structure/surface/rack, /obj/item/storage/beer_pack, @@ -62015,6 +62545,26 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"rmc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) +"rmf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/engineering/upper_engineering/starboard) "rmv" = ( /obj/structure/machinery/door/airlock/almayer/security{ dir = 2; @@ -62438,6 +62988,12 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"rwb" = ( +/obj/structure/largecrate/random/barrel/white, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_a_s) "rwv" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/bed/chair/comfy/bravo, @@ -62608,6 +63164,13 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"rAP" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "rBa" = ( /obj/structure/machinery/cm_vending/clothing/synth, /obj/structure/prop/invuln/overhead_pipe{ @@ -62698,6 +63261,18 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"rCD" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "rCK" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -62725,6 +63300,12 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"rDb" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "rDd" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/computer/emails{ @@ -62886,6 +63467,12 @@ icon_state = "plating" }, /area/almayer/engineering/engine_core) +"rFy" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orangecorner" + }, +/area/almayer/engineering/upper_engineering/starboard) "rFB" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /obj/effect/decal/warning_stripes{ @@ -63468,12 +64055,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/chief_mp_office) -"rTB" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 4 +"rTJ" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) +/area/almayer/engineering/upper_engineering/port) "rTV" = ( /obj/structure/sign/safety/security{ pixel_x = 32 @@ -63692,18 +64279,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"rZL" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 1"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple, -/area/almayer/medical/containment/cell) "rZP" = ( /obj/structure/surface/table/almayer, /obj/item/tool/weldpack, @@ -64137,6 +64712,15 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"skg" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "skl" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -64379,6 +64963,15 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"spK" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 + }, +/obj/structure/largecrate/random/secure, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "spS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64492,6 +65085,12 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"ssU" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "ssW" = ( /obj/structure/closet/secure_closet/guncabinet/red, /obj/item/ammo_magazine/shotgun/buckshot, @@ -64504,6 +65103,12 @@ icon_state = "redfull" }, /area/almayer/command/cic) +"ssX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "ssZ" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -64582,6 +65187,14 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"svl" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "svp" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ @@ -64867,17 +65480,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"sCU" = ( -/obj/structure/machinery/iv_drip, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "sterile_green_corner" - }, -/area/almayer/medical/medical_science) "sDu" = ( /obj/item/clothing/under/marine/dress, /turf/open/floor/almayer{ @@ -65274,12 +65876,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"sLt" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "sLE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65437,17 +66033,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"sQt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 9 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) "sQF" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -65460,6 +66045,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliason) +"sQO" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "sQS" = ( /obj/structure/surface/table/almayer, /obj/item/tool/stamp{ @@ -65961,6 +66552,34 @@ icon_state = "red" }, /area/almayer/hallways/starboard_hallway) +"taH" = ( +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + id = "Containment Cell 2"; + locked = 1; + name = "\improper Containment Cell 2" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/containment{ + dir = 4; + id = "Containment Cell 2"; + name = "\improper Containment Cell 2" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/containment/cell) "tbD" = ( /obj/structure/ladder{ height = 2; @@ -66161,6 +66780,15 @@ icon_state = "plating" }, /area/almayer/shipboard/brig/armory) +"tgK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "tgS" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/sign/safety/maint{ @@ -66266,6 +66894,19 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"tiw" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, +/obj/item/weapon/baseballbat/metal{ + pixel_x = -2; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "tiE" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -66314,6 +66955,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"tjj" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "tjl" = ( /turf/open/floor/almayer{ dir = 1; @@ -66438,12 +67085,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"tmI" = ( -/obj/structure/bed, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/medical_science) "tmK" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -67136,6 +67777,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"tAh" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "tAi" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -67145,6 +67792,20 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"tAq" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/clothing/mask/breath{ + pixel_y = -5; + pixel_x = -3 + }, +/obj/item/clothing/head/helmet/space/compression/uscm, +/obj/item/cell/crap{ + pixel_x = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "tAL" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -67218,12 +67879,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) -"tCk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "tCN" = ( /turf/open/floor/almayer{ dir = 8; @@ -67727,6 +68382,15 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/chief_mp_office) +"tNP" = ( +/obj/structure/sign/safety/debark_lounge{ + pixel_x = 15; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "tNR" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -68193,17 +68857,6 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"tZd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ - dir = 5 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) "tZe" = ( /obj/item/trash/USCMtray{ pixel_x = -4; @@ -68221,6 +68874,20 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) +"tZm" = ( +/obj/structure/closet/crate/freezer{ + desc = "A freezer crate. There is a note attached, it reads: Do not open, property of Pvt. Mendoza." + }, +/obj/item/storage/beer_pack, +/obj/item/reagent_container/food/drinks/cans/beer, +/obj/item/reagent_container/food/drinks/cans/beer, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_a_s) "tZB" = ( /obj/structure/machinery/light{ dir = 1 @@ -68544,6 +69211,17 @@ /obj/structure/machinery/cm_vending/sorted/marine_food, /turf/open/floor/almayer, /area/almayer/living/briefing) +"ugJ" = ( +/obj/structure/largecrate/random/case/small, +/obj/structure/largecrate/random/mini/small_case{ + pixel_x = -1; + pixel_y = 9 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "ugT" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -68568,6 +69246,12 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) +"uhM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/starboard) "uhP" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -68596,6 +69280,19 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"uiR" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 8; + icon_state = "outerhull_dir" + }, +/area/almayer/engineering/upper_engineering/starboard) "uiT" = ( /turf/open/floor/almayer{ dir = 1; @@ -68736,6 +69433,15 @@ icon_state = "rasputin15" }, /area/almayer/powered/agent) +"umy" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "umC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -68958,18 +69664,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"urH" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "researchlockdownext_door"; - name = "\improper Research Doorway Shutter" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/medical/medical_science) "urM" = ( /obj/structure/machinery/light{ dir = 8 @@ -69028,12 +69722,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/engine_core) -"usB" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 8 +"usy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "usX" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -69904,21 +70603,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) -"uJM" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/open/floor/plating, -/area/almayer/medical/containment) "uJU" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -70288,14 +70972,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"uSk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "uSq" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -70611,6 +71287,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"uYg" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "uYO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -70627,6 +71307,15 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) +"uZH" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "uZQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -70756,14 +71445,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) -"vcV" = ( -/obj/structure/surface/rack, -/obj/item/cell/high/empty, -/obj/item/cell/high/empty, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_a_s) "vdJ" = ( /obj/structure/surface/table/almayer, /obj/item/pipe{ @@ -71449,6 +72130,21 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/port_missiles) +"vqD" = ( +/obj/item/trash/candle, +/obj/item/tool/match/paper, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) +"vqK" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "vqL" = ( /obj/item/clothing/under/shorts/black, /obj/structure/machinery/power/apc/almayer{ @@ -71569,6 +72265,10 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"vsh" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "vsF" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -71919,14 +72619,6 @@ icon_state = "greenfull" }, /area/almayer/shipboard/brig/cells) -"vzA" = ( -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/plating, -/area/almayer/medical/upper_medical) "vzK" = ( /turf/open/floor/almayer, /area/almayer/engineering/ce_room) @@ -72079,31 +72771,6 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/chief_mp_office) -"vCM" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/beaker{ - pixel_x = 8 - }, -/obj/item/paper_bin/wy{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/item/tool/pen{ - pixel_y = -2 - }, -/obj/item/reagent_container/dropper{ - pixel_x = -1; - pixel_y = 9 - }, -/obj/structure/machinery/biohazard_lockdown{ - pixel_x = 8; - pixel_y = 10 - }, -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer{ - icon_state = "sterile_green" - }, -/area/almayer/medical/containment) "vCO" = ( /obj/effect/landmark/start/bridge, /turf/open/floor/plating/plating_catwalk, @@ -72210,6 +72877,14 @@ "vGk" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"vGr" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_a_p) "vGy" = ( /obj/structure/largecrate/supply/supplies/tables_racks, /turf/open/floor/plating, @@ -72322,18 +72997,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"vIQ" = ( -/obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "researchlockdownext"; - name = "\improper Research Window Shutter" - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white, -/turf/open/floor/plating, -/area/almayer/medical/medical_science) "vJg" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -72452,6 +73115,21 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"vLj" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + name = "\improper Medical Bay"; + req_one_access = null + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/upper_medical) "vLA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -72489,6 +73167,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"vME" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "vMG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -72550,6 +73234,15 @@ "vOy" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/medical_science) +"vOP" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/upper_medical) "vPj" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/flashlight/lamp{ @@ -72653,15 +73346,6 @@ /obj/item/device/camera, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"vQu" = ( -/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "vQN" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1 @@ -72705,6 +73389,20 @@ dir = 10 }, /area/almayer/command/cic) +"vRu" = ( +/obj/structure/surface/rack{ + layer = 2.5 + }, +/obj/item/tool/hand_labeler{ + pixel_x = 4; + pixel_y = 11 + }, +/obj/item/storage/box/matches, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "vRz" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/lower_hull/l_f_p) @@ -73114,6 +73812,31 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"vYz" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/beaker{ + pixel_x = 8 + }, +/obj/item/paper_bin/wy{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_y = -2 + }, +/obj/item/reagent_container/dropper{ + pixel_x = -1; + pixel_y = 9 + }, +/obj/structure/machinery/biohazard_lockdown{ + pixel_x = 8; + pixel_y = 10 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/containment) "vYC" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -73265,10 +73988,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_four) -"wbR" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/lifeboat) "wbX" = ( /obj/structure/closet/secure_closet/cmdcabinet{ pixel_y = 24 @@ -73320,6 +74039,24 @@ }, /turf/open/floor/almayer, /area/almayer/living/auxiliary_officer_office) +"wdo" = ( +/obj/structure/machinery/door/airlock/almayer/research/reinforced{ + dir = 8; + name = "\improper Containment Airlock" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "wdr" = ( /obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ @@ -73354,6 +74091,16 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"wei" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/hydroponics) "wex" = ( /obj/structure/machinery/light{ dir = 4 @@ -73660,6 +74407,17 @@ icon_state = "sterile_green" }, /area/almayer/medical/lockerroom) +"wky" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "wkH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/whistle{ @@ -74548,6 +75306,19 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"wEI" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/tool/pen, +/obj/item/paper_bin/uscm{ + pixel_y = 7 + }, +/obj/item/clipboard{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "wEO" = ( /obj/structure/platform_decoration{ dir = 4 @@ -74771,6 +75542,21 @@ icon_state = "plate" }, /area/almayer/command/combat_correspondent) +"wKP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/plating, +/area/almayer/medical/containment) "wLi" = ( /obj/structure/machinery/door_control/airlock{ id = "s_engi"; @@ -74885,6 +75671,14 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"wMO" = ( +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/medical_science) "wNl" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -74945,6 +75739,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) +"wOK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "wPf" = ( /obj/structure/sign/safety/reception{ pixel_x = 32; @@ -75053,6 +75856,16 @@ }, /turf/open/floor/almayer, /area/almayer/living/grunt_rnr) +"wRP" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "wRT" = ( /obj/structure/largecrate/random/case/double, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -75373,6 +76186,13 @@ icon_state = "containment_corner_variant_2" }, /area/almayer/medical/containment/cell) +"wWq" = ( +/obj/structure/surface/table/reinforced/black, +/obj/item/clothing/suit/space/compression/uscm, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "wWz" = ( /turf/closed/wall/almayer/research/containment/wall/north, /area/almayer/medical/containment/cell) @@ -75500,6 +76320,19 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/general_equipment) +"wZv" = ( +/obj/structure/prop/invuln{ + desc = "An inflated membrane. This one is puncture proof. Wow!"; + icon = 'icons/obj/items/inflatable.dmi'; + icon_state = "wall"; + name = "umbilical wall" + }, +/obj/structure/blocker/invisible_wall, +/turf/open/floor/almayer_hull{ + dir = 4; + icon_state = "outerhull_dir" + }, +/area/almayer/engineering/upper_engineering/port) "wZy" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -75548,6 +76381,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) +"wZX" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/lifeboat) "xad" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -75784,15 +76623,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_one) -"xgg" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 4 - }, -/obj/structure/pipes/vents/pump/no_boom{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "xgh" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -75801,6 +76631,12 @@ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_lobby) +"xgm" = ( +/obj/structure/reagent_dispensers/oxygentank, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "xgn" = ( /obj/structure/ladder{ height = 1; @@ -76036,20 +76872,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) -"xlf" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - dir = 4; - id = "W_Containment Cell 3"; - name = "\improper Containment Cell 5"; - unacidable = 1 - }, -/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ - dir = 4 - }, -/turf/closed/wall/almayer/research/containment/wall/purple{ - dir = 8 - }, -/area/almayer/medical/containment/cell) "xlk" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer, @@ -76202,6 +77024,12 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/port_point_defense) +"xoO" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "xoS" = ( /obj/effect/decal/warning_stripes{ icon_state = "N" @@ -76436,20 +77264,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"xtT" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/medical/medical_science) "xuc" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -76471,6 +77285,31 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"xuE" = ( +/obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ + dir = 1; + id = "Containment Cell 5"; + locked = 1; + name = "\improper Containment Cell 5" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "Containment Cell 5"; + name = "\improper Containment Cell 5"; + unacidable = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/containment/cell) "xuI" = ( /obj/structure/sign/safety/water{ pixel_x = 8; @@ -76865,6 +77704,16 @@ "xBe" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/engineering/upper_engineering) +"xBn" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ + id_tag = "Boat1-D3"; + linked_dock = "almayer-lifeboat1"; + throw_dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/port) "xBQ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -77102,13 +77951,6 @@ icon_state = "red" }, /area/almayer/living/briefing) -"xGU" = ( -/obj/structure/pipes/standard/simple/hidden/supply/no_boom, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "xHe" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -77221,6 +78063,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"xJn" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "xJC" = ( /obj/structure/machinery/door/airlock/almayer/generic/corporate{ name = "Corporate Liaison's Closet" @@ -77244,6 +78092,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"xKM" = ( +/obj/structure/machinery/status_display{ + pixel_x = 16; + pixel_y = -30 + }, +/obj/structure/sign/safety/airlock{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/starboard) "xKT" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/machinery/power/apc/almayer{ @@ -77481,6 +78341,15 @@ /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"xPZ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "xQa" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -77939,16 +78808,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"xXu" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/pipes/vents/pump/no_boom{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "xYf" = ( /obj/structure/machinery/cm_vending/clothing/sea, /turf/open/floor/almayer{ @@ -78200,6 +79059,16 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"ydh" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/black, +/obj/item/tank/oxygen, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "ydx" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -78261,6 +79130,14 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/perma) +"ydY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "yeo" = ( /obj/structure/machinery/cm_vending/clothing/dress{ req_access = list(1) @@ -78522,6 +79399,26 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/main_office) +"ylc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/structure/machinery/door/airlock/almayer/research/reinforced{ + dir = 8; + name = "\improper Containment Airlock" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/medical/containment) "yle" = ( /obj/effect/landmark/start/marine/engineer/delta, /obj/effect/landmark/late_join/delta, @@ -108474,8 +109371,8 @@ vOy vOy vOy vOy -kCP -rfY +wMO +wky sqf hon ajt @@ -109081,11 +109978,11 @@ vti gGx vti lid -vIQ +lJv aCC kXw pxo -vzA +asn ago asW cwJ @@ -109284,11 +110181,11 @@ ueJ ueJ oDi trF -vIQ +lJv edv kXw pxo -vzA +asn ayT akU avj @@ -109478,7 +110375,7 @@ hng dnC hPN vCk -eRM +qEn qam riE gAS @@ -109487,11 +110384,11 @@ dVu eSo qmD aIC -vIQ +lJv aCt kXw pxo -vzA +asn ayT aii avm @@ -109681,7 +110578,7 @@ xyt wiW tOr dBj -iui +wei kBP kBP jsx @@ -109894,10 +110791,10 @@ kXw vtm emK fGu -urH +hPe sdu btC -jKy +vLj ahM kSJ avj @@ -110094,13 +110991,13 @@ vkp cfT hec gNp -ejr +hVf dVu -lAq -fce +rmc +lON dVu oDR -qfu +vOP bYe bnD aWH @@ -110297,12 +111194,12 @@ vkp aoM kBo kBP -sCU +naR vOy -kxx +hrn vOy -mHG -mKs +aRd +aIo vOy qLK akU @@ -110498,11 +111395,11 @@ vOy dHV vkp jUM -tZd -tmI -mYT +lou +eBO +pRn vOy -xtT +ayZ aCD hFC qmy @@ -110699,9 +111596,9 @@ mKx kZV vOy vOy -esP +oIr vOy -lyf +wdo vOy vOy vOy @@ -110709,7 +111606,7 @@ qqQ aoM aoM vgB -cHS +kgs ayT aii avj @@ -110904,7 +111801,7 @@ vOy jFf vkp jrM -iMK +mWs lmw vOy dyb @@ -110912,7 +111809,7 @@ tsM prx fpT eVT -cHS +kgs ayT aii avj @@ -111107,7 +112004,7 @@ vOy vqZ vkp rDr -sQt +usy nDo vOy glB @@ -111115,7 +112012,7 @@ vkp ger aoM aFf -oYj +mmN ayT aii avj @@ -111714,9 +112611,9 @@ mSK mSK vOy vOy -icn -uJM -icn +ylc +wKP +ylc vOy vOy rhO @@ -112525,11 +113422,11 @@ wWz anw wLy jlG -msw +aqP kCE wLN npt -hbi +xuE hqh wLy eiE @@ -112929,15 +113826,15 @@ avj vOy woh vgO -fhW -rZL +aoJ +alk xAe avH wse cXC woh -jfV -pFz +pLO +qxm vgO xAe vOy @@ -113543,7 +114440,7 @@ apR aqS mnW nPf -vCM +vYz awR uoi vOy @@ -114148,13 +115045,13 @@ vOy elR xXh xXh -ikN -jGm -qnZ +apU +taH +aBe otu -xlf -iEh -chJ +jBO +jNc +ean xXh xXh dMK @@ -128142,7 +129039,7 @@ aag uMc vFv wOt -jhx +odl jhx keR jhx @@ -128151,21 +129048,21 @@ dwI aTS wqq agJ -nlV -ckn -foI -ckn -ckn -ayg +hal +uYg +nau +uYg +uYg +bXf aDO aDO aDO -opy -ckn -ckn -foI -ckn -nlV +gQO +uYg +uYg +nau +uYg +hal aGC wqq aTS @@ -128174,7 +129071,7 @@ soP tWi soP pDr -pDr +tWi tpd eim pql @@ -128343,9 +129240,9 @@ aaa aaa aad uMc -riJ -kPG -kPG +bNM +rmf +uZH bFt kPG kPG @@ -128356,17 +129253,17 @@ anR lNl aqq eky -pCb +aNl eky eky -lDO -wbR -wbR -wbR -ohR +nCT +vsh +vsh +vsh +ydY eky eky -pCb +aNl eky aqq aIe @@ -128377,9 +129274,9 @@ tim uWV ttd nLk -tim -khE -rID +rCD +eYR +uIv pql ajZ aaa @@ -128540,15 +129437,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aad -cuC -uMc -uMc +bdH +bdH +bdH +aac +aag cuC +htb +pfc +ptK ptK ucp cIW @@ -128558,8 +129455,8 @@ psm dKm psm aHe -iOp -oTP +jlT +exi eky eky eAC @@ -128569,8 +129466,8 @@ aBu eAC eky eky -sLt -xXu +ins +wRP aHe vuv vuv @@ -128580,12 +129477,12 @@ jWh olk jWh jWh +jWh +jAJ +lAu bYn -pql -pql -bYn -ajZ -aaa +aag +ajY aaa aaa aaa @@ -128743,15 +129640,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aae -aah -aah -aag -uMc +bdH +bdH +bdH +cuC +cuC +cuC +bNM +ofK +ptK uXL gPc trB @@ -128762,7 +129659,7 @@ psm psm eky eky -pCb +aNl eky uNV aHe @@ -128772,7 +129669,7 @@ aDQ aHe uNV eky -pCb +aNl eky rqj vuv @@ -128783,12 +129680,12 @@ qCg xjw pfA xAC -pql -aag -aah -aah -afm -aaa +jWh +lbB +uIv +bYn +bYn +bYn aaa aaa aaa @@ -128931,164 +129828,164 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -uMc -uXL -eet -fcP -pDh -ptK -xlX -xlX -hSu -aMT -aMT -aMR -qeF -aHe -aHe -aDX -yge -aEm -aHe -aHe -okg -aMR -aMT -aMT -iEs -cxo -cxo -jWh -uUV -rsW -rsW -fnQ -pql -ajZ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aUx -btn -btm -btm -bxI -byM -aVl -nmb -aVl -brI -bjl -sPA -bkZ -bmR -boI -bqe -brx -tzz -jnf -ePY -bxr -byD -bkZ -bYK -bCI -oAd -aVl -fLX -aVl -byQ -ccS -ggQ -bLy -bLy -dKL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bdH +bdH +bdH +cuC +uiG +tfb +rFy +ofK +ptK +uXL +eet +fcP +pDh +ptK +xlX +xlX +hSu +aMT +aMT +dPm +qeF +aHe +aHe +aDX +yge +aEm +aHe +aHe +okg +dPm +aMT +aMT +iEs +cxo +cxo +jWh +uUV +rsW +rsW +fnQ +jWh +lbB +cKL +xXa +xoO +bYn +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +aKQ +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bdH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aUx +btn +btm +btm +bxI +byM +aVl +nmb +aVl +brI +bjl +sPA +bkZ +bmR +boI +bqe +brx +tzz +jnf +ePY +bxr +byD +bkZ +bYK +bCI +oAd +aVl +fLX +aVl +byQ +ccS +ggQ +bLy +bLy +dKL aaa aaa aaa @@ -129149,15 +130046,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -uMc +bdH +bdH +bdH +cuC +bNM +rmf +luY +ncp +ptK cQg wxj lht @@ -129168,7 +130065,7 @@ jBB psm svf arV -aMS +wZX eky aDQ ayi @@ -129178,7 +130075,7 @@ eky jlX aDQ eky -aMS +wZX arV vUh vuv @@ -129189,12 +130086,12 @@ dkS rsW naQ fnQ -pql -ajZ -aaa -aaa -aaa -aaa +jWh +xPZ +pcv +eYR +uIv +bYn aaa aaa aaa @@ -129353,14 +130250,14 @@ aaa aaa aaa bdH -aaa -aaa -aaa -aaa -aaa -aaa -aad +bdH +bdH cuC +aeM +ofK +ptK +ptK +ptK ptK ptK afX @@ -129371,7 +130268,7 @@ psm psm eky arV -aMS +wZX eky aDQ pyy @@ -129381,7 +130278,7 @@ eky dLc aDQ eky -aMS +wZX arV eky vuv @@ -129392,15 +130289,15 @@ jWh kLc jWh jWh +jWh +jWh +jWh +lbB +oCf bYn -ajZ -aaa -aaa -aaa -aaa -aaa aaa aaa +bdH aaa aaa aaa @@ -129554,27 +130451,27 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -pVZ -gfh -aDg -xlX +bdH +bdH +bdH +bdH +uMc +bNM +ofK +psm kSd dmQ +tZm +dmQ +xlX +hWU +dmQ aeq psm aNe eky arV -aMS +wZX eky aHe jMQ @@ -129584,7 +130481,7 @@ eky dEn aHe eky -aMS +wZX arV eky aNe @@ -129592,15 +130489,15 @@ vuv ahb cxo nJy -fbx +boC +cxo iwh kfv -qMu -ajZ -aaa -aaa -bdH -bdH +vGr +vuv +lbB +uIv +pql bdH bdH bdH @@ -129757,37 +130654,37 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -pVZ +bdH +bdH +bdH +bdH +uMc +bNM +ofK +psm +kSd +dmQ nwu dmQ xlX -kSd +rwb dmQ jXY psm atY aMT aMT -uSk -cFZ -nPM -ckn -wbR -usB -wbR -ckn -nPM -cFZ -tCk +svl +pzJ +qDt +uYg +vsh +oPf +vsh +uYg +qDt +pzJ +sQO aMT aMT atY @@ -129796,14 +130693,14 @@ woM nqD cxo boC +cxo qMf wUN -qMu -ajZ -aaa -aaa -bdH -bdH +jgC +vuv +lbB +uIv +pql bdH bdH bdH @@ -129960,37 +130857,37 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -pVZ -pPz -dmQ +bdH +bdH +bdH +bdH +uMc +bNM +rtd +hSu xlX -dmQ +xlX +xlX +xlX +xlX +aiE dmQ atD psm psm aRp aRp -aPk +jBX akS aHe oxU bsy -xgg +oir gzw shh aHe tKf -aPk +jBX aRp edx vuv @@ -129998,15 +130895,15 @@ vuv myC crP cxo -boC -cxo -djc -qMu -ajZ -aaa -aaa -bdH -bdH +fbx +fbx +fbx +fbx +fbx +iEs +uWV +uIv +pql bdH bdH bdH @@ -130164,18 +131061,18 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aae -pVZ -pVZ -vcV -aIM +bdH +bdH +bdH +cuC +htb +pfc +psm +psm +psm +psm +pPz +xlX xlX xlX xlX @@ -130183,7 +131080,7 @@ xlX hSu qYG atM -ams +bGc atK aHe aHe @@ -130193,7 +131090,7 @@ aHe aHe aHe atM -ams +bGc atK qYG iEs @@ -130203,13 +131100,13 @@ jaj fbx boC hPg -qMu -qMu -afm -aaa -aaa -bdH -bdH +vuv +vuv +vuv +vuv +jAJ +lAu +bYn bdH bdH bdH @@ -130369,13 +131266,13 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad +bdH +cuC +bNM +tgK +tfb +skg +eaX pVZ pVZ pVZ @@ -130386,17 +131283,17 @@ pVZ pVZ aPw avu -pDL -amq -bFD +mhG +cFn +cYu aHe fdX wcR xJh aHe -lbE -vQu -iZL +qYu +dxK +dPC aMU aPw qMu @@ -130407,12 +131304,12 @@ qMu qMu qMu qMu -ajZ -aaa -aaa -aaa -bdH -bdH +euY +vME +jHL +wOK +uIv +bYn bdH bdH bdH @@ -130569,17 +131466,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aad -aag +bdH +bdH +bdH +bdH +cuC +riJ +kHY +uhM +fcP +xJn +cuC aag aag aag @@ -130590,7 +131487,7 @@ aag aPw aqJ aBu -iZr +odu aMT aEg aDO @@ -130598,7 +131495,7 @@ aDO aDO aEg aMT -pjh +odV aBu aqp aPw @@ -130609,13 +131506,13 @@ aag aag aag aag -aag -ajZ -aaa -aaa -aaa -bdH -bdH +bYn +tAh +thV +rDb +qjV +rID +bYn bdH bdH bdH @@ -130772,17 +131669,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aae -aah +bdH +bdH +bdH +bdH +cuC +cuC +umy +iKZ +tiw +cuC +cuC mNX mNX mNX @@ -130793,7 +131690,7 @@ cus aPw aPw atM -ams +bGc atK avu aMT @@ -130801,7 +131698,7 @@ arV aMT aMU atM -ams +bGc atK aPw aPw @@ -130812,13 +131709,13 @@ mNX mNX mNX qOk -aah -afm -aaa -aaa -aaa -bdH -bdH +bYn +bYn +tjj +kHS +rID +bYn +bYn bdH bdH bdH @@ -130975,17 +131872,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +cuC +mkH +rtd +fcP +cuC +ajZ xVk xVk xVk @@ -130996,15 +131893,15 @@ xVk aad aPw vgD -pDL -qDz -xGU -cFZ -usB -cFZ -qDz -xGU -iZL +mhG +had +eAL +pzJ +oPf +pzJ +had +eAL +dPC ihX aPw ajZ @@ -131015,13 +131912,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +aad +bYn +kcA +uWV +uIv +bYn +ajZ bdH bdH bdH @@ -131178,17 +132075,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +cuC +vRu +ngU +ssU +cuC +ajZ xVk xVk xVk @@ -131203,7 +132100,7 @@ aBA aqp avu eky -aMR +dPm eky aMU aqJ @@ -131218,13 +132115,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +aad +bYn +thV +uWV +uIv +bYn +ajZ bdH bdH bdH @@ -131381,17 +132278,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +uMc +gbs +iEr +hFw +uMc +ajZ xVk xVk xVk @@ -131406,7 +132303,7 @@ aHe aHe mtD eky -aMS +wZX eky nKq aHe @@ -131421,13 +132318,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +aad +pql +thV +fCL +uIv +pql +ajZ bdH bdH bdH @@ -131584,17 +132481,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +uMc +nrO +iEr +fcP +uMc +ajZ xVk xVk xVk @@ -131609,7 +132506,7 @@ aHe aHe avu eky -aMS +wZX eky aMU aHe @@ -131624,13 +132521,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +aad +pql +thV +fCL +uIv +pql +ajZ bdH bdH bdH @@ -131787,17 +132684,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +uMc +aVC +iEr +fcP +uMc +ajZ xVk xVk xVk @@ -131812,7 +132709,7 @@ jcZ aDO qqu eky -pCb +aNl eky dFk aDO @@ -131827,13 +132724,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +aad +pql +thV +fCL +uIv +pql +ajZ bdH bdH bdH @@ -131990,17 +132887,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +aad +cuC +oIm +rtd +odb +cuC +ajZ xVk xVk xVk @@ -132015,7 +132912,7 @@ avu eky eky nJu -pCb +aNl eky eky eky @@ -132030,13 +132927,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +aad +bYn +thV +uWV +oCf +bYn +ajZ bdH bdH bdH @@ -132193,17 +133090,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +cuC +cuC +pLv +rtd +fcP +cuC +cOK xVk xVk xVk @@ -132218,7 +133115,7 @@ dnJ eky eky eky -pCb +aNl eky eky eky @@ -132233,6 +133130,107 @@ xVk xVk xVk xVk +wZv +bYn +thV +uWV +uIv +bYn +bYn +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aaa +aaa +aaa +aab +aaa +aaa +aKQ +aaa +aaa +aab +aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bdH +aad +aag +aag +aag +wVb +qnP +uia +bhB +bhB +blm +bhB +bhB +bOi +xcp +kkO +gzr +kXK +bhB +bhB +bzX +bhB +bhB +ybr +vuR +vTK +aag +aag +aag +ajZ aaa aaa aaa @@ -132242,207 +133240,106 @@ bdH bdH bdH bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aab -aaa -aaa -aKQ -aaa -aaa -aab -aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bdH -aad -aag -aag -aag -wVb -qnP -uia -bhB -bhB -blm -bhB -bhB -bOi -xcp -kkO -gzr -kXK -bhB -bhB -bzX -bhB -bhB -ybr -vuR -vTK -aag -aag -aag -ajZ -aaa -aaa -aaa -aaa -aaa -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -bdH -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -"} -(266,1,1) = {" -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -xVk -xVk -xVk -xVk -xVk -xVk -xVk -etf -oMT -atM -aDO -atK -eky -eky -pCb -eky -eky -atM -aDO -atK -sjr -xjz -xVk -xVk -xVk -xVk -xVk -xVk -xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +aaa +aaa +aaa +aaa +aaa +aab +aaa +aaa +"} +(266,1,1) = {" +aaa +aaa +aab +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +bdH +bdH +aaa +aaa +uMc +iKc +iVY +cMN +trB +nVX +jcP +xVk +xVk +xVk +xVk +xVk +xVk +xVk +etf +ohH +atM +aDO +atK +eky +eky +aNl +eky +eky +atM +aDO +atK +sjr +xjz +xVk +xVk +xVk +xVk +xVk +xVk +xVk +dbq +xBn +vME +hSt +xoO +rjG +pql bdH bdH bdH @@ -132599,17 +133496,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +cIG +vqD +iEr +fcP +blJ +jcP xVk xVk xVk @@ -132622,11 +133519,11 @@ aPz avu arV aMU -gEz -wbR -rTB -wbR -aqC +ssX +vsh +iPD +vsh +fCp avu arV aMU @@ -132639,13 +133536,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +dbq +gIJ +thV +fCL +lne +wEI +pql bdH bdH bdH @@ -132802,17 +133699,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +dfg +rAP +vqK +lht +blJ +jcP xVk xVk xVk @@ -132825,11 +133722,11 @@ aPz aqJ aBu aqp -oCO +nkn lyw iZg lyw -oCO +nkn aqJ aBu aqp @@ -132842,13 +133739,13 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -bdH -bdH +dbq +gIJ +tjj +ofH +gms +ydh +pql bdH bdH bdH @@ -133005,17 +133902,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cuC +ptK +bSD +iEr +xKM +cuC +uiR xVk xVk xVk @@ -133045,15 +133942,15 @@ xVk xVk xVk xVk +kMK +bYn +gEv +fCL +lol +jWh +bYn aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH aaa aaa aaa @@ -133208,17 +134105,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cuC +ptK +new +iEr +paI +cuC +cOK xVk xVk xVk @@ -133248,15 +134145,15 @@ xVk xVk xVk xVk +wZv +bYn +vVw +fCL +tNP +jWh +bYn aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH aaa aaa aaa @@ -133411,17 +134308,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +jMG +uiG +iUW +trB +ozN +jcP xVk xVk xVk @@ -133430,7 +134327,7 @@ xVk xVk xVk etf -asb +gZP atM aDO atK @@ -133451,17 +134348,17 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dbq +diz +vME +hSt +xoO +adC +pql +bdH +bdH +bdH +bdH aaa aaa aaa @@ -133614,17 +134511,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +msP +ugJ +kNk +cXY +blJ +jcP xVk xVk xVk @@ -133654,16 +134551,16 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dbq +gIJ +thV +fCL +lne +wWq +pql +bdH +bdH +bdH aaa aaa aaa @@ -133817,17 +134714,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +uMc +spK +nlW +uZH +lht +blJ +jcP xVk xVk xVk @@ -133857,16 +134754,16 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +dbq +gIJ +tjj +jRC +gms +qeK +pql +bdH +bdH +bdH aaa aaa aaa @@ -134020,17 +134917,17 @@ aaa aaa aaa aaa +bdH +bdH aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cuC +cuC +jPq +xgm +aqK +cuC +uiR xVk xVk xVk @@ -134060,16 +134957,16 @@ xVk xVk xVk xVk -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +kMK +bYn +hTF +rTJ +tAq +bYn +bYn +bdH +bdH +bdH aaa aaa aaa @@ -134228,11 +135125,11 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +cuC +uMc +uMc +uMc +cuC aaa xVk xVk @@ -134264,15 +135161,15 @@ xVk xVk xVk aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bYn +pql +pql +pql +bYn +bdH +bdH +bdH +bdH aaa aaa aaa @@ -134434,7 +135331,7 @@ aaa aaa aaa aaa -aaa +bdH aaa aaa xVk @@ -134468,13 +135365,13 @@ xVk xVk aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -134671,12 +135568,12 @@ xVk xVk aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -134874,12 +135771,12 @@ xVk xVk aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -135077,12 +135974,12 @@ xVk xVk aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -135280,12 +136177,12 @@ xVk xVk aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -135483,12 +136380,12 @@ xVk xVk aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa diff --git a/maps/shuttles/lifeboat-port-archive.dmm b/maps/shuttles/lifeboat-port-archive.dmm new file mode 100644 index 000000000000..cba75c63cc02 --- /dev/null +++ b/maps/shuttles/lifeboat-port-archive.dmm @@ -0,0 +1,701 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aF" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"cs" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,4" + }, +/area/shuttle/lifeboat) +"cT" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,4" + }, +/area/shuttle/lifeboat) +"dg" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,0" + }, +/area/shuttle/lifeboat) +"dt" = ( +/turf/open/shuttle/lifeboat{ + dir = 1; + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) +"en" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,5" + }, +/area/shuttle/lifeboat) +"ew" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"eL" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,1" + }, +/area/shuttle/lifeboat) +"fa" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,6" + }, +/area/shuttle/lifeboat) +"fr" = ( +/turf/closed/shuttle/lifeboat/transparent, +/area/shuttle/lifeboat) +"hY" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"iR" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,1" + }, +/area/shuttle/lifeboat) +"je" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4; + name = "pilot seat" + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"jU" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"jW" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "window2" + }, +/area/shuttle/lifeboat) +"jX" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 8; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"lC" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,5" + }, +/area/shuttle/lifeboat) +"mr" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,3" + }, +/area/shuttle/lifeboat) +"mB" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,6" + }, +/area/shuttle/lifeboat) +"nf" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,1" + }, +/area/shuttle/lifeboat) +"nn" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plate" + }, +/area/shuttle/lifeboat) +"on" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,3" + }, +/area/shuttle/lifeboat) +"qA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "22,0" + }, +/area/shuttle/lifeboat) +"rb" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,3" + }, +/area/shuttle/lifeboat) +"rp" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,1" + }, +/area/shuttle/lifeboat) +"rv" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,3" + }, +/area/shuttle/lifeboat) +"rH" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,4" + }, +/area/shuttle/lifeboat) +"sX" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,0" + }, +/area/shuttle/lifeboat) +"tm" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 1 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"tI" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,0" + }, +/area/shuttle/lifeboat) +"vd" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 15; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"vx" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,3" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"vz" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,1" + }, +/area/shuttle/lifeboat) +"vZ" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,0" + }, +/area/shuttle/lifeboat) +"wX" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,2" + }, +/area/shuttle/lifeboat) +"xG" = ( +/obj/docking_port/mobile/lifeboat/port, +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"yf" = ( +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = -12; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"yE" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,1" + }, +/area/shuttle/lifeboat) +"yS" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,3" + }, +/area/shuttle/lifeboat) +"zd" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,2" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"zq" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"BC" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"Ct" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/shuttle/lifeboat{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Cz" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D1"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) +"CI" = ( +/turf/template_noop, +/area/template_noop) +"Db" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,5" + }, +/area/shuttle/lifeboat) +"DR" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"FR" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/communications{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"FZ" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med/lifeboat{ + pixel_x = -5; + pixel_y = 27 + }, +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = 10; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Gf" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"Hv" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,5" + }, +/area/shuttle/lifeboat) +"HI" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,5" + }, +/area/shuttle/lifeboat) +"Id" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,5" + }, +/area/shuttle/lifeboat) +"Ih" = ( +/turf/closed/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Jg" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor8" + }, +/area/shuttle/lifeboat) +"Jw" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,0" + }, +/area/shuttle/lifeboat) +"Mk" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,0" + }, +/area/shuttle/lifeboat) +"MF" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"MN" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D2"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) +"Nm" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) +"Ob" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,6" + }, +/area/shuttle/lifeboat) +"Od" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,4" + }, +/area/shuttle/lifeboat) +"Oe" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "12,0" + }, +/area/shuttle/lifeboat) +"Ow" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "16,0" + }, +/area/shuttle/lifeboat) +"OX" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,1" + }, +/area/shuttle/lifeboat) +"PU" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,5" + }, +/area/shuttle/lifeboat) +"Qi" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,6" + }, +/area/shuttle/lifeboat) +"QH" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Ro" = ( +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Rs" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,6" + }, +/area/shuttle/lifeboat) +"RR" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,2" + }, +/area/shuttle/lifeboat) +"Sn" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,5" + }, +/area/shuttle/lifeboat) +"So" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,4" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"Sy" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "11,0" + }, +/area/shuttle/lifeboat) +"SV" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"TO" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,2" + }, +/area/shuttle/lifeboat) +"TT" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,1" + }, +/area/shuttle/lifeboat) +"Ub" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,6" + }, +/area/shuttle/lifeboat) +"Uf" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer/vehicle{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"UG" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,2" + }, +/area/shuttle/lifeboat) +"UU" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,2" + }, +/area/shuttle/lifeboat) +"Ym" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "18,0" + }, +/area/shuttle/lifeboat) +"Yn" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,6" + }, +/area/shuttle/lifeboat) +"Ze" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,4" + }, +/area/shuttle/lifeboat) + +(1,1,1) = {" +jU +MF +So +vx +zd +SV +xG +"} +(2,1,1) = {" +aF +Db +cT +mr +TO +eL +ew +"} +(3,1,1) = {" +Yn +en +cs +rv +wX +nf +Ih +"} +(4,1,1) = {" +fa +PU +DR +DR +DR +OX +dg +"} +(5,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(6,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(7,1,1) = {" +Rs +Id +jX +nn +Ro +iR +vZ +"} +(8,1,1) = {" +mB +PU +yf +nn +Ro +OX +tI +"} +(9,1,1) = {" +Cz +dt +Ro +Jg +Ro +tm +fr +"} +(10,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(11,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(12,1,1) = {" +Rs +Id +Ro +nn +Ro +iR +Sy +"} +(13,1,1) = {" +mB +PU +Ro +nn +Ro +OX +Oe +"} +(14,1,1) = {" +MN +dt +Ro +Jg +Ro +tm +fr +"} +(15,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(16,1,1) = {" +Nm +dt +Ro +Jg +Ro +tm +fr +"} +(17,1,1) = {" +Rs +Id +vd +nn +Ro +iR +Ow +"} +(18,1,1) = {" +Ob +HI +FZ +nn +Ro +vz +Mk +"} +(19,1,1) = {" +mB +PU +Ro +nn +Ro +OX +Ym +"} +(20,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(21,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(22,1,1) = {" +jW +QH +Ro +Jg +Ro +tm +fr +"} +(23,1,1) = {" +Rs +Id +je +je +je +iR +qA +"} +(24,1,1) = {" +Qi +lC +Uf +Ct +FR +TT +sX +"} +(25,1,1) = {" +Ub +Hv +Od +on +UG +rp +Jw +"} +(26,1,1) = {" +BC +Sn +rH +rb +UU +yE +Gf +"} +(27,1,1) = {" +CI +zq +Ze +yS +RR +hY +CI +"} diff --git a/maps/shuttles/lifeboat-port.dmm b/maps/shuttles/lifeboat-port.dmm index cba75c63cc02..4d58661e8e82 100644 --- a/maps/shuttles/lifeboat-port.dmm +++ b/maps/shuttles/lifeboat-port.dmm @@ -116,6 +116,11 @@ icon_state = "24,3" }, /area/shuttle/lifeboat) +"pH" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) "qA" = ( /turf/closed/shuttle/lifeboat{ icon_state = "22,0" @@ -192,6 +197,13 @@ }, /turf/template_noop, /area/shuttle/lifeboat) +"xS" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D4"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) "yf" = ( /obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ pixel_x = -12; @@ -257,6 +269,13 @@ }, /turf/open/shuttle/lifeboat, /area/shuttle/lifeboat) +"EW" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat1-D3"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) "FR" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/communications{ @@ -534,8 +553,8 @@ dt Ro Jg Ro -tm -fr +pH +EW "} (10,1,1) = {" Nm @@ -543,8 +562,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (11,1,1) = {" Nm @@ -552,8 +571,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (12,1,1) = {" Rs @@ -579,8 +598,8 @@ dt Ro Jg Ro -tm -fr +pH +xS "} (15,1,1) = {" Nm @@ -588,8 +607,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (16,1,1) = {" Nm @@ -597,8 +616,8 @@ dt Ro Jg Ro -tm -fr +pH +Ro "} (17,1,1) = {" Rs diff --git a/maps/shuttles/lifeboat-starboard-archive.dmm b/maps/shuttles/lifeboat-starboard-archive.dmm new file mode 100644 index 000000000000..b1857064804c --- /dev/null +++ b/maps/shuttles/lifeboat-starboard-archive.dmm @@ -0,0 +1,691 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ce" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,5" + }, +/area/shuttle/lifeboat) +"ci" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,6" + }, +/area/shuttle/lifeboat) +"ej" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,4" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"em" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,6" + }, +/area/shuttle/lifeboat) +"ep" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,2" + }, +/area/shuttle/lifeboat) +"ex" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,2" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"gp" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,4" + }, +/area/shuttle/lifeboat) +"gS" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"hb" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/shuttle/lifeboat{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"ho" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,0" + }, +/area/shuttle/lifeboat) +"hD" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med/lifeboat{ + pixel_x = -5; + pixel_y = 27 + }, +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = 10; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"hQ" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,3" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"ix" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 8; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"iP" = ( +/turf/closed/shuttle/lifeboat/transparent, +/area/shuttle/lifeboat) +"jA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,0" + }, +/area/shuttle/lifeboat) +"kC" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,5" + }, +/area/shuttle/lifeboat) +"kE" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"lK" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "22,0" + }, +/area/shuttle/lifeboat) +"lS" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D2"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"mt" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,2" + }, +/area/shuttle/lifeboat) +"mA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,3" + }, +/area/shuttle/lifeboat) +"pr" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,4" + }, +/area/shuttle/lifeboat) +"qV" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"rM" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,6" + }, +/area/shuttle/lifeboat) +"su" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,5" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"sO" = ( +/turf/closed/shuttle/lifeboat, +/area/shuttle/lifeboat) +"tB" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,1" + }, +/area/shuttle/lifeboat) +"uJ" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"uN" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "26,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"vG" = ( +/obj/docking_port/mobile/lifeboat/starboard, +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"wA" = ( +/turf/template_noop, +/area/template_noop) +"xI" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,3" + }, +/area/shuttle/lifeboat) +"zv" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,6" + }, +/area/shuttle/lifeboat) +"zz" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,5" + }, +/area/shuttle/lifeboat) +"zK" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,1" + }, +/area/shuttle/lifeboat) +"Ax" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,2" + }, +/area/shuttle/lifeboat) +"AF" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) +"Bf" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "window2" + }, +/area/shuttle/lifeboat) +"BC" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,0" + }, +/area/shuttle/lifeboat) +"BP" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "18,0" + }, +/area/shuttle/lifeboat) +"Cq" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,5" + }, +/area/shuttle/lifeboat) +"CS" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "25,2" + }, +/area/shuttle/lifeboat) +"Dj" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,1" + }, +/area/shuttle/lifeboat) +"Dn" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,0" + }, +/area/shuttle/lifeboat) +"Ep" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D1"; + throw_dir = 2 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"EI" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/communications{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"EP" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "16,0" + }, +/area/shuttle/lifeboat) +"FI" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,3" + }, +/area/shuttle/lifeboat) +"FS" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "25,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"GA" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "7,6" + }, +/area/shuttle/lifeboat) +"GD" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,1" + }, +/area/shuttle/lifeboat) +"GQ" = ( +/obj/structure/machinery/cm_vending/sorted/supplies/lifeboat{ + pixel_x = -12; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"HW" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,1" + }, +/area/shuttle/lifeboat) +"Io" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "1,4" + }, +/area/shuttle/lifeboat) +"KZ" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,3" + }, +/area/shuttle/lifeboat) +"Lk" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/cameras/almayer/vehicle{ + dir = 8 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Mu" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,5" + }, +/area/shuttle/lifeboat) +"NE" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4; + name = "pilot seat" + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"NF" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,0" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"NK" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,4" + }, +/area/shuttle/lifeboat) +"NO" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 15; + pixel_y = 27 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Od" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,6" + }, +/area/shuttle/lifeboat) +"Ow" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "6,0" + }, +/area/shuttle/lifeboat) +"OO" = ( +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"PJ" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 1 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"Qa" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "12,0" + }, +/area/shuttle/lifeboat) +"Rk" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,5" + }, +/area/shuttle/lifeboat) +"RH" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "0,1" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"RR" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,6" + }, +/area/shuttle/lifeboat) +"Td" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "3,5" + }, +/area/shuttle/lifeboat) +"Tn" = ( +/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ + dir = 4 + }, +/turf/open/shuttle/lifeboat, +/area/shuttle/lifeboat) +"TM" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "24,4" + }, +/area/shuttle/lifeboat) +"TU" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "2,3" + }, +/area/shuttle/lifeboat) +"Up" = ( +/obj/structure/prop/invuln/dropship_parts/lifeboat{ + icon_state = "1,6" + }, +/turf/template_noop, +/area/shuttle/lifeboat) +"UG" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "23,5" + }, +/area/shuttle/lifeboat) +"Vj" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "25,1" + }, +/area/shuttle/lifeboat) +"VF" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "17,1" + }, +/area/shuttle/lifeboat) +"VZ" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor8" + }, +/area/shuttle/lifeboat) +"Xj" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,1" + }, +/area/shuttle/lifeboat) +"XV" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "plate" + }, +/area/shuttle/lifeboat) +"Zl" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "24,0" + }, +/area/shuttle/lifeboat) +"ZP" = ( +/turf/closed/shuttle/lifeboat/transparent{ + icon_state = "26,2" + }, +/area/shuttle/lifeboat) +"ZR" = ( +/turf/closed/shuttle/lifeboat{ + icon_state = "11,0" + }, +/area/shuttle/lifeboat) + +(1,1,1) = {" +qV +su +ej +hQ +ex +RH +vG +"} +(2,1,1) = {" +Up +zz +Io +mA +ep +Dj +NF +"} +(3,1,1) = {" +zv +Cq +NK +TU +Ax +HW +sO +"} +(4,1,1) = {" +Od +Td +Tn +Tn +Tn +GD +Dn +"} +(5,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(6,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(7,1,1) = {" +em +kC +ix +XV +OO +zK +Ow +"} +(8,1,1) = {" +GA +Td +GQ +XV +OO +GD +ho +"} +(9,1,1) = {" +Bf +kE +OO +VZ +OO +AF +Ep +"} +(10,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(11,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(12,1,1) = {" +em +kC +OO +XV +OO +zK +ZR +"} +(13,1,1) = {" +GA +Td +OO +XV +OO +GD +Qa +"} +(14,1,1) = {" +Bf +kE +OO +VZ +OO +AF +lS +"} +(15,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(16,1,1) = {" +Bf +kE +OO +VZ +OO +AF +OO +"} +(17,1,1) = {" +em +kC +NO +XV +OO +zK +EP +"} +(18,1,1) = {" +ci +ce +hD +XV +OO +VF +jA +"} +(19,1,1) = {" +GA +Td +OO +XV +OO +GD +BP +"} +(20,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(21,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(22,1,1) = {" +Bf +kE +OO +VZ +OO +PJ +iP +"} +(23,1,1) = {" +em +kC +NE +NE +NE +zK +lK +"} +(24,1,1) = {" +RR +UG +Lk +hb +EI +tB +BC +"} +(25,1,1) = {" +rM +Mu +TM +FI +mt +Xj +Zl +"} +(26,1,1) = {" +uJ +Rk +gp +xI +CS +Vj +FS +"} +(27,1,1) = {" +wA +gS +pr +KZ +ZP +uN +wA +"} diff --git a/maps/shuttles/lifeboat-starboard.dmm b/maps/shuttles/lifeboat-starboard.dmm index b1857064804c..05b128e0e2cb 100644 --- a/maps/shuttles/lifeboat-starboard.dmm +++ b/maps/shuttles/lifeboat-starboard.dmm @@ -102,7 +102,7 @@ /area/shuttle/lifeboat) "lS" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ - id = "Boat2-D2"; + id = "Boat2-D4"; throw_dir = 2 }, /turf/open/shuttle/lifeboat, @@ -159,6 +159,15 @@ }, /turf/template_noop, /area/shuttle/lifeboat) +"uX" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D2"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) "vG" = ( /obj/docking_port/mobile/lifeboat/starboard, /obj/structure/prop/invuln/dropship_parts/lifeboat{ @@ -174,6 +183,15 @@ icon_state = "25,3" }, /area/shuttle/lifeboat) +"ya" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ + id = "Boat2-D1"; + throw_dir = 1 + }, +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) "zv" = ( /turf/closed/shuttle/lifeboat{ icon_state = "2,6" @@ -236,7 +254,7 @@ /area/shuttle/lifeboat) "Ep" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat{ - id = "Boat2-D1"; + id = "Boat2-D3"; throw_dir = 2 }, /turf/open/shuttle/lifeboat, @@ -357,6 +375,11 @@ icon_state = "12,0" }, /area/shuttle/lifeboat) +"Qj" = ( +/turf/open/shuttle/lifeboat{ + icon_state = "test_floor4" + }, +/area/shuttle/lifeboat) "Rk" = ( /turf/closed/shuttle/lifeboat{ icon_state = "25,5" @@ -373,6 +396,12 @@ icon_state = "23,6" }, /area/shuttle/lifeboat) +"SA" = ( +/turf/open/shuttle/lifeboat{ + dir = 1; + icon_state = "plating_striped" + }, +/area/shuttle/lifeboat) "Td" = ( /turf/closed/shuttle/lifeboat{ icon_state = "3,5" @@ -519,8 +548,8 @@ GD ho "} (9,1,1) = {" -Bf -kE +ya +SA OO VZ OO @@ -528,8 +557,8 @@ AF Ep "} (10,1,1) = {" -Bf -kE +Qj +SA OO VZ OO @@ -537,8 +566,8 @@ AF OO "} (11,1,1) = {" -Bf -kE +Qj +SA OO VZ OO @@ -564,8 +593,8 @@ GD Qa "} (14,1,1) = {" -Bf -kE +uX +SA OO VZ OO @@ -573,8 +602,8 @@ AF lS "} (15,1,1) = {" -Bf -kE +Qj +SA OO VZ OO @@ -582,8 +611,8 @@ AF OO "} (16,1,1) = {" -Bf -kE +Qj +SA OO VZ OO diff --git a/tgui/packages/tgui/interfaces/AresInterface.js b/tgui/packages/tgui/interfaces/AresInterface.js index 951104cbb314..9f7b8d22ff3e 100644 --- a/tgui/packages/tgui/interfaces/AresInterface.js +++ b/tgui/packages/tgui/interfaces/AresInterface.js @@ -1390,15 +1390,21 @@ const Emergency = (props, context) => { worldtime, distresstimelock, distresstime, + quarterstime, evac_status, mission_failed, nuketimelock, nuke_available, } = data; - const canQuarters = alert_level < 2; - let quarters_reason = 'Call for General Quarters.'; const minimumEvacTime = worldtime > distresstimelock; const distressCooldown = worldtime < distresstime; + const quartersCooldown = worldtime < quarterstime; + const canQuarters = !quartersCooldown; + let quarters_reason = 'Call for General Quarters.'; + if (quartersCooldown) { + quarters_reason = + 'It has not been long enough since the last General Quarters call.'; + } const canDistress = alert_level === 2 && !distressCooldown && minimumEvacTime; let distress_reason = 'Launch a Distress Beacon.'; if (alert_level === 3) { diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.js b/tgui/packages/tgui/interfaces/OverwatchConsole.js new file mode 100644 index 000000000000..7beceef9e72d --- /dev/null +++ b/tgui/packages/tgui/interfaces/OverwatchConsole.js @@ -0,0 +1,756 @@ +import { useBackend, useLocalState, useSharedState } from '../backend'; +import { Button, Section, Stack, Tabs, Table, Box, Input, NumberInput, LabeledControls, Divider, Collapsible } from '../components'; +import { Window } from '../layouts'; + +export const OverwatchConsole = (props, context) => { + const { act, data } = useBackend(context); + + return ( + + + {(!data.current_squad && ) || } + + + ); +}; + +const HomePanel = (props, context) => { + const { act, data } = useBackend(context); + + // Buttons don't seem to support hexcode colors, so we'll have to do this manually, sadly + const squadColorMap = { + 'alpha': 'red', + 'bravo': 'yellow', + 'charlie': 'purple', + 'delta': 'blue', + 'echo': 'green', + 'foxtrot': 'brown', + }; + + return ( +
+ + {data.squad_list.map((squad, index) => { + return ( + + + + ); + })} + +
+ ); +}; + +const SquadPanel = (props, context) => { + const { act, data } = useBackend(context); + + const [category, setCategory] = useLocalState(context, 'selected', 'monitor'); + let hello = 2; + + return ( + <> + + + + + + + + + + setCategory('monitor')}> + Squad Monitor + + {!!data.can_launch_crates && ( + setCategory('supply')}> + Supply Drop + + )} + setCategory('ob')}> + Orbital Bombardment + + act('tacmap_unpin')}> + Tactical Map + + + {category === 'monitor' && } + {category === 'supply' && data.can_launch_crates && } + {category === 'ob' && } + + ); +}; + +const MainDashboard = (props, context) => { + const { act, data } = useBackend(context); + + let { current_squad, primary_objective, secondary_objective } = data; + + return ( +
+ + + + }> + + + PRIMARY ORDERS + SECONDARY ORDERS + + + + {primary_objective ? primary_objective : 'NONE'} + + + {secondary_objective ? secondary_objective : 'NONE'} + + +
+ + + {primary_objective && ( + + )} + + {secondary_objective && ( + + )} + + + + + + +
+ ); +}; + +const RoleTable = (props, context) => { + const { act, data } = useBackend(context); + + const { + squad_leader, + leaders_alive, + ftl_alive, + ftl_count, + specialist_type, + spec_alive, + smart_alive, + smart_count, + spec_count, + medic_count, + medic_alive, + engi_alive, + engi_count, + living_count, + total_deployed, + } = data; + + return ( + + + + Squad Leader + + + Fire Team Leaders + + + Specialist + + + Smartgunner + + + Hospital Corpsmen + + + Combat Technicians + + + Total/Living + + + + {(squad_leader && ( + + {squad_leader.name ? squad_leader.name : 'NONE'} + + {squad_leader.state !== 'Dead' ? 'ALIVE' : 'DEAD'} + + + )) || ( + + NONE + NOT DEPLOYED + + )} + + + {ftl_count} DEPLOYED + {ftl_alive} ALIVE + + + {specialist_type ? specialist_type : 'NONE'} + + {spec_count ? (spec_alive ? 'ALIVE' : 'DEAD') : 'NOT DEPLOYED'} + + + + + {smart_count ? smart_count + ' DEPLOYED' : 'NONE'} + + + {smart_count ? (smart_alive ? 'ALIVE' : 'DEAD') : 'N/A'} + + + + {medic_count} DEPLOYED + {medic_alive} ALIVE + + + {engi_count} DEPLOYED + {engi_alive} ALIVE + + + {total_deployed} TOTAL + {living_count} ALIVE + + +
+ ); +}; + +const SquadMonitor = (props, context) => { + const { act, data } = useBackend(context); + + const sortByRole = (a, b) => { + a = a.role; + b = b.role; + const roleValues = { + 'Squad Leader': 10, + 'Fireteam Leader': 9, + 'Weapons Specialist': 8, + 'Smartgunner': 7, + 'Hospital Corpsman': 6, + 'Combat Technician': 5, + 'Rifleman': 4, + }; + let valueA = roleValues[a]; + let valueB = roleValues[b]; + if (a.includes('Weapons Specialist')) { + valueA = roleValues['Weapons Specialist']; + } + if (b.includes('Weapons Specialist')) { + valueB = roleValues['Weapons Specialist']; + } + if (!valueA && !valueB) return 0; // They're both unknown + if (!valueA) return 1; // B is defined but A is not + if (!valueB) return -1; // A is defined but B is not + + if (valueA > valueB) return -1; // A is more important + if (valueA < valueB) return 1; // B is more important + + return 0; // They're equal + }; + + let { marines, squad_leader } = data; + + const [hidden_marines, setHiddenMarines] = useLocalState( + context, + 'hidden_marines', + [] + ); + + const [showHiddenMarines, setShowHiddenMarines] = useLocalState( + context, + 'showhidden', + false + ); + const [showDeadMarines, setShowDeadMarines] = useLocalState( + context, + 'showdead', + false + ); + + const [marineSearch, setMarineSearch] = useLocalState( + context, + 'marinesearch', + null + ); + + let determine_status_color = (status) => { + let conscious = status.includes('Conscious'); + let unconscious = status.includes('Unconscious'); + + let state_color = 'red'; + if (conscious) { + state_color = 'green'; + } else if (unconscious) { + state_color = 'yellow'; + } + return state_color; + }; + + let toggle_marine_hidden = (ref) => { + if (!hidden_marines.includes(ref)) { + setHiddenMarines([...hidden_marines, ref]); + } else { + let array_copy = [...hidden_marines]; + let index = array_copy.indexOf(ref); + if (index > -1) { + array_copy.splice(index, 1); + } + setHiddenMarines(array_copy); + } + }; + + let location_filter; + if (data.z_hidden === 2) { + location_filter = 'groundside'; + } else if (data.z_hidden === 1) { + location_filter = 'shipside'; + } else { + location_filter = 'all'; + } + + return ( +
+ + {(showDeadMarines && ( + + )) || ( + + )} + {(showHiddenMarines && ( + + )) || ( + + )} + + + + }> + setMarineSearch(value)} + /> + + + Name + Role + + State + + Location + + SL Dist. + + + + {squad_leader && ( + + + {(squad_leader.has_helmet && ( + + )) || {squad_leader.name} (NO HELMET)} + + {squad_leader.role} + + {squad_leader.state} + + {squad_leader.area_name} + + {squad_leader.distance} + + + + )} + {marines && + marines + .sort(sortByRole) + .filter((marine) => { + if (marineSearch) { + const searchableString = String(marine.name).toLowerCase(); + return searchableString.match(new RegExp(marineSearch, 'i')); + } + return marine; + }) + .map((marine, index) => { + if (squad_leader) { + if (marine.ref === squad_leader.ref) { + return; + } + } + if (hidden_marines.includes(marine.ref) && !showHiddenMarines) { + return; + } + if (marine.state === 'Dead' && !showDeadMarines) { + return; + } + + return ( + + + {(marine.has_helmet && ( + + )) || {marine.name} (NO HELMET)} + + {marine.role} + + {marine.state} + + {marine.area_name} + + {marine.distance} + + + {(hidden_marines.includes(marine.ref) && ( +
+
+ ); +}; + +const SupplyDrop = (props, context) => { + const { act, data } = useBackend(context); + + const [supplyX, setSupplyX] = useSharedState(context, 'supplyx', 0); + const [supplyY, setSupplyY] = useSharedState(context, 'supply', 0); + + let crate_status = 'Crate Loaded'; + let crate_color = 'green'; + if (data.supply_cooldown) { + crate_status = 'Cooldown - ' + data.supply_cooldown / 10 + ' seconds'; + crate_color = 'yellow'; + } else if (!data.has_crate_loaded) { + crate_status = 'No crate loaded'; + crate_color = 'red'; + } + + return ( +
+ + + + + setSupplyX(value)} + width="75px" + /> + + + setSupplyY(value)} + width="75px" + /> + + + + {crate_status} + + + + + + + + + + + + + +
+ ); +}; + +const OrbitalBombardment = (props, context) => { + const { act, data } = useBackend(context); + + const [OBX, setOBX] = useSharedState(context, 'obx', 0); + const [OBY, setOBY] = useSharedState(context, 'oby', 0); + + let ob_status = 'Ready'; + let ob_color = 'green'; + if (data.ob_cooldown) { + ob_status = 'Cooldown - ' + data.ob_cooldown / 10 + ' seconds'; + ob_color = 'yellow'; + } else if (!data.ob_loaded) { + ob_status = 'Not chambered'; + ob_color = 'red'; + } + + return ( +
+ + + + + setOBX(value)} + width="75px" + /> + + + setOBY(value)} + width="75px" + /> + + + + + {ob_status} + + + + + + + + + + + + + +
+ ); +}; + +const SavedCoordinates = (props, context) => { + const { act, data } = useBackend(context); + + const [OBX, setOBX] = useSharedState(context, 'obx', 0); + const [OBY, setOBY] = useSharedState(context, 'oby', 0); + const [supplyX, setSupplyX] = useSharedState(context, 'supplyx', 0); + const [supplyY, setSupplyY] = useSharedState(context, 'supply', 0); + + const { forOB, forSupply } = props; + + let transferCoords = (x, y) => { + if (forSupply) { + setSupplyX(x); + setSupplyY(y); + } else if (forOB) { + setOBX(x); + setOBY(y); + } + }; + + console.log(props); + + return ( + + + Max 3 stored coordinates. Will overwrite oldest first. + + + + + LONG. + + + LAT. + + COMMENT + + + {data.saved_coordinates.map((coords, index) => ( + + {coords.x} + {coords.y} + + + act('change_coordinate_comment', { + comment: value, + index: coords.index, + }) + } + /> + + +
+
+ ); +};