diff --git a/.vscode/settings.json b/.vscode/settings.json index 201562aaf7c7..c7b218b77591 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,7 @@ "**/.pnp.*": true }, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "files.eol": "\n", "files.insertFinalNewline": true, diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm index 765603df629c..7cb7440ba8da 100644 --- a/code/__DEFINES/__game.dm +++ b/code/__DEFINES/__game.dm @@ -124,6 +124,7 @@ block( \ #define CHAT_FFATTACKLOGS (1<<11) #define CHAT_GHOSTHIVEMIND (1<<12) #define CHAT_NICHELOGS (1<<13) +#define CHAT_LISTENINGBUG (1<<14) //toggles_ghost #define GHOST_HEALTH_SCAN (1<<0) @@ -391,6 +392,7 @@ block( \ #define FIRE_MISSION_WEAPON_REMOVED 8 #define FIRE_MISSION_WEAPON_UNUSABLE 16 #define FIRE_MISSION_WEAPON_OUT_OF_AMMO 32 +#define FIRE_MISSION_BAD_DIRECTION 64 #define FIRE_MISSION_NOT_EXECUTABLE -1 //Defines for firemission state diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index 97e4b0dbd1e8..be96a2e32b85 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -152,6 +152,8 @@ most of them are tied into map-placed objects. This should be reworked in the fu /// Ancients only #define ACCESS_YAUTJA_ANCIENT 392 +/// Anything in a tutorial sequence that shouldn't be accessed +#define ACCESS_TUTORIAL_LOCKED 998 ///Temporary, just so I can flag places I need to change #define ACCESS_COME_BACK_TO_ME 999 diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm index 6614272d33e5..2e247cdccc73 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_human.dm @@ -67,3 +67,6 @@ #define COMSIG_HUMAN_SURGERY_APPLY_MODIFIERS "human_surgery_apply_modifiers" /// From /mob/living/carbon/human/proc/get_flags_cold_protection() #define COMSIG_HUMAN_COLD_PROTECTION_APPLY_MODIFIERS "human_cold_protection_apply_modifiers" + +/// From /obj/item/proc/dig_out_shrapnel() : () +#define COMSIG_HUMAN_SHRAPNEL_REMOVED "human_shrapnel_removed" diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm index 89f3951e7c99..cea905dd1011 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm @@ -29,7 +29,19 @@ #define COMSIG_LIVING_PRE_COLLIDE "living_pre_collide" #define COMPONENT_LIVING_COLLIDE_HANDLED (1<<0) +/// From /mob/living/proc/do_ghost() : (mob/dead/observer/ghost) +#define COMSIG_LIVING_GHOSTED "living_ghosted" + +/// From /mob/living/carbon/human/attack_hand() : (mob/living/carbon/human/attacked_mob) +#define COMSIG_LIVING_ATTACKHAND_HUMAN "living_attackhand_human" + +/// From /obj/item/reagent_container/hypospray/attack() : (obj/item/reagent_container/hypospray/injector) +#define COMSIG_LIVING_HYPOSPRAY_INJECTED "living_hypospray_injected" + ///from base of mob/living/set_buckled(): (new_buckled) #define COMSIG_LIVING_SET_BUCKLED "living_set_buckled" ///from base of mob/living/set_body_position() #define COMSIG_LIVING_SET_BODY_POSITION "living_set_body_position" + +/// from base of /mob/living/apply_status_effect(): (datum/status_effect/new_effect) +#define COMSIG_LIVING_APPLY_EFFECT "living_apply_effect" diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm index bfb62c2bcf6e..58021ba564a2 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm @@ -77,6 +77,9 @@ ///from base of /mob/Logout(): () #define COMSIG_MOB_LOGOUT "mob_logout" +/// From /mob/proc/change_real_name(): (old_name, new_name) +#define COMSIG_MOB_REAL_NAME_CHANGED "mob_real_name_changed" + //from /mob/proc/on_deafness_gain() #define COMSIG_MOB_DEAFENED "mob_deafened" //from /mob/proc/on_deafness_loss() @@ -128,5 +131,42 @@ /// From /obj/item/proc/pickup() : (obj/item/picked_up) #define COMSIG_MOB_PICKUP_ITEM "mob_pickup_item" +/// From /obj/item/proc/attack_self() : (obj/item/used) +#define COMSIG_MOB_ITEM_ATTACK_SELF "mob_item_attack_self" + +/// From /obj/item/proc/dropped() : (obj/item/dropped) +#define COMSIG_MOB_ITEM_DROPPED "mob_item_dropped" + + +/// From /obj/item/reagent_container/food/snacks/proc/on_Consume() : (obj/item/reagent_container/food/snacks/eaten_food) +#define COMSIG_MOB_EATEN_SNACK "mob_eaten_snack" + +/// From /atom/proc/attackby() : (atom/attacked, obj/item/attacked_with) +#define COMSIG_MOB_PARENT_ATTACKBY "mob_parent_attackby" + +/// From /obj/item/weapon/gun/proc/reload_into_chamber() : (obj/item/weapon/gun/empty_gun) +#define COMSIG_MOB_GUN_EMPTY "mob_gun_empty" + +/// From /obj/item/weapon/gun/proc/reload() : (obj/item/weapon/gun/reloaded) +#define COMSIG_MOB_RELOADED_GUN "mob_reloaded_gun" + +/// From /mob/proc/get_status_tab_items() : (list/status_list) +#define COMSIG_MOB_GET_STATUS_TAB_ITEMS "mob_get_status_tab_items" + +/// From /datum/tutorial/proc/update_objective() : (new_objective) +#define COMSIG_MOB_TUTORIAL_UPDATE_OBJECTIVE "mob_tutorial_update_objective" + +/// From /mob/proc/swap_hand() : () +#define COMSIG_MOB_SWAPPED_HAND "mob_swapped_hand" + +/// From /mob/proc/a_intent_change() : (new_intent) +#define COMSIG_MOB_INTENT_CHANGE "mob_intent_change" + +/// From /obj/item/grab/proc/progress_passive() : (mob/living/carbon/human/grabber) +#define COMSIG_MOB_AGGRESSIVELY_GRABBED "mob_aggressively_grabbed" + #define COMSIG_MOB_AGGRESIVE_GRAB_CANCEL (1<<0) + /// Cancels all running cloaking effects on target #define COMSIG_MOB_EFFECT_CLOAK_CANCEL "mob_effect_cloak_cancel" + +#define COMSIG_MOB_END_TUTORIAL "mob_end_tutorial" diff --git a/code/__DEFINES/dcs/signals/atom/signals_item.dm b/code/__DEFINES/dcs/signals/atom/signals_item.dm index 6024c0524992..7b3b218e658a 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_item.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_item.dm @@ -68,3 +68,12 @@ //from /datum/authority/branch/role/proc/equip_role() #define COMSIG_POST_SPAWN_UPDATE "post_spawn_update" + +#define COMSIG_CAMERA_MAPNAME_ASSIGNED "camera_manager_mapname_assigned" +#define COMSIG_CAMERA_REGISTER_UI "camera_manager_register_ui" +#define COMSIG_CAMERA_UNREGISTER_UI "camera_manager_unregister_ui" +#define COMSIG_CAMERA_SET_NVG "camera_manager_set_nvg" +#define COMSIG_CAMERA_CLEAR_NVG "camera_manager_clear_nvg" +#define COMSIG_CAMERA_SET_TARGET "camera_manager_set_target" +#define COMSIG_CAMERA_SET_AREA "camera_manager_set_area" +#define COMSIG_CAMERA_CLEAR "camera_manager_clear_target" diff --git a/code/__DEFINES/dcs/signals/atom/signals_obj.dm b/code/__DEFINES/dcs/signals/atom/signals_obj.dm index 93579e068ec7..c870a55ed746 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_obj.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_obj.dm @@ -30,4 +30,16 @@ /// from /obj/proc/afterbuckle() #define COSMIG_OBJ_AFTER_BUCKLE "signal_obj_after_buckle" +/// from /obj/structure/machinery/cryopod/go_out() +#define COMSIG_CRYOPOD_GO_OUT "cryopod_go_out" + +/// from /proc/vendor_successful_vend() : (obj/structure/machinery/cm_vending/vendor, list/itemspec, mob/living/carbon/human/user) +#define COMSIG_VENDOR_SUCCESSFUL_VEND "vendor_successful_vend" + +/// from /obj/limb/proc/remove_all_bleeding() : (external, internal) +#define COMSIG_LIMB_STOP_BLEEDING "limb_stop_bleeding" + +#define COMSIG_DROPSHIP_ADD_EQUIPMENT "dropship_add_equipment" +#define COMSIG_DROPSHIP_REMOVE_EQUIPMENT "dropship_remove_equipment" + #define COMSIG_STRUCTURE_CRATE_SQUAD_LAUNCHED "structure_crate_squad_launched" diff --git a/code/__DEFINES/dcs/signals/signals_client.dm b/code/__DEFINES/dcs/signals/signals_client.dm index 6733e0703514..3968f654c486 100644 --- a/code/__DEFINES/dcs/signals/signals_client.dm +++ b/code/__DEFINES/dcs/signals/signals_client.dm @@ -27,6 +27,3 @@ /// Called when something is removed from a client's screen : /client/proc/remove_from_screen(screen_remove) #define COMSIG_CLIENT_SCREEN_REMOVE "client_screen_remove" - -/// When a mind is transfered to another mob at /datum/mind/proc/transfer_to() -#define COMSIG_CLIENT_MIND_TRANSFER "mind_transfer" diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index 31e4c34e3016..5569ded71586 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -70,3 +70,4 @@ #define COMSIG_GLOB_GENERATOR_SET_OVERLOADING "!generator_set_overloading" #define COMSIG_GLOB_HIJACK_IMPACTED "!hijack_impacted" +#define COMSIG_GLOB_HIJACK_LANDED "!hijack_landed" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index c0ccd5164b0b..5628395d7ffb 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -230,6 +230,7 @@ ///--------------- FULLSCREEN RUNECHAT BUBBLES ------------ #define LIGHTING_PLANE 100 #define EXTERIOR_LIGHTING_PLANE 101 +#define NVG_PLANE 110 ///Popup Chat Messages #define RUNECHAT_PLANE 501 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index b024f22ebfff..8a8e9678fbdf 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -124,7 +124,6 @@ #define MATERIAL_METAL "metal" #define MATERIAL_PLASTEEL "plasteel" #define MATERIAL_WOOD "wood plank" -#define MATERIAL_CRYSTAL "plasmagas" // SIZES FOR ITEMS, use it for w_class diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm new file mode 100644 index 000000000000..7f9f33ea483c --- /dev/null +++ b/code/__DEFINES/mob.dm @@ -0,0 +1 @@ +#define DEFAULT_MOB_STATUS_FLAGS CANKNOCKDOWN|CANPUSH|STATUS_FLAGS_DEBILITATE diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index 94428ba7d9b3..0f04006859e9 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -241,8 +241,16 @@ GLOBAL_LIST_INIT(whitelist_hierarchy, list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define FACTION_LIST_MARINE list(FACTION_MARINE) #define FACTION_LIST_HUMANOID list(FACTION_MARINE, FACTION_PMC, FACTION_WY, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_MARSHAL, FACTION_UPP, FACTION_FREELANCER, FACTION_SURVIVOR, FACTION_NEUTRAL, FACTION_COLONIST, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_YAUTJA, FACTION_ZOMBIE, FACTION_TWE) -#define FACTION_LIST_ERT list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_MARSHAL, FACTION_TWE) +#define FACTION_LIST_ERT list(FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO) #define FACTION_LIST_WY list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) +#define FACTION_LIST_UPP list(FACTION_UPP) +#define FACTION_LIST_CLF list(FACTION_CLF) +#define FACTION_LIST_TWE list(FACTION_TWE) +#define FACTION_LIST_FREELANCER list(FACTION_FREELANCER) +#define FACTION_LIST_CONTRACTOR list(FACTION_CONTRACTOR) +#define FACTION_LIST_MERCENARY list(FACTION_MERCENARY) +#define FACTION_LIST_MARSHAL list(FACTION_MARSHAL) +#define FACTION_LIST_DUTCH list(FACTION_DUTCH) #define FACTION_LIST_MARINE_WY list(FACTION_MARINE, FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) #define FACTION_LIST_MARINE_UPP list(FACTION_MARINE, FACTION_UPP) #define FACTION_LIST_MARINE_TWE list(FACTION_MARINE, FACTION_TWE) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index d37c9185fa6d..8c93957c3ca0 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -221,6 +221,8 @@ #define TRAIT_HARDCORE "t_hardcore" /// If the mob is able to use the vulture rifle or spotting scope #define TRAIT_VULTURE_USER "t_vulture_user" +/// If the mob is currently loading a tutorial +#define TRAIT_IN_TUTORIAL "t_IN_TUTORIAL" /// If the mob is cloaked in any form #define TRAIT_CLOAKED "t_cloaked" @@ -297,6 +299,7 @@ GLOBAL_LIST_INIT(mob_traits, list( TRAIT_REAGENT_SCANNER, TRAIT_ABILITY_BURROWED, TRAIT_VULTURE_USER, + TRAIT_IN_TUTORIAL, )) /* @@ -403,6 +406,8 @@ GLOBAL_LIST(trait_name_map) #define TRAIT_SOURCE_JOB "t_s_job" ///Status trait forced by staff #define TRAIT_SOURCE_ADMIN "t_s_admin" +/// Status trait coming from a tutorial +#define TRAIT_SOURCE_TUTORIAL "t_s_tutorials" ///Status trait coming from equipment #define TRAIT_SOURCE_EQUIPMENT(slot) "t_s_equipment_[slot]" ///Status trait coming from skill diff --git a/code/__DEFINES/tutorial.dm b/code/__DEFINES/tutorial.dm new file mode 100644 index 000000000000..75dc7f6da21f --- /dev/null +++ b/code/__DEFINES/tutorial.dm @@ -0,0 +1,6 @@ +#define TUTORIAL_ATOM_FROM_TRACKING(path, varname) var##path/##varname = tracking_atoms[##path] + +#define TUTORIAL_CATEGORY_BASE "Base" // Shouldn't be used outside of base types +#define TUTORIAL_CATEGORY_SS13 "Space Station 13" +#define TUTORIAL_CATEGORY_MARINE "Marine" +#define TUTORIAL_CATEGORY_XENO "Xenomorph" diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm index 630c9740dc80..590ee9b97d41 100644 --- a/code/__DEFINES/xeno.dm +++ b/code/__DEFINES/xeno.dm @@ -250,11 +250,6 @@ #define XENO_PLASMA_TIER_8 800 * XENO_UNIVERSAL_PLASMAMULT #define XENO_PLASMA_TIER_10 1000 * XENO_UNIVERSAL_PLASMAMULT -// Resource stockpile bands -#define XENO_CRYSTAL_LOW 50 -#define XENO_CRYSTAL_MEDIUM 100 -#define XENO_CRYSTAL_HIGH 150 - // Plasma gain bands #define XENO_PLASMA_GAIN_TIER_1 1 #define XENO_PLASMA_GAIN_TIER_2 1.5 diff --git a/code/__HELPERS/#maths.dm b/code/__HELPERS/#maths.dm index ccd077003e62..6ea534a79923 100644 --- a/code/__HELPERS/#maths.dm +++ b/code/__HELPERS/#maths.dm @@ -8,12 +8,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, // MATH DEFINES -#define Atan2(x, y) (!x && !y ? 0 : \ - (y >= 0 ? \ - arccos(x / sqrt(x*x + y*y)) : \ - -(arccos(x / sqrt(x*x + y*y))) \ - ) \ - ) #define Ceiling(x) (-round(-x)) #define Clamp(val, min_val, max_val) (max(min_val, min(val, max_val))) #define CLAMP01(x) (clamp(x, 0, 1)) @@ -78,7 +72,7 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, // Convert to polar coordinates var/radius = sqrt(relative_coords[1]**2 + relative_coords[2]**2) - var/phi = Atan2(relative_coords[1], relative_coords[2]) + var/phi = arctan(relative_coords[1], relative_coords[2]) // Rotate the point around the axis phi += degrees @@ -106,42 +100,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, return "[round((powerused * 0.000001),0.001)] MW" return "[round((powerused * 0.000000001),0.0001)] GW" -///Calculate the angle between two movables and the west|east coordinate -/proc/get_angle(atom/movable/start, atom/movable/end)//For beams. - if(!start || !end) - return 0 - var/dy =(32 * end.y + end.pixel_y) - (32 * start.y + start.pixel_y) - var/dx =(32 * end.x + end.pixel_x) - (32 * start.x + start.pixel_x) - if(!dy) - return (dx >= 0) ? 90 : 270 - . = arctan(dx/dy) - if(dy < 0) - . += 180 - else if(dx < 0) - . += 360 - -/// Angle between two arbitrary points and horizontal line same as [/proc/get_angle] -/proc/get_angle_raw(start_x, start_y, start_pixel_x, start_pixel_y, end_x, end_y, end_pixel_x, end_pixel_y) - var/dy = (32 * end_y + end_pixel_y) - (32 * start_y + start_pixel_y) - var/dx = (32 * end_x + end_pixel_x) - (32 * start_x + start_pixel_x) - if(!dy) - return (dx >= 0) ? 90 : 270 - . = arctan(dx/dy) - if(dy < 0) - . += 180 - else if(dx < 0) - . += 360 - -///for getting the angle when animating something's pixel_x and pixel_y -/proc/get_pixel_angle(y, x) - if(!y) - return (x >= 0) ? 90 : 270 - . = arctan(x/y) - if(y < 0) - . += 180 - else if(x < 0) - . += 360 - /** * Get a list of turfs in a line from `starting_atom` to `ending_atom`. * diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index 01a972485fa2..8b3d1b0a3809 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -1,4 +1,3 @@ - #define is_admin_level(z) SSmapping.level_trait(z, ZTRAIT_ADMIN) #define is_ground_level(z) SSmapping.level_trait(z, ZTRAIT_GROUND) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 55b234b1e419..663d72fd5079 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -73,6 +73,7 @@ /mob/proc/change_real_name(mob/M, new_name) if(!new_name) return FALSE + var/old_name = M.real_name M.real_name = new_name M.name = new_name @@ -83,6 +84,7 @@ // If we are humans, we need to update our voice as well M.change_mob_voice(new_name) + SEND_SIGNAL(src, COMSIG_MOB_REAL_NAME_CHANGED, old_name, new_name) return TRUE /mob/proc/change_mind_name(new_mind_name) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 0782826a4dc9..9faa74354494 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -99,38 +99,29 @@ var/atom/movable/big_subject = subject . += (big_subject.bound_height - world.icon_size) / 2 -/proc/Get_Angle(atom/start,atom/end, tile_bound = FALSE)//For beams. - if(!start || !end) return 0 - if(!start.z || !end.z) return 0 //Atoms are not on turfs. - var/dx - var/dy - if(tile_bound) - dy=end.y-start.y - dx=end.x-start.x - else - dy = get_pixel_position_y(end) - get_pixel_position_y(start) - dx = get_pixel_position_x(end) - get_pixel_position_x(start) - if(!dy) - return (dx>=0)?90:270 - .=arctan(dx/dy) - if(dy<0) - .+=180 - else if(dx<0) - .+=360 - -/proc/Get_Compass_Dir(atom/start,atom/end)//get_dir() only considers an object to be north/south/east/west if there is zero deviation. This uses rounding instead. - if(!start || !end) return 0 - if(!start.z || !end.z) return 0 //Atoms are not on turfs. - var/dy=end.y-start.y - var/dx=end.x-start.x - if(!dy) - return (dx>=0)?4:8 - var/angle=arctan(dx/dy) - if(dy<0) - angle+=180 - else if(dx<0) - angle+=360 - +/// Calculate the angle between two atoms. Uses north-clockwise convention: NORTH = 0, EAST = 90, etc. +/proc/Get_Angle(atom/start, atom/end)//For beams. + if(!start || !end) + return 0 + if(!start.z) + start = get_turf(start) + if(!start) + return 0 //Atoms are not on turfs. + if(!end.z) + end = get_turf(end) + if(!end) + return 0 //Atoms are not on turfs. + var/dy = get_pixel_position_y(end) - get_pixel_position_y(start) + var/dx = get_pixel_position_x(end) - get_pixel_position_x(start) + return delta_to_angle(dx, dy) + +/// Calculate the angle produced by a pair of x and y deltas. Uses north-clockwise convention: NORTH = 0, EAST = 90, etc. +/proc/delta_to_angle(dx, dy) + . = arctan(dy, dx) //y-then-x results in north-clockwise convention: https://en.wikipedia.org/wiki/Atan2#East-counterclockwise,_north-clockwise_and_south-clockwise_conventions,_etc. + if(. < 0) + . += 360 + +/proc/angle_to_dir(angle) switch(angle) //diagonal directions get priority over straight directions in edge cases if (22.5 to 67.5) return NORTHEAST @@ -151,6 +142,8 @@ else return NORTH +/proc/Get_Compass_Dir(atom/start, atom/end)//get_dir() only considers an object to be north/south/east/west if there is zero deviation. This uses rounding instead. + return angle_to_dir(Get_Angle(get_turf(start), get_turf(end))) // Among other things, used by flamethrower and boiler spray to calculate if flame/spray can pass through. // Returns an atom for specific effects (primarily flames and acid spray) that damage things upon contact @@ -2095,3 +2088,15 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( if(NORTHWEST) return list(NORTHWEST, NORTH, WEST) + +/// Returns TRUE if the target is somewhere that the game should not interact with if possible +/// In this case, admin Zs and tutorial areas +/proc/should_block_game_interaction(atom/target) + if(is_admin_level(target.z)) + return TRUE + + var/area/target_area = get_area(target) + if(target_area?.block_game_interaction) + return TRUE + + return FALSE diff --git a/code/_onclick/hud/rendering/plane_master.dm b/code/_onclick/hud/rendering/plane_master.dm index 91c0e24fae1f..d4181d7e9953 100644 --- a/code/_onclick/hud/rendering/plane_master.dm +++ b/code/_onclick/hud/rendering/plane_master.dm @@ -149,6 +149,14 @@ remove_filter("AO") add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA")) +/atom/movable/screen/plane_master/nvg_plane + name = "NVG plane" + plane = NVG_PLANE + render_relay_plane = RENDER_PLANE_GAME + blend_mode_override = BLEND_MULTIPLY + //icon = 'icons/mob/hud/screen1.dmi' + //icon_state = "noise" + /atom/movable/screen/plane_master/fullscreen name = "fullscreen alert plane" plane = FULLSCREEN_PLANE diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index c6052da33199..8d77920a59cc 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -3,6 +3,7 @@ /obj/item/proc/attack_self(mob/user) SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) + SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK_SELF, src) if(flags_item & CAN_DIG_SHRAPNEL && ishuman(user)) dig_out_shrapnel(user) @@ -11,6 +12,7 @@ /atom/proc/attackby(obj/item/W, mob/living/user,list/mods) if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, mods) & COMPONENT_NO_AFTERATTACK) return TRUE + SEND_SIGNAL(user, COMSIG_MOB_PARENT_ATTACKBY, src, W) return FALSE /atom/movable/attackby(obj/item/W, mob/living/user) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index f87778355755..21dd804f09c4 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -29,7 +29,7 @@ if(ismob(target) || isVehicle(target)) if(isxeno(target) && SSticker.mode.check_xeno_late_join(src)) //if it's a xeno and all checks are alright, we are gonna try to take their body var/mob/living/carbon/xenomorph/xeno = target - if(xeno.stat == DEAD || is_admin_level(xeno.z) || xeno.aghosted) + if(xeno.stat == DEAD || should_block_game_interaction(xeno) || xeno.aghosted) to_chat(src, SPAN_WARNING("You cannot join as [xeno].")) do_observe(xeno) return FALSE diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm index cc785f32f426..ad4ba9d72546 100644 --- a/code/_onclick/xeno.dm +++ b/code/_onclick/xeno.dm @@ -111,7 +111,7 @@ so that it doesn't double up on the delays) so that it applies the delay immedia if(alt_pressed && shift_pressed) if(istype(target, /mob/living/carbon/xenomorph)) var/mob/living/carbon/xenomorph/xeno = target - if(!QDELETED(xeno) && xeno.stat != DEAD && !is_admin_level(xeno.z) && xeno.check_state(TRUE) && xeno.hivenumber == hivenumber) + if(!QDELETED(xeno) && xeno.stat != DEAD && !should_block_game_interaction(xeno) && xeno.check_state(TRUE) && xeno.hivenumber == hivenumber) overwatch(xeno) next_move = world.time + 3 // Some minimal delay so this isn't crazy spammy return TRUE diff --git a/code/controllers/subsystem/hijack.dm b/code/controllers/subsystem/hijack.dm index ee3e86e6095e..ed9eba2bc6c3 100644 --- a/code/controllers/subsystem/hijack.dm +++ b/code/controllers/subsystem/hijack.dm @@ -325,22 +325,22 @@ SUBSYSTEM_DEF(hijack) /datum/controller/subsystem/hijack/proc/heat_engine_room() engine_room_heated = TRUE - var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/engine_core] + var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/lower/engine_core] engine_room.firealert() engine_room.temperature = T90C for(var/mob/current_mob as anything in GLOB.mob_list) var/area/mob_area = get_area(current_mob) - if(istype(mob_area, /area/almayer/engineering/engine_core)) + if(istype(mob_area, /area/almayer/engineering/lower/engine_core)) to_chat(current_mob, SPAN_BOLDWARNING("You feel the heat of the room increase as the fusion engines whirr louder.")) /datum/controller/subsystem/hijack/proc/superheat_engine_room() engine_room_superheated = TRUE - var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/engine_core] + var/area/engine_room = GLOB.areas_by_type[/area/almayer/engineering/lower/engine_core] engine_room.firealert() engine_room.temperature = T120C //slowly deals burn at this temp for(var/mob/current_mob as anything in GLOB.mob_list) var/area/mob_area = get_area(current_mob) - if(istype(mob_area, /area/almayer/engineering/engine_core)) + if(istype(mob_area, /area/almayer/engineering/lower/engine_core)) to_chat(current_mob, SPAN_BOLDWARNING("The room feels incredibly hot, you can't take much more of this!")) /datum/controller/subsystem/hijack/proc/announce_sd_halfway() diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index 50aec8845dd0..a808e7e3fd85 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -1,3 +1,6 @@ +#define CANVAS_COOLDOWN_TIME 4 MINUTES +#define FLATTEN_MAP_COOLDOWN_TIME 3 MINUTES + /** * # Minimaps subsystem * @@ -438,11 +441,11 @@ SUBSYSTEM_DEF(minimaps) if(faction == FACTION_MARINE) if(!COOLDOWN_FINISHED(GLOB, uscm_flatten_map_icon_cooldown)) return FALSE - COOLDOWN_START(GLOB, uscm_flatten_map_icon_cooldown, flatten_map_cooldown_time) + COOLDOWN_START(GLOB, uscm_flatten_map_icon_cooldown, FLATTEN_MAP_COOLDOWN_TIME) else if(faction == XENO_HIVE_NORMAL) if(!COOLDOWN_FINISHED(GLOB, xeno_flatten_map_icon_cooldown)) return FALSE - COOLDOWN_START(GLOB, xeno_flatten_map_icon_cooldown, flatten_map_cooldown_time) + COOLDOWN_START(GLOB, xeno_flatten_map_icon_cooldown, FLATTEN_MAP_COOLDOWN_TIME) else return FALSE @@ -500,6 +503,8 @@ SUBSYSTEM_DEF(minimaps) qdel(svg_store_overlay) debug_log("SVG coordinates for [faction] are not implemented!") +#define can_draw(faction, user) ((faction == FACTION_MARINE && skillcheck(user, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT)) || (faction == XENO_HIVE_NORMAL && isqueen(user))) + /datum/controller/subsystem/minimaps/proc/fetch_tacmap_datum(zlevel, flags) var/hash = "[zlevel]-[flags]" if(hashed_tacmaps[hash]) @@ -625,9 +630,6 @@ SUBSYSTEM_DEF(minimaps) var/toolbar_color_selection = "black" var/toolbar_updated_selection = "black" - var/canvas_cooldown_time = 4 MINUTES - var/flatten_map_cooldown_time = 3 MINUTES - /// boolean value to keep track if the canvas has been updated or not, the value is used in tgui state. var/updated_canvas = FALSE /// current flattend map @@ -740,7 +742,6 @@ SUBSYSTEM_DEF(minimaps) else data["canvasCooldown"] = max(GLOB.uscm_canvas_cooldown - world.time, 0) - data["nextCanvasTime"] = canvas_cooldown_time data["updatedCanvas"] = updated_canvas data["lastUpdateTime"] = last_update_time @@ -750,6 +751,7 @@ SUBSYSTEM_DEF(minimaps) /datum/tacmap/ui_static_data(mob/user) var/list/data = list() + data["mapRef"] = map_holder?.map_ref data["canDraw"] = FALSE data["canViewTacmap"] = TRUE @@ -761,6 +763,7 @@ SUBSYSTEM_DEF(minimaps) /datum/tacmap/drawing/ui_static_data(mob/user) var/list/data = list() + data["canvasCooldownDuration"] = CANVAS_COOLDOWN_TIME data["mapRef"] = map_holder?.map_ref data["canDraw"] = FALSE data["mapFallback"] = wiki_map_fallback @@ -773,7 +776,7 @@ SUBSYSTEM_DEF(minimaps) data["canViewTacmap"] = is_xeno data["canViewCanvas"] = faction == FACTION_MARINE || faction == XENO_HIVE_NORMAL - if(faction == FACTION_MARINE && skillcheck(user, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT) || faction == XENO_HIVE_NORMAL && isqueen(user)) + if(can_draw(faction, user)) data["canDraw"] = TRUE data["canViewTacmap"] = TRUE @@ -781,6 +784,8 @@ SUBSYSTEM_DEF(minimaps) /datum/tacmap/drawing/status_tab_view/ui_static_data(mob/user) var/list/data = list() + + data["canvasCooldownDuration"] = CANVAS_COOLDOWN_TIME data["mapFallback"] = wiki_map_fallback data["canDraw"] = FALSE data["canViewTacmap"] = FALSE @@ -791,6 +796,8 @@ SUBSYSTEM_DEF(minimaps) /datum/tacmap/drawing/status_tab_view/xeno/ui_static_data(mob/user) var/list/data = list() + + data["canvasCooldownDuration"] = CANVAS_COOLDOWN_TIME data["mapFallback"] = wiki_map_fallback data["canDraw"] = FALSE data["canViewTacmap"] = FALSE @@ -814,16 +821,21 @@ SUBSYSTEM_DEF(minimaps) var/mob/user = ui.user var/mob/living/carbon/xenomorph/xeno = user var/faction = istype(xeno) ? xeno.hivenumber : user.faction - if(faction == FACTION_NEUTRAL && isobserver(user)) + var/is_observer = isobserver(user) + if(faction == FACTION_NEUTRAL && is_observer) faction = allowed_flags == MINIMAP_FLAG_XENO ? XENO_HIVE_NORMAL : FACTION_MARINE + var/drawing_allowed = !is_observer && can_draw(faction, user) switch (action) if ("menuSelect") - if(params["selection"] != "new canvas") + if(params["selection"] != "Canvas") if(updated_canvas) updated_canvas = FALSE toolbar_updated_selection = toolbar_color_selection // doing this if it == canvas can cause a latency issue with the stroke. else + if(!drawing_allowed) + msg_admin_niche("[key_name(user)] made an unauthorized attempt to 'menuSelect' the 'new canvas' panel of the [faction] tacmap!") + return FALSE distribute_current_map_png(faction) last_update_time = world.time // An attempt to get the image to load on first try in the interface, but doesn't seem always reliable @@ -832,60 +844,68 @@ SUBSYSTEM_DEF(minimaps) old_map = get_tacmap_data_png(faction) current_svg = get_tacmap_data_svg(faction) - if ("updateCanvas") - // forces state change, this will export the svg. + if("updateCanvas") toolbar_updated_selection = "export" updated_canvas = TRUE action_queue_change += 1 - if ("clearCanvas") + if("clearCanvas") toolbar_updated_selection = "clear" updated_canvas = FALSE action_queue_change += 1 - if ("undoChange") + if("undoChange") toolbar_updated_selection = "undo" updated_canvas = FALSE action_queue_change += 1 - if ("selectColor") + if("selectColor") var/newColor = params["color"] if(newColor) toolbar_color_selection = newColor toolbar_updated_selection = newColor action_queue_change += 1 - if ("onDraw") + if("onDraw") updated_canvas = FALSE - if ("selectAnnouncement") + if("selectAnnouncement") + if(!drawing_allowed) + msg_admin_niche("[key_name(user)] made an unauthorized attempt to 'selectAnnouncement' the [faction] tacmap!") + return FALSE + if(!istype(params["image"], /list)) // potentially very serious? return FALSE + var/cooldown_satisfied = FALSE if(faction == FACTION_MARINE) - GLOB.uscm_flat_tacmap_data += new_current_map + cooldown_satisfied = COOLDOWN_FINISHED(GLOB, uscm_canvas_cooldown) else if(faction == XENO_HIVE_NORMAL) - GLOB.xeno_flat_tacmap_data += new_current_map - - store_current_svg_coords(faction, params["image"], user) - current_svg = get_tacmap_data_svg(faction) - old_map = get_tacmap_data_png(faction) + cooldown_satisfied = COOLDOWN_FINISHED(GLOB, xeno_canvas_cooldown) + if(!cooldown_satisfied) + msg_admin_niche("[key_name(user)] attempted to 'selectAnnouncement' the [faction] tacmap while it is still on cooldown!") + return FALSE if(faction == FACTION_MARINE) - COOLDOWN_START(GLOB, uscm_canvas_cooldown, canvas_cooldown_time) - var/mob/living/carbon/human/human_leader = user + GLOB.uscm_flat_tacmap_data += new_current_map + COOLDOWN_START(GLOB, uscm_canvas_cooldown, CANVAS_COOLDOWN_TIME) for(var/datum/squad/current_squad in GLOB.RoleAuthority.squads) current_squad.send_maptext("Tactical map update in progress...", "Tactical Map:") + var/mob/living/carbon/human/human_leader = user human_leader.visible_message(SPAN_BOLDNOTICE("Tactical map update in progress...")) playsound_client(human_leader.client, "sound/effects/sos-morse-code.ogg") notify_ghosts(header = "Tactical Map", message = "The USCM tactical map has been updated.", ghost_sound = "sound/effects/sos-morse-code.ogg", notify_volume = 80, action = NOTIFY_USCM_TACMAP, enter_link = "uscm_tacmap=1", enter_text = "View", source = owner) - else if(faction == XENO_HIVE_NORMAL) - var/mutable_appearance/appearance = mutable_appearance(icon('icons/mob/hud/actions_xeno.dmi'), "toggle_queen_zoom") - COOLDOWN_START(GLOB, xeno_canvas_cooldown, canvas_cooldown_time) + GLOB.xeno_flat_tacmap_data += new_current_map + COOLDOWN_START(GLOB, xeno_canvas_cooldown, CANVAS_COOLDOWN_TIME) xeno_maptext("The Queen has updated our hive mind map", "We sense something unusual...", faction) + var/mutable_appearance/appearance = mutable_appearance(icon('icons/mob/hud/actions_xeno.dmi'), "toggle_queen_zoom") notify_ghosts(header = "Tactical Map", message = "The Xenomorph tactical map has been updated.", ghost_sound = "sound/voice/alien_distantroar_3.ogg", notify_volume = 50, action = NOTIFY_XENO_TACMAP, enter_link = "xeno_tacmap=1", enter_text = "View", source = user, alert_overlay = appearance) + store_current_svg_coords(faction, params["image"], user) + current_svg = get_tacmap_data_svg(faction) + old_map = get_tacmap_data_png(faction) + toolbar_updated_selection = toolbar_color_selection message_admins("[key_name(user)] has updated the tactical map for [faction].") updated_canvas = FALSE @@ -995,3 +1015,7 @@ SUBSYSTEM_DEF(minimaps) if(XENO_HIVE_RENEGADE) return MINIMAP_FLAG_XENO_RENEGADE return 0 + +#undef CANVAS_COOLDOWN_TIME +#undef FLATTEN_MAP_COOLDOWN_TIME +#undef can_draw diff --git a/code/controllers/subsystem/techtree.dm b/code/controllers/subsystem/techtree.dm index 04ac2591bc15..5f22373228f0 100644 --- a/code/controllers/subsystem/techtree.dm +++ b/code/controllers/subsystem/techtree.dm @@ -34,17 +34,6 @@ SUBSYSTEM_DEF(techtree) var/datum/space_level/zpos = SSmapping.add_new_zlevel(tree.name, list(ZTRAIT_TECHTREE)) tree.zlevel = zpos - var/zlevel = zpos.z_value - var/turf/z_min = locate(1, 1, zlevel) - var/turf/z_max = locate(world.maxx, world.maxy, zlevel) - - - - for(var/t in block(z_min, z_max)) - var/turf/Tu = t - Tu.ChangeTurf(/turf/closed/void, list(/turf/closed/void)) - new /area/techtree(Tu) - for(var/tier in tree.tree_tiers) tree.unlocked_techs += tier tree.all_techs += tier diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 4b4468c08429..2e11ba8a96cb 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -46,6 +46,7 @@ SUBSYSTEM_DEF(ticker) var/totalPlayers = 0 //used for pregame stats on statpanel var/totalPlayersReady = 0 //used for pregame stats on statpanel + var/tutorial_disabled = FALSE //zonenote /datum/controller/subsystem/ticker/Initialize(timeofday) load_mode() @@ -478,7 +479,6 @@ SUBSYSTEM_DEF(ticker) winset(C, null, "mainwindow.icon=[SSticker.mode.taskbar_icon]") - /datum/controller/subsystem/ticker/proc/hijack_ocurred() if(mode) mode.is_in_endgame = TRUE diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 79bd10c65736..104bb838bbcf 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -360,7 +360,7 @@ SUBSYSTEM_DEF(vote) log_vote(text) var/vp = CONFIG_GET(number/vote_period) SEND_SOUND(world, sound(vote_sound, channel = SOUND_CHANNEL_VOX, volume = vote_sound_vol)) - to_chat(world, SPAN_CENTERBOLD("

[text]
Type vote or click here to place your votes.
You have [DisplayTimeText(vp)] to vote.


")) + to_chat(world, SPAN_CENTERBOLD("

[text]
Type vote or click here to place your votes.
You have [DisplayTimeText(vp)] to vote.


")) time_remaining = round(vp/10) for(var/c in GLOB.clients) var/client/C = c diff --git a/code/datums/action.dm b/code/datums/action.dm index 0510a43415a7..3a597ad262b1 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -11,9 +11,9 @@ var/cost = 0 // By default an action has no cost -> will be utilized by skill actions/xeno actions var/action_flags = 0 // Check out __game.dm for flags /// Whether the action is hidden from its owner - /// Useful for when you want to preserve action state while preventing - /// a mob from using said action - var/hidden = FALSE + var/hidden = FALSE //Preserve action state while preventing mob from using action + ///Hide the action from the owner without preventing them from using it (incase of keybind listen_signal) + var/player_hidden = FALSE var/unique = TRUE /// A signal on the mob that will cause the action to activate var/listen_signal @@ -227,7 +227,7 @@ var/atom/movable/screen/action_button/B = A.button if(reload_screen) client.add_to_screen(B) - if(A.hidden) + if(A.hidden || A.player_hidden) B.screen_loc = null continue button_number++ diff --git a/code/datums/ammo/ammo.dm b/code/datums/ammo/ammo.dm index 48a387e54d20..7a4006deee73 100644 --- a/code/datums/ammo/ammo.dm +++ b/code/datums/ammo/ammo.dm @@ -106,7 +106,7 @@ SHOULD_NOT_SLEEP(TRUE) return -/datum/ammo/proc/on_embed(mob/embedded_mob, obj/limb/target_organ) +/datum/ammo/proc/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) return /datum/ammo/proc/do_at_max_range(obj/projectile/P) diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm index 607a6e517a7c..3aaba8443efb 100644 --- a/code/datums/ammo/misc.dm +++ b/code/datums/ammo/misc.dm @@ -178,7 +178,7 @@ accurate_range = 12 shell_speed = AMMO_SPEED_TIER_1 -/datum/ammo/souto/on_embed(mob/embedded_mob, obj/limb/target_organ) +/datum/ammo/souto/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) if(ishuman(embedded_mob) && !isyautja(embedded_mob)) if(istype(target_organ)) target_organ.embed(new can_type) diff --git a/code/datums/components/tutorial_status.dm b/code/datums/components/tutorial_status.dm new file mode 100644 index 000000000000..97b8d408bcb5 --- /dev/null +++ b/code/datums/components/tutorial_status.dm @@ -0,0 +1,25 @@ +/datum/component/tutorial_status + dupe_mode = COMPONENT_DUPE_UNIQUE + /// What the mob's current tutorial status is, displayed in the status panel + var/tutorial_status = "" + +/datum/component/tutorial_status/Initialize() + . = ..() + if(!ismob(parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/tutorial_status/RegisterWithParent() + ..() + RegisterSignal(parent, COMSIG_MOB_TUTORIAL_UPDATE_OBJECTIVE, PROC_REF(update_objective)) + RegisterSignal(parent, COMSIG_MOB_GET_STATUS_TAB_ITEMS, PROC_REF(get_status_tab_item)) + +/datum/component/tutorial_status/proc/update_objective(datum/source, objective_text) + SIGNAL_HANDLER + + tutorial_status = objective_text + +/datum/component/tutorial_status/proc/get_status_tab_item(datum/source, list/status_tab_items) + SIGNAL_HANDLER + + if(tutorial_status) + status_tab_items += "Tutorial Objective: " + tutorial_status diff --git a/code/datums/construction/construction_template.dm b/code/datums/construction/construction_template.dm index 0b874def4495..37832327c381 100644 --- a/code/datums/construction/construction_template.dm +++ b/code/datums/construction/construction_template.dm @@ -14,8 +14,8 @@ var/pixel_y = -16 var/pixel_x = -16 - var/crystals_required = 0 - var/crystals_stored = 0 + var/plasma_required = 0 + var/plasma_stored = 0 var/materials_required = list() //Example resource requirements i.e. MATERIAL_METAL = 1 var/extras_required = list() //Example extra requirements i.e. /obj/item = 1 @@ -43,47 +43,23 @@ return if(!xeno.plasma_max) return - if(crystals_stored >= crystals_required) + if(plasma_stored >= plasma_required) to_chat(xeno, SPAN_WARNING("\The [name] does not require plasma.")) return - to_chat(xeno, SPAN_NOTICE("You begin adding \the plasma to \the [name].")) + to_chat(xeno, SPAN_NOTICE("We begin adding \the plasma to \the [name].")) xeno_attack_delay(xeno) if(!do_after(xeno, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return //double-check amount required - if(crystals_stored >= crystals_required) + if(plasma_stored >= plasma_required) to_chat(xeno, SPAN_WARNING("\The [name] has enough plasma.")) return - var/amount_to_use = min(xeno.plasma_stored, (crystals_required - crystals_stored)) - crystals_stored += amount_to_use + var/amount_to_use = min(xeno.plasma_stored, (plasma_required - plasma_stored)) + plasma_stored += amount_to_use xeno.plasma_stored -= amount_to_use - to_chat(xeno, SPAN_WARNING("\The [name] requires [crystals_required - crystals_stored] more plasma.")) + to_chat(xeno, SPAN_WARNING("\The [name] requires [plasma_required - plasma_stored] more plasma.")) check_completion() -// Xeno ressource collection -/* -/datum/construction_template/proc/add_crystal(mob/living/carbon/xenomorph/M) - if(!istype(M)) - return - if(!M.crystal_stored) - to_chat(M, SPAN_WARNING("You have no [MATERIAL_CRYSTAL] stored.")) - return - if(crystals_stored >= crystals_required) - to_chat(M, SPAN_WARNING("\The [name] does not require [MATERIAL_CRYSTAL].")) - return - to_chat(M, SPAN_NOTICE("You begin adding \the [MATERIAL_CRYSTAL] to \the [name].")) - if(!do_after(M, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - return - //double-check amount required - if(crystals_stored >= crystals_required) - to_chat(M, SPAN_WARNING("\The [name] has enough [MATERIAL_CRYSTAL].")) - return - var/amount_to_use = min(M.crystal_stored, (crystals_required - crystals_stored)) - crystals_stored += amount_to_use - M.crystal_stored -= amount_to_use - to_chat(M, SPAN_WARNING("\The [name] requires [crystals_required - crystals_stored] more [MATERIAL_CRYSTAL].")) - check_completion() */ - /datum/construction_template/proc/add_material(mob/user, obj/item/I) if(isStack(I)) var/obj/item/stack/S = I @@ -123,7 +99,7 @@ check_completion() /datum/construction_template/proc/check_completion() - if(crystals_stored < crystals_required) + if(plasma_stored < plasma_required) return FALSE for(var/material_req in materials_required) if(materials_required[material_req] > 0) diff --git a/code/datums/construction/xenomorph/construction_template_xenomorph.dm b/code/datums/construction/xenomorph/construction_template_xenomorph.dm index 0bddbeecf359..94914eb1e9ce 100644 --- a/code/datums/construction/xenomorph/construction_template_xenomorph.dm +++ b/code/datums/construction/xenomorph/construction_template_xenomorph.dm @@ -3,7 +3,7 @@ /datum/construction_template/xenomorph name = "xenomorph structure" build_type = /obj/effect/alien/resin/special - crystals_required = 45 * XENO_STRUCTURE_PLASMA_MULTIPLIER + plasma_required = 45 * XENO_STRUCTURE_PLASMA_MULTIPLIER /// The hive that this structure belongs to. var/datum/hive_status/hive_ref /// The range around this structure which needs to be clear for it to be constructed. @@ -29,7 +29,7 @@ description = "Heart of the hive, grows hive weeds (which are necessary for other structures), stores larva, spawns lesser drones, and protects the hive from skyfire." build_type = /obj/effect/alien/resin/special/pylon/core build_icon_state = "core" - crystals_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER + plasma_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER block_range = 0 /datum/construction_template/xenomorph/cluster @@ -39,7 +39,7 @@ build_icon_state = "hive_cluster" pixel_y = -8 pixel_x = -8 - crystals_required = 50 * XENO_STRUCTURE_PLASMA_MULTIPLIER + plasma_required = 50 * XENO_STRUCTURE_PLASMA_MULTIPLIER block_range = 0 /datum/construction_template/xenomorph/cluster/set_structure_image() @@ -50,7 +50,7 @@ description = "Remote section of the hive, grows hive weeds, spawns lesser drones, and protects sisters from air strikes." build_type = /obj/effect/alien/resin/special/pylon build_icon_state = "pylon" - crystals_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER + plasma_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER block_range = 0 /datum/construction_template/xenomorph/eggmorph diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 933b547aa1f2..ae19a3044678 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -206,8 +206,8 @@ GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) sleep(40) var/list/jobs_to_check = GLOB.ROLES_CIC + GLOB.ROLES_AUXIL_SUPPORT + GLOB.ROLES_MISC + GLOB.ROLES_POLICE + GLOB.ROLES_ENGINEERING + GLOB.ROLES_REQUISITION + GLOB.ROLES_MEDICAL + GLOB.ROLES_MARINES - for(var/mob/living/carbon/human/H in GLOB.human_mob_list) - if(is_admin_level(H.z)) + for(var/mob/living/carbon/human/H as anything in GLOB.human_mob_list) + if(should_block_game_interaction(H)) continue if(H.job in jobs_to_check) manifest_inject(H) diff --git a/code/datums/diseases/black_goo.dm b/code/datums/diseases/black_goo.dm index 7ee83f4def9c..183cdadf17aa 100644 --- a/code/datums/diseases/black_goo.dm +++ b/code/datums/diseases/black_goo.dm @@ -1,4 +1,12 @@ //Disease Datum +#define ZOMBIE_INFECTION_STAGE_ONE 1 +#define ZOMBIE_INFECTION_STAGE_TWO 2 +#define ZOMBIE_INFECTION_STAGE_THREE 3 +#define SLOW_INFECTION_RATE 1 +#define FAST_INFECTION_RATE 7 +#define STAGE_LEVEL_THRESHOLD 360 +#define MESSAGE_COOLDOWN_TIME 1 MINUTES + /datum/disease/black_goo name = "Black Goo" max_stages = 3 @@ -16,117 +24,117 @@ longevity = 500 //the virus tend to die before the dead is turn into zombie this should fix it. stage_prob = 0//no randomness - /// whether we're currently transforming the host into a zombie. - var/zombie_transforming = 0 - /// tells a dead infectee their stage, so they can know when-abouts they'll revive + /// boolean value to determine if the mob is currently transforming into a zombie. + var/zombie_is_transforming = FALSE + + /// variable to keep track of the stage level, used to prevent the stage message from being displayed more than once for any given stage. var/stage_counter = 0 //new variables to handle infection progression inside a stage. - /// variable that contain accumulated virus progression for an host. + /// variable that contains accumulated virus progression for a host. Iterates to a value above 360 and is then reset. var/stage_level = 0 - /// variable that handle passive increase of the virus of an host. - var/infection_rate = 1 - ///the number of stage level needed to pass another stage. - var/stage_level_check = 360 + /// variable that handles passive increase of the virus of a host. + var/infection_rate = SLOW_INFECTION_RATE - /// cooldown between each check to see if we display a symptome idea is to get 60s between symptome atleast. - var/message_cooldown_time = 1 MINUTES + /// cooldown for the living mob's symptom messages COOLDOWN_DECLARE(goo_message_cooldown) /datum/disease/black_goo/stage_act() ..() - if(!ishuman(affected_mob)) return - var/mob/living/carbon/human/H = affected_mob + if(!ishuman_strict(affected_mob)) + return + var/mob/living/carbon/human/infected_mob = affected_mob - // check if your already a zombie or in the process of being transform into one... - if(iszombie(H)) + if(iszombie(infected_mob)) return - // check if dead - if(H.stat == DEAD) - infection_rate = 4 + // infection rate is faster for dead mobs + if(infected_mob.stat == DEAD) + infection_rate = FAST_INFECTION_RATE - // check if he isn't dead - if(H.stat != DEAD) - infection_rate = 1 + // standard infection rate for living mobs + if(infected_mob.stat != DEAD) + infection_rate = SLOW_INFECTION_RATE - // here we add the new infection rate to the stage level. stage_level += infection_rate - // we want to check if we have reach enough stage level to gain a stage 3 stage of 6 min if you get it once. - if(stage_level >= stage_level_check) + // resets the stage_level once it passes the threshold. + if(stage_level >= STAGE_LEVEL_THRESHOLD) stage++ - stage_level -= stage_level_check + stage_level = stage_level % STAGE_LEVEL_THRESHOLD switch(stage) - if(1) - if(H.stat == DEAD && stage_counter != stage) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at stage one! Zombie transformation begins at stage three.")) + if(ZOMBIE_INFECTION_STAGE_ONE) + if(infected_mob.stat == DEAD && stage_counter != stage) + to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage one! Zombie transformation begins at stage three.")) stage_counter = stage - if (!COOLDOWN_FINISHED(src, goo_message_cooldown)) - return - COOLDOWN_START(src, goo_message_cooldown, message_cooldown_time) - - switch(rand(0, 100)) - if(0 to 25) + // dead mobs should not have symptoms, because... they are dead. + if(infected_mob.stat != DEAD) + if (!COOLDOWN_FINISHED(src, goo_message_cooldown)) return - if(25 to 75) - to_chat(affected_mob, SPAN_DANGER("You feel warm...")) - stage_level += 9 - if(75 to 95) - to_chat(affected_mob, SPAN_DANGER("Your throat is really dry...")) - stage_level += 18 - if(95 to 100) - to_chat(affected_mob, SPAN_DANGER("You can't trust them...")) - stage_level += 36 - - if(2) - if(H.stat == DEAD && stage_counter != stage) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at stage two! Zombie transformation begins at stage three.")) + COOLDOWN_START(src, goo_message_cooldown, MESSAGE_COOLDOWN_TIME) + + switch(rand(0, 100)) + if(0 to 25) + return + if(25 to 75) + to_chat(infected_mob, SPAN_DANGER("You feel warm...")) + stage_level += 9 + if(75 to 95) + to_chat(infected_mob, SPAN_DANGER("Your throat is really dry...")) + stage_level += 18 + if(95 to 100) + to_chat(infected_mob, SPAN_DANGER("You can't trust them...")) + stage_level += 36 + + if(ZOMBIE_INFECTION_STAGE_TWO) + if(infected_mob.stat == DEAD && stage_counter != stage) + to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage two! Zombie transformation begins at stage three.")) stage_counter = stage - if (!COOLDOWN_FINISHED(src, goo_message_cooldown)) - return - COOLDOWN_START(src, goo_message_cooldown, message_cooldown_time) - - switch(rand(0, 100)) - if(0 to 25) + if(infected_mob.stat != DEAD) + if (!COOLDOWN_FINISHED(src, goo_message_cooldown)) return - if(25 to 50) - to_chat(affected_mob, SPAN_DANGER("You can't trust them...")) - stage_level += 5 - if(50 to 75) - to_chat(affected_mob, SPAN_DANGER("You feel really warm...")) - stage_level += 9 - if(75 to 85) - to_chat(affected_mob, SPAN_DANGER("Your throat is really dry...")) - stage_level += 18 - if(85 to 95) - H.vomit_on_floor() - stage_level += 36 - if(95 to 100) - to_chat(affected_mob, SPAN_DANGER("You cough up some black fluid...")) - stage_level += 42 - - if(3) - //check if your already a zombie just return to avoid weird stuff... if for some weird reason first filter deoesn't work... - if(iszombie(H)) + COOLDOWN_START(src, goo_message_cooldown, MESSAGE_COOLDOWN_TIME) + + switch(rand(0, 100)) + if(0 to 25) + return + if(25 to 50) + to_chat(infected_mob, SPAN_DANGER("You can't trust them...")) + stage_level += 5 + if(50 to 75) + to_chat(infected_mob, SPAN_DANGER("You feel really warm...")) + stage_level += 9 + if(75 to 85) + to_chat(infected_mob, SPAN_DANGER("Your throat is really dry...")) + stage_level += 18 + if(85 to 95) + infected_mob.vomit_on_floor() + stage_level += 36 + if(95 to 100) + to_chat(infected_mob, SPAN_DANGER("You cough up some black fluid...")) + stage_level += 42 + + if(ZOMBIE_INFECTION_STAGE_THREE) + //check if the mob is already a zombie and just return to avoid weird stuff, edge case if zombie_is_transforming deoesn't work. + if(iszombie(infected_mob)) return - if(H.stat == DEAD && stage_counter != stage) - to_chat(H, SPAN_CENTERBOLD("Your zombie infection is now at stage three! Zombie transformation begin!")) + if(infected_mob.stat == DEAD && stage_counter != stage) + to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage three! Zombie transformation begin!")) stage_counter = stage hidden = list(0,0) - if(!zombie_transforming) - zombie_transform(H) - H.next_move_slowdown = max(H.next_move_slowdown, 2) + if(!zombie_is_transforming) + zombie_transform(infected_mob) + infected_mob.next_move_slowdown = max(infected_mob.next_move_slowdown, 2) /datum/disease/black_goo/proc/zombie_transform(mob/living/carbon/human/human) set waitfor = 0 - zombie_transforming = TRUE + zombie_is_transforming = TRUE human.vomit_on_floor() human.adjust_effect(5, STUN) sleep(20) @@ -143,7 +151,7 @@ human.set_species(SPECIES_ZOMBIE) stage = 3 human.faction = FACTION_ZOMBIE - zombie_transforming = FALSE + zombie_is_transforming = FALSE /obj/item/weapon/zombie_claws @@ -298,3 +306,11 @@ for(var/i=1; i <= storage_slots; i++) new /obj/item/reagent_container/food/drinks/bottle/black_goo(src) return + +#undef ZOMBIE_INFECTION_STAGE_ONE +#undef ZOMBIE_INFECTION_STAGE_TWO +#undef ZOMBIE_INFECTION_STAGE_THREE +#undef STAGE_LEVEL_THRESHOLD +#undef SLOW_INFECTION_RATE +#undef FAST_INFECTION_RATE +#undef MESSAGE_COOLDOWN_TIME diff --git a/code/datums/effects/bleeding.dm b/code/datums/effects/bleeding.dm index e6cb184850d4..2171580a94db 100644 --- a/code/datums/effects/bleeding.dm +++ b/code/datums/effects/bleeding.dm @@ -19,6 +19,13 @@ if(L && istype(L)) limb = L +/datum/effects/bleeding/Destroy() + if(limb) + SEND_SIGNAL(limb, COMSIG_LIMB_STOP_BLEEDING, TRUE, FALSE) + limb.bleeding_effects_list -= src + limb = null + return ..() + /datum/effects/bleeding/validate_atom(atom/A) if(isobj(A)) return FALSE @@ -48,12 +55,6 @@ duration += damage * (blood_duration_multiplier / BLOOD_ADD_PENALTY) blood_loss += damage / (blood_loss_divider * BLOOD_ADD_PENALTY) //Make the first hit count, adding on bleeding has a penalty -/datum/effects/bleeding/Destroy() - if(limb) - limb.bleeding_effects_list -= src - return ..() - - /datum/effects/bleeding/external var/buffer_blood_loss = 0 diff --git a/code/datums/emergency_calls/emergency_call.dm b/code/datums/emergency_calls/emergency_call.dm index c6f71382b877..7884d93b18bc 100644 --- a/code/datums/emergency_calls/emergency_call.dm +++ b/code/datums/emergency_calls/emergency_call.dm @@ -30,7 +30,7 @@ var/arrival_message = "" //Msg to display about when the shuttle arrives var/objectives //Txt of objectives to display to joined. Todo: make this into objective notes var/objective_info //For additional info in the objectives txt - var/probability = 0 //Chance of it occurring. Total must equal 100% + var/probability = 0 var/hostility //For ERTs who are either hostile or friendly by random chance. var/list/datum/mind/members = list() //Currently-joined members. var/list/datum/mind/candidates = list() //Potential candidates for enlisting. diff --git a/code/datums/emergency_calls/royal_marines.dm b/code/datums/emergency_calls/royal_marines.dm index b3feaccf87bb..21f79e7c3026 100644 --- a/code/datums/emergency_calls/royal_marines.dm +++ b/code/datums/emergency_calls/royal_marines.dm @@ -1,7 +1,7 @@ /datum/emergency_call/royal_marines name = "Royal Marines Commando (Squad) (Friendly)" mob_max = 7 - probability = 0 + probability = 15 name_of_spawn = /obj/effect/landmark/ert_spawns/distress_twe item_spawn = /obj/effect/landmark/ert_spawns/distress_twe/item max_engineers = 0 diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 207310ac34c5..6a4276208d13 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -177,7 +177,7 @@ teleatom.visible_message(SPAN_DANGER("[teleatom] bounces off of the portal!")) return 0 - if(is_admin_level(destination.z)) + if(should_block_game_interaction(destination)) if(length(teleatom.search_contents_for(/obj/item/storage/backpack/holding))) teleatom.visible_message(SPAN_DANGER("The Bag of Holding bounces off of the portal!")) return 0 diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 205032f46a97..74f445f21597 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -44,8 +44,6 @@ msg_admin_niche("[key]/[ckey] has tried to transfer to deleted [new_character].") return - SEND_SIGNAL(current.client, COMSIG_CLIENT_MIND_TRANSFER, new_character) - if(current) current.mind = null //remove ourself from our old body's mind variable SSnano.nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user diff --git a/code/datums/mob_hud.dm b/code/datums/mob_hud.dm index e4ec3acc1410..778ec2b75a36 100644 --- a/code/datums/mob_hud.dm +++ b/code/datums/mob_hud.dm @@ -33,10 +33,8 @@ GLOBAL_LIST_INIT_TYPED(huds, /datum/mob_hud, list( /datum/mob_hud/proc/remove_hud_from(mob/user, source) if(length(hudusers[user]) && (source in hudusers[user])) hudusers[user] -= source - if(length(hudusers[user])) return FALSE - for(var/mob/target in hudmobs) remove_from_single_hud(user, target) diff --git a/code/datums/skills/civilian.dm b/code/datums/skills/civilian.dm index 9b55adc9b1f4..9dc4afd78826 100644 --- a/code/datums/skills/civilian.dm +++ b/code/datums/skills/civilian.dm @@ -70,7 +70,7 @@ CIVILIAN /datum/skills/civilian/survivor/goon name = "Survivor Goon" - skills = list( + additional_skills = list( SKILL_CQC = SKILL_CQC_TRAINED, SKILL_POLICE = SKILL_POLICE_SKILLED, SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, @@ -160,6 +160,7 @@ CIVILIAN name = "Survivor Trucker" additional_skills = list( SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, ) diff --git a/code/datums/status_effects/_status_effect_helpers.dm b/code/datums/status_effects/_status_effect_helpers.dm index 0ee952200610..02a4f9a5ccea 100644 --- a/code/datums/status_effects/_status_effect_helpers.dm +++ b/code/datums/status_effects/_status_effect_helpers.dm @@ -40,6 +40,7 @@ // Create the status effect with our mob + our arguments var/datum/status_effect/new_instance = new new_effect(arguments) + SEND_SIGNAL(src, COMSIG_LIVING_APPLY_EFFECT, new_instance) if(!QDELETED(new_instance)) return new_instance diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm index 36d890e2b3d5..43e0358a96f9 100644 --- a/code/datums/supply_packs/black_market.dm +++ b/code/datums/supply_packs/black_market.dm @@ -101,7 +101,7 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. new /obj/item/clothing/head/helmet/marine/veteran/UPP(src) new /obj/item/clothing/under/marine/veteran/UPP(src) new /obj/item/clothing/suit/storage/marine/faction/UPP(src) - new /obj/item/clothing/shoes/marine/upp(src) + new /obj/item/clothing/shoes/marine/upp/knife(src) new /obj/item/clothing/gloves/marine/veteran(src) new /obj/item/storage/backpack/lightpack/five_slot(src) if(5) //freelancer diff --git a/code/datums/tutorial/_tutorial.dm b/code/datums/tutorial/_tutorial.dm new file mode 100644 index 000000000000..5423453bbdb9 --- /dev/null +++ b/code/datums/tutorial/_tutorial.dm @@ -0,0 +1,259 @@ +GLOBAL_LIST_EMPTY_TYPED(ongoing_tutorials, /datum/tutorial) + +/// A tutorial datum contains a set of instructions for a player tutorial, such as what to spawn, what's scripted to occur, and so on. +/datum/tutorial + /// What the tutorial is called, is player facing + var/name = "Base" + /// Internal ID of the tutorial, kept for save files + var/tutorial_id = "base" + /// A short 1-2 sentence description of the tutorial itself + var/desc = "" + /// What the tutorial's icon in the UI should look like + var/icon_state = "" + /// What category the tutorial should be under + var/category = TUTORIAL_CATEGORY_BASE + /// Ref to the bottom-left corner tile of the tutorial room + var/turf/bottom_left_corner + /// Ref to the turf reservation for this tutorial + var/datum/turf_reservation/reservation + /// Ref to the player who is doing the tutorial + var/mob/tutorial_mob + /// If the tutorial will be ending soon + var/tutorial_ending = FALSE + /// A dict of type:atom ref for some important junk that should be trackable + var/list/tracking_atoms = list() + /// What map template should be used for the tutorial + var/datum/map_template/tutorial/tutorial_template = /datum/map_template/tutorial/s12x12 + /// What is the parent path of this, to exclude from the tutorial menu + var/parent_path = /datum/tutorial + /// A dictionary of "bind_name" : "keybind_button". The inverse of `key_bindings` on a client's prefs + var/list/player_bind_dict = list() + +/datum/tutorial/Destroy(force, ...) + GLOB.ongoing_tutorials -= src + QDEL_NULL(reservation) // Its Destroy() handles releasing reserved turfs + + tutorial_mob = null // We don't delete it because the turf reservation will typically clean it up + + QDEL_LIST_ASSOC_VAL(tracking_atoms) + + return ..() + +/// The proc to begin doing everything related to the tutorial +/datum/tutorial/proc/start_tutorial(mob/starting_mob) + SHOULD_CALL_PARENT(TRUE) + + if(!starting_mob?.client) + return FALSE + + ADD_TRAIT(starting_mob, TRAIT_IN_TUTORIAL, TRAIT_SOURCE_TUTORIAL) + + tutorial_mob = starting_mob + + reservation = SSmapping.RequestBlockReservation(initial(tutorial_template.width), initial(tutorial_template.height)) + if(!reservation) + return FALSE + + var/turf/bottom_left_corner_reservation = locate(reservation.bottom_left_coords[1], reservation.bottom_left_coords[2], reservation.bottom_left_coords[3]) + var/datum/map_template/tutorial/template = new tutorial_template + template.load(bottom_left_corner_reservation, FALSE, TRUE) + var/obj/landmark = locate(/obj/effect/landmark/tutorial_bottom_left) in GLOB.landmarks_list + bottom_left_corner = get_turf(landmark) + qdel(landmark) + + if(!verify_template_loaded()) + abort_tutorial() + return FALSE + + generate_binds() + + GLOB.ongoing_tutorials |= src + var/area/tutorial_area = get_area(bottom_left_corner) + tutorial_area.update_base_lighting() // this will be entirely dark otherwise + init_map() + if(!tutorial_mob) + end_tutorial() + + return TRUE + +/// The proc used to end and clean up the tutorial +/datum/tutorial/proc/end_tutorial(completed = FALSE) + SHOULD_CALL_PARENT(TRUE) + + if(tutorial_mob) + remove_action(tutorial_mob, /datum/action/tutorial_end) // Just in case to make sure the client can't try and leave the tutorial while it's mid-cleanup + if(tutorial_mob.client?.prefs && completed) + tutorial_mob.client.prefs.completed_tutorials |= tutorial_id + tutorial_mob.client.prefs.save_character() + var/mob/new_player/new_player = new + if(!tutorial_mob.mind) + tutorial_mob.mind_initialize() + + tutorial_mob.mind.transfer_to(new_player) + + if(!QDELETED(src)) + qdel(src) + +/// Verify the template loaded fully and without error. +/datum/tutorial/proc/verify_template_loaded() + // We subtract 1 from x and y because the bottom left corner doesn't start at the walls. + var/turf/true_bottom_left_corner = locate( + reservation.bottom_left_coords[1], + reservation.bottom_left_coords[2], + reservation.bottom_left_coords[3], + ) + // We subtract 1 from x and y here because the bottom left corner counts as the first tile + var/turf/top_right_corner = locate( + true_bottom_left_corner.x + initial(tutorial_template.width) - 1, + true_bottom_left_corner.y + initial(tutorial_template.height) - 1, + true_bottom_left_corner.z + ) + for(var/turf/tile as anything in block(true_bottom_left_corner, top_right_corner)) + // For some reason I'm unsure of, the template will not always fully load, leaving some tiles to be space tiles. So, we check all tiles in the (small) tutorial area + // and tell start_tutorial to abort if there's any space tiles. + if(istype(tile, /turf/open/space)) + return FALSE + + return TRUE + +/// Something went very, very wrong during load so let's abort +/datum/tutorial/proc/abort_tutorial() + to_chat(tutorial_mob, SPAN_BOLDWARNING("Something went wrong during tutorial load, please try again!")) + end_tutorial(FALSE) + +/datum/tutorial/proc/add_highlight(atom/target, color = "#d19a02") + target.add_filter("tutorial_highlight", 2, list("type" = "outline", "color" = color, "size" = 1)) + +/datum/tutorial/proc/remove_highlight(atom/target) + target.remove_filter("tutorial_highlight") + +/datum/tutorial/proc/add_to_tracking_atoms(atom/reference) + tracking_atoms[reference.type] = reference + +/datum/tutorial/proc/remove_from_tracking_atoms(atom/reference) + tracking_atoms -= reference.type + +/// Broadcast a message to the player's screen +/datum/tutorial/proc/message_to_player(message) + playsound_client(tutorial_mob.client, 'sound/effects/radiostatic.ogg', tutorial_mob.loc, 25, FALSE) + tutorial_mob.play_screen_text(message, /atom/movable/screen/text/screen_text/command_order/tutorial, rgb(103, 214, 146)) + to_chat(tutorial_mob, SPAN_NOTICE(message)) + +/// Updates a player's objective in their status tab +/datum/tutorial/proc/update_objective(message) + SEND_SIGNAL(tutorial_mob, COMSIG_MOB_TUTORIAL_UPDATE_OBJECTIVE, message) + +/// Initialize the tutorial mob. +/datum/tutorial/proc/init_mob() + tutorial_mob.AddComponent(/datum/component/tutorial_status) + give_action(tutorial_mob, /datum/action/tutorial_end, null, null, src) + ADD_TRAIT(tutorial_mob, TRAIT_IN_TUTORIAL, TRAIT_SOURCE_TUTORIAL) + +/// Ends the tutorial after a certain amount of time. +/datum/tutorial/proc/tutorial_end_in(time = 5 SECONDS, completed = TRUE) + tutorial_ending = TRUE + addtimer(CALLBACK(src, PROC_REF(end_tutorial), completed), time) + +/// Initialize any objects that need to be in the tutorial area from the beginning. +/datum/tutorial/proc/init_map() + return + +/// Returns a turf offset by offset_x (left-to-right) and offset_y (up-to-down) +/datum/tutorial/proc/loc_from_corner(offset_x = 0, offset_y = 0) + RETURN_TYPE(/turf) + return locate(bottom_left_corner.x + offset_x, bottom_left_corner.y + offset_y, bottom_left_corner.z) + +/// Handle the player ghosting out +/datum/tutorial/proc/on_ghost(datum/source, mob/dead/observer/ghost) + SIGNAL_HANDLER + + var/mob/new_player/new_player = new + if(!ghost.mind) + ghost.mind_initialize() + + ghost.mind.transfer_to(new_player) + + end_tutorial(FALSE) + +/// A wrapper for signals to call end_tutorial() +/datum/tutorial/proc/signal_end_tutorial(datum/source) + SIGNAL_HANDLER + + end_tutorial(FALSE) + +/// Called whenever the tutorial_mob logs out +/datum/tutorial/proc/on_logout(datum/source) + SIGNAL_HANDLER + + if(tutorial_mob.aghosted) + return + + end_tutorial(FALSE) + +/// Generate a dictionary of button : action for use of referencing what keys to press +/datum/tutorial/proc/generate_binds() + if(!tutorial_mob.client?.prefs) + return + + for(var/bind in tutorial_mob.client.prefs.key_bindings) + var/action = tutorial_mob.client.prefs.key_bindings[bind] + // We presume the first action under a certain binding is the one we want. + if(action[1] in player_bind_dict) + player_bind_dict[action[1]] += bind + else + player_bind_dict[action[1]] = list(bind) + +/// Getter for player_bind_dict. Provide an action name like "North" or "quick_equip" +/datum/tutorial/proc/retrieve_bind(action_name) + if(!action_name) + return + + if(!(action_name in player_bind_dict)) + return "Undefined" + + return player_bind_dict[action_name][1] + +/datum/action/tutorial_end + name = "Stop Tutorial" + action_icon_state = "hologram_exit" + /// Weakref to the tutorial this is related to + var/datum/weakref/tutorial + +/datum/action/tutorial_end/New(Target, override_icon_state, datum/tutorial/selected_tutorial) + . = ..() + tutorial = WEAKREF(selected_tutorial) + +/datum/action/tutorial_end/action_activate() + if(!tutorial) + return + + var/datum/tutorial/selected_tutorial = tutorial.resolve() + if(selected_tutorial.tutorial_ending) + return + + selected_tutorial.end_tutorial() + + +/datum/map_template/tutorial + name = "Tutorial Zone (12x12)" + mappath = "maps/tutorial/tutorial_12x12.dmm" + width = 12 + height = 12 + +/datum/map_template/tutorial/s12x12 + +/datum/map_template/tutorial/s8x9 + name = "Tutorial Zone (8x9)" + mappath = "maps/tutorial/tutorial_8x9.dmm" + width = 8 + height = 9 + +/datum/map_template/tutorial/s8x9/no_baselight + name = "Tutorial Zone (8x9) (No Baselight)" + mappath = "maps/tutorial/tutorial_8x9_nb.dmm" + +/datum/map_template/tutorial/s7x7 + name = "Tutorial Zone (7x7)" + mappath = "maps/tutorial/tutorial_7x7.dmm" + width = 7 + height = 7 diff --git a/code/datums/tutorial/_tutorial_menu.dm b/code/datums/tutorial/_tutorial_menu.dm new file mode 100644 index 000000000000..42eb3f6aabfa --- /dev/null +++ b/code/datums/tutorial/_tutorial_menu.dm @@ -0,0 +1,83 @@ +/datum/tutorial_menu + /// List of ["name" = name, "tutorials" = ["name" = name, "path" = "path", "id" = tutorial_id]] + var/static/list/categories = list() + + +/datum/tutorial_menu/New() + if(!length(categories)) + var/list/categories_2 = list() + for(var/datum/tutorial/tutorial as anything in subtypesof(/datum/tutorial)) + if(initial(tutorial.parent_path) == tutorial) + continue + + if(!(initial(tutorial.category) in categories_2)) + categories_2[initial(tutorial.category)] = list() + + categories_2[initial(tutorial.category)] += list(list( + "name" = initial(tutorial.name), + "path" = "[tutorial]", + "id" = initial(tutorial.tutorial_id), + "description" = initial(tutorial.desc), + "image" = initial(tutorial.icon_state), + )) + + for(var/category in categories_2) + categories += list(list( + "name" = category, + "tutorials" = categories_2[category], + )) + + +/datum/tutorial_menu/proc/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "TutorialMenu") + ui.open() + +/datum/tutorial_menu/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/tutorial), + ) + +/datum/tutorial_menu/ui_state(mob/user) + if(istype(get_area(user), /area/misc/tutorial)) + return GLOB.never_state + + return GLOB.new_player_state + + +/datum/tutorial_menu/ui_static_data(mob/user) + var/list/data = list() + + data["tutorial_categories"] = categories + if(user.client?.prefs) + data["completed_tutorials"] = user.client.prefs.completed_tutorials + else + data["completed_tutorials"] = list() + + return data + + +/datum/tutorial_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + switch(action) + if("select_tutorial") + var/datum/tutorial/path + if(!params["tutorial_path"]) + return + + path = text2path(params["tutorial_path"]) + + if(!path || !isnewplayer(usr)) + return + + if(HAS_TRAIT(usr, TRAIT_IN_TUTORIAL) || istype(get_area(usr), /area/misc/tutorial)) + to_chat(usr, SPAN_NOTICE("You are currently in a tutorial, or one is loading. Please be patient.")) + return + + path = new path + path.start_tutorial(usr) + return TRUE diff --git a/code/datums/tutorial/creating_a_tutorial.md b/code/datums/tutorial/creating_a_tutorial.md new file mode 100644 index 000000000000..96a7cb886820 --- /dev/null +++ b/code/datums/tutorial/creating_a_tutorial.md @@ -0,0 +1,96 @@ +# Tutorial Creation + +[ToC] + +## Step 1: Identifying the Goal + +Your first objective when making a tutorial should be to have a clear and concise vision of what you want the tutorial to convey to the user. People absorb information better in smaller chunks, so you should ideally keep a tutorial to one section of information at a time. + +For example, if you are making a tutorial for new CM players, it should be split into multiple parts like: + +- Basics +- Medical +- Weaponry +- Requisitions/Communication + +## Step 2: Coding + +For an example of the current code standards for tutorials, see [this](https://github.com/cmss13-devs/cmss13/pull/4442/files#diff-843b2f84360b9b932dfc960027992f2b5117667962bfa8da14f9a35f0179a926) file. + +The API for tutorials is designed to be very simple, so I'll go over all the base `/datum/tutorial` procs and some vars here: + +### Variables +- `name` + - This is the player-facing name of the tutorial. +- `tutorial_id` + - This is the back-end ID of the tutorial, used for save files. Try not to change a tutorial's ID after it's on the live server. +- `category` + - This is what category the tutorial should be under. Use the `TUTORIAL_CATEGORY_XXXX` macros. +- `tutorial_template` + - This is what type the map template of the tutorial should be. The default space is 12x12; ideally make it so it fits the given scale of the tutorial with some wiggle room for the player to move around. +- `parent_path` + - This is the top-most parent `/datum/tutorial` path, used to exclude abstract parents from the tutorial menu. For example, `/datum/tutorial/marine/basic` would have a `parent_path` of `/datum/tutorial/marine`, since that path is the top-most abstract path. + +### Procs +- `start_tutorial(mob/starting_mob)` + - This proc starts the tutorial, setting up the map template and player. This should be overridden with a parent call before any overridden code. +- `end_tutorial(completed = FALSE)` + - This proc ends the tutorial, sending the player back to the lobby and deleting the tutorial itself. A parent call on any subtypes should be at the end of the overridden segment. If `completed` is `TRUE`, then the tutorial will save as a completed one for the user. +- `add_highlight(atom/target, color = "#d19a02")` + - This proc adds a highlight filter around an atom, by default this color. Successive calls of highlight on the same atom will override the last. +- `remove_highlight(atom/target)` + - This proc removes the tutorial highlight from a target. +- `add_to_tracking_atoms(atom/reference)` + - This proc will add a reference to the tutorial's tracked atom dictionary. For what a tracked atom is, see Step 2.1. +- `remove_from_tracking_atoms(atom/reference)` + - This proc will remove a reference from the tutorial's tracked atom dictionary. For what a tracked atom is, see Step 2.1. +- `message_to_player(message)` + - This proc is the ideal way to communicate to a player. It is visually similar to overwatch messages or weather alerts, but appears and disappears much faster. The messages sent should be consise, but can have a degree of dialogue to them. +- `update_objective(message)` + - This proc is used to update the player's objective in their status panel. This should be only what is required and how to do it without any dialogue or extra text. +- `init_mob()` + - This proc is used to initialize the mob and set them up correctly. +- `init_map()` + - This proc does nothing by default, but can be overriden to spawn any atoms necessary for the tutorial from the very start. +- `tutorial_end_in(time = 5 SECONDS, completed = TRUE)` + - This proc will end the tutorial in the given time, defaulting to 5 seconds. Once the proc is called, the player will be booted back to the menu screen after the time is up. Will mark the tutorial as completed if `completed` is `TRUE` +- `loc_from_corner(offset_x = 0, offset_y = 0)` + - This proc will return a turf offset from the bottom left corner of the tutorial zone. Keep in mind, the bottom left corner is NOT on a wall, it is on the first floor on the bottom left corner. `offset_x` and `offset_y` are used to offset what turf you want to get, and should never be negative. + +## Step 2.1: Tracking Atoms +Naturally, you will need to keep track of certain objects or mobs for signal purposes, so the tracking system exists to fill that purpose. When you add a reference to the tracking atom list with `add_to_tracking_atoms()`, it gets put into a dictionary of `{path : reference}`. Because of this limitation, you should not track more than 1 object of the same type. To get a tracked atom, use of the `TUTORIAL_ATOM_FROM_TRACKING(path, varname)` macro is recommended. `path` should be replaced with the precise typepath of the tracked atom, and `varname` should be replaced with the variable name you wish to use. If an object is going to be deleted, remove it with `remove_from_tracking_atoms()` first. + +## Step 2.2: Scripting Format +Any proc whose main purpose is to advance the tutorial will be hereon referred to as a "script proc", as part of the entire "script". In the vast majority of cases, a script proc should hand off to the next using signals. Here is an example from `basic_marine.dm`: + +```javascript +/datum/tutorial/marine/basic/proc/on_cryopod_exit() + SIGNAL_HANDLER + + UnregisterSignal(tracking_atoms[/obj/structure/machinery/cryopod/tutorial], COMSIG_CRYOPOD_GO_OUT) + message_to_player("Good. You may notice the yellow \"food\" icon on the right side of your screen. Proceed to the outlined Food Vendor and vend the USCM Protein Bar.") + update_objective("Vend a USCM Protein Bar from the outlined ColMarTech Food Vendor.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial, food_vendor) + add_highlight(food_vendor) + food_vendor.req_access = list() + RegisterSignal(food_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_food_vend)) + +``` + +Line-by-line: + - `SIGNAL_HANDLER` is necessary as this proc was called via signal. + - Here we are unregistering the signal we registered in the previous proc to call this one, which in this case was waiting for the player to leave the tracked cryopod. + - Now, we tell the user the next step in the script, which is sent to their screen. + - Here we update the player's status panel with similar info to the above line, but far more condensed. + - Since we need to access the food vendor, we use the `TUTORIAL_ATOM_FROM_TRACKING()` macro to get a ref to it. + - We add a yellow outline to the food vendor to make it more clear what is wanted of the player + - The tutorial food vendors are locked to `ACCESS_TUTORIAL_LOCKED` by default, so here we remove that access requirement + - And finally, we register a signal for the next script proc, waiting for the user to vend something from the food vendor. + + +## Step 2.3: Quirks & Tips +- Generally speaking, you will want to create `/tutorial` subtypes of anything you add in the tutorial, should it need any special functions or similar. +- Restrict access from players as much as possible. As seen in the example above, restricting access to vendors and similar machines is recommended to prevent sequence breaking. Additionally, avoid adding anything that detracts from the tutorial itself. +- Attempt to avoid softlocks when possible. If someone could reasonably do something (e.g. firing every bullet they have at a ranged target and missing, now unable to kill them and progress) that could softlock them, then there should be a fallback of some sort. However, accomodations don't need to be made for people who purposefully cause a softlock; there's a "stop tutorial" button for a reason. +- When calling `message_to_player()` or `update_objective()`, **bold** the names of objects, items, and keybinds. +- Attempt to bind as many scripting signals to the `tutorial_mob` as possible. The nature of SS13 means something as sequence-heavy as this will always be fragile, so keeping the fragility we can affect to a minimum is imperative. diff --git a/code/datums/tutorial/marine/_marine.dm b/code/datums/tutorial/marine/_marine.dm new file mode 100644 index 000000000000..ceb0ba8ab550 --- /dev/null +++ b/code/datums/tutorial/marine/_marine.dm @@ -0,0 +1,21 @@ +/datum/tutorial/marine + category = TUTORIAL_CATEGORY_MARINE + parent_path = /datum/tutorial/marine + icon_state = "marine" + +/datum/tutorial/marine/init_mob() + var/mob/living/carbon/human/new_character = new(bottom_left_corner) + new_character.lastarea = get_area(bottom_left_corner) + + setup_human(new_character, tutorial_mob) + + //SSround_recording.recorder.track_player(new_character) //zonenote: check if necessary + + new_character.marine_snowflake_points = MARINE_TOTAL_SNOWFLAKE_POINTS + new_character.marine_buyable_categories = MARINE_CAN_BUY_ALL + + tutorial_mob = new_character + RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost)) + RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_MOB_END_TUTORIAL), PROC_REF(signal_end_tutorial)) + RegisterSignal(tutorial_mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout)) + return ..() diff --git a/code/datums/tutorial/marine/basic_marine.dm b/code/datums/tutorial/marine/basic_marine.dm new file mode 100644 index 000000000000..be49977f7a48 --- /dev/null +++ b/code/datums/tutorial/marine/basic_marine.dm @@ -0,0 +1,208 @@ +/datum/tutorial/marine/basic + name = "Marine - Basic" + desc = "A tutorial to get you acquainted with the very basics of how to play a groundside marine role." + tutorial_id = "marine_basic_1" + tutorial_template = /datum/map_template/tutorial/s8x9/no_baselight + /// How many items need to be vended from the clothing vendor for the script to continue, if something vends 2 items (for example), increase this number by 2. + var/clothing_items_to_vend = 8 + /// How many items need to be vended from the gun vendor to continue + var/gun_items_to_vend = 2 + +// START OF SCRIPTING + +/datum/tutorial/marine/basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + var/obj/item/device/flashlight/flashlight = new(loc_from_corner(2, 3)) + flashlight.anchored = TRUE + flashlight.set_light_power(4) + flashlight.set_light_range(12) + flashlight.icon = null + flashlight.set_light_on(TRUE) + add_to_tracking_atoms(flashlight) + + init_mob() + message_to_player("This is the tutorial for marine rifleman. Leave the cryopod by pressing [retrieve_bind("North")] or [retrieve_bind("East")] to continue.") + update_objective("Exit the cryopod by pressing [retrieve_bind("North")] or [retrieve_bind("East")].") + RegisterSignal(tracking_atoms[/obj/structure/machinery/cryopod/tutorial], COMSIG_CRYOPOD_GO_OUT, PROC_REF(on_cryopod_exit)) + +/datum/tutorial/marine/basic/proc/on_cryopod_exit() + SIGNAL_HANDLER + + UnregisterSignal(tracking_atoms[/obj/structure/machinery/cryopod/tutorial], COMSIG_CRYOPOD_GO_OUT) + message_to_player("Good. You may notice the yellow \"food\" icon on the right side of your screen. Proceed to the outlined Food Vendor and vend the USCM Protein Bar.") + update_objective("Vend a USCM Protein Bar from the outlined ColMarTech Food Vendor.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial, food_vendor) + add_highlight(food_vendor) + food_vendor.req_access = list() + RegisterSignal(food_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_food_vend)) + +/datum/tutorial/marine/basic/proc/on_food_vend(datum/source, obj/structure/machinery/cm_vending/vendor, list/itemspec, mob/living/carbon/human/user) + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial, food_vendor) + UnregisterSignal(food_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND) + remove_highlight(food_vendor) + food_vendor.req_access = list(ACCESS_TUTORIAL_LOCKED) + message_to_player("Now click on your character with the USCM Protein Bar in-hand until it is fully eaten. If you accidentally switched hands, switch back with [retrieve_bind("swap_hands")].") + update_objective("Eat the USCM Protein Bar by clicking on yourself while holding it, until it is gone.") + RegisterSignal(tutorial_mob, COMSIG_MOB_EATEN_SNACK, PROC_REF(on_foodbar_eaten)) + +/datum/tutorial/marine/basic/proc/on_foodbar_eaten(datum/source, obj/item/reagent_container/food/snacks/eaten_food) + SIGNAL_HANDLER + + if(!istype(eaten_food, /obj/item/reagent_container/food/snacks/protein_pack) || eaten_food.reagents.total_volume) + return + + UnregisterSignal(source, COMSIG_MOB_EATEN_SNACK) + message_to_player("Good. Now move to the outlined vendor and vend everything inside.") + update_objective("Vend everything inside the ColMarTech Automated Closet.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/clothing/tutorial, clothing_vendor) + add_highlight(clothing_vendor) + clothing_vendor.req_access = list() + RegisterSignal(clothing_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_clothing_vend)) + +/datum/tutorial/marine/basic/proc/on_clothing_vend(datum/source) + SIGNAL_HANDLER + + clothing_items_to_vend-- + if(clothing_items_to_vend <= 0) + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/clothing/tutorial, clothing_vendor) + UnregisterSignal(clothing_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND) + clothing_vendor.req_access = list(ACCESS_TUTORIAL_LOCKED) + remove_highlight(clothing_vendor) + message_to_player("Now, the room will darken. Take a flare out of your flare pouch by clicking on it with an empty hand, and then light it by using it in-hand with [retrieve_bind("activate_inhand")].") + update_objective("Click on your flare pouch to remove a flare before using it in-hand.") + var/obj/item/storage/pouch/flare/flare_pouch = locate(/obj/item/storage/pouch/flare) in tutorial_mob.contents + if(flare_pouch) + add_highlight(flare_pouch) + RegisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF, PROC_REF(on_flare_light)) + addtimer(CALLBACK(src, PROC_REF(dim_room)), 2.5 SECONDS) + +/datum/tutorial/marine/basic/proc/on_flare_light(datum/source, obj/item/used) + SIGNAL_HANDLER + + if(!istype(used, /obj/item/device/flashlight/flare)) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF) + var/obj/item/storage/pouch/flare/flare_pouch = locate(/obj/item/storage/pouch/flare) in tutorial_mob.contents + if(flare_pouch) + remove_highlight(flare_pouch) + + message_to_player("Now throw the flare by clicking on a nearby tile, or dropping it with [retrieve_bind("drop_item")].") + update_objective("Throw the flare by clicking on a nearby tile, or dropping it with [retrieve_bind("drop_item")].") + RegisterSignal(tutorial_mob, COMSIG_MOB_ITEM_DROPPED, PROC_REF(on_flare_throw)) + +/datum/tutorial/marine/basic/proc/on_flare_throw(datum/source, obj/item/thrown) + SIGNAL_HANDLER + + if(!istype(thrown, /obj/item/device/flashlight/flare)) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_ITEM_DROPPED) + message_to_player("Good. Now, the room will brighten again. Proceed to the highlighted vendor and vend a M41A Pulse Rifle MK2, along with a magazine.") + update_objective("Vend everything from the ColMarTech Automated Weapons Rack.") + addtimer(CALLBACK(src, PROC_REF(brighten_room)), 1.5 SECONDS) + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial, gun_vendor) + gun_vendor.req_access = list() + add_highlight(gun_vendor) + RegisterSignal(gun_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND, PROC_REF(on_gun_vend)) + +/datum/tutorial/marine/basic/proc/on_gun_vend(datum/source) + SIGNAL_HANDLER + + gun_items_to_vend-- + if(gun_items_to_vend <= 0) + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial, gun_vendor) + gun_vendor.req_access = list(ACCESS_TUTORIAL_LOCKED) + remove_highlight(gun_vendor) + UnregisterSignal(gun_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND) + message_to_player("Now insert the magazine into the M41A Pulse Rifle by having the magazine in your active hand and hitting the Pulse Rifle with it. If it is in the off-hand, switch with [retrieve_bind("swap_hands")].") + update_objective("Insert the M41A magazine by hitting the M41A Pulse Rifle with it.") + RegisterSignal(tutorial_mob, COMSIG_MOB_RELOADED_GUN, PROC_REF(on_magazine_insert)) + +/datum/tutorial/marine/basic/proc/on_magazine_insert(datum/source, atom/attacked, obj/item/attacked_with) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_MOB_RELOADED_GUN) + message_to_player("Good. Now wield your gun by using it in-hand with [retrieve_bind("activate_inhand")].") + update_objective("Wield your gun with two hands by pressing [retrieve_bind("activate_inhand")] with the gun in your main hand.") + RegisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF, PROC_REF(on_gun_wield)) + +/datum/tutorial/marine/basic/proc/on_gun_wield(datum/source, obj/item/used) + SIGNAL_HANDLER + + if(!istype(used, /obj/item/weapon/gun/rifle/m41a)) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_ITEM_ATTACK_SELF) + message_to_player("Now, shoot at the highlighted Xenomorph until it dies.") + update_objective("Shoot at the Xenomorph until it dies.") + var/mob/living/carbon/xenomorph/drone/tutorial/xeno_dummy = new(loc_from_corner(4, 5)) + add_to_tracking_atoms(xeno_dummy) + add_highlight(xeno_dummy, COLOUR_VIVID_RED) + RegisterSignal(xeno_dummy, COMSIG_MOB_DEATH, PROC_REF(on_xeno_death)) + RegisterSignal(tutorial_mob, COMSIG_MOB_GUN_EMPTY, PROC_REF(on_magazine_empty)) // I'd like to prevent unwilling softlocks as much as I can + +/// Non-contiguous part of the script, called if the user manages to run out of ammo in the gun without the xeno dying +/datum/tutorial/marine/basic/proc/on_magazine_empty(obj/item/weapon/gun/empty_gun) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_MOB_GUN_EMPTY) + message_to_player("Your gun's out of ammo. Go grab some more from the Weaponry Vendor and kill the Xenomorph.") + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial, gun_vendor) + gun_vendor.req_access = list() + gun_vendor.load_ammo() // 99 magazines, to make sure that the xeno dies + +/datum/tutorial/marine/basic/proc/on_xeno_death(datum/source) + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/xenomorph/drone/tutorial, xeno_dummy) + UnregisterSignal(xeno_dummy, COMSIG_MOB_DEATH) + UnregisterSignal(tutorial_mob, COMSIG_MOB_GUN_EMPTY) + remove_highlight(xeno_dummy) + addtimer(CALLBACK(src, PROC_REF(disappear_xeno)), 2.5 SECONDS) + message_to_player("Very good. This is the end of the tutorial, proceed to the next one to learn the basics of Medical. You will be sent back to the lobby screen momentarily.") + update_objective("") + tutorial_end_in(7.5 SECONDS, TRUE) + + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + +/datum/tutorial/marine/basic/proc/dim_room() + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/device/flashlight, flashlight) + flashlight.set_light_on(FALSE) + +/datum/tutorial/marine/basic/proc/brighten_room() + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/device/flashlight, flashlight) + flashlight.set_light_on(TRUE) + +/datum/tutorial/marine/basic/proc/disappear_xeno() + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/xenomorph/drone/tutorial, xeno_dummy) + animate(xeno_dummy, time = 5 SECONDS, alpha = 0) + remove_from_tracking_atoms(xeno_dummy) + QDEL_IN(xeno_dummy, 5.5 SECONDS) + +// END OF SCRIPT HELPERS + +/datum/tutorial/marine/basic/init_mob() + . = ..() + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial) + + TUTORIAL_ATOM_FROM_TRACKING(/obj/structure/machinery/cryopod/tutorial, tutorial_pod) + tutorial_pod.go_in_cryopod(tutorial_mob, TRUE, FALSE) + + +/datum/tutorial/marine/basic/init_map() + var/obj/structure/machinery/cryopod/tutorial/tutorial_pod = new(bottom_left_corner) + add_to_tracking_atoms(tutorial_pod) + var/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial/food_vendor = new(loc_from_corner(0, 2)) + add_to_tracking_atoms(food_vendor) + var/obj/structure/machinery/cm_vending/clothing/tutorial/clothing_vendor = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(clothing_vendor) + var/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial/gun_vendor = new(loc_from_corner(0, 5)) + add_to_tracking_atoms(gun_vendor) diff --git a/code/datums/tutorial/marine/medical_basic.dm b/code/datums/tutorial/marine/medical_basic.dm new file mode 100644 index 000000000000..3a42a6d2ecc2 --- /dev/null +++ b/code/datums/tutorial/marine/medical_basic.dm @@ -0,0 +1,174 @@ +/datum/tutorial/marine/medical_basic + name = "Marine - Medical (Basic)" + desc = "Learn how to treat common injuries you may face as a marine." + tutorial_id = "marine_medical_1" + tutorial_template = /datum/map_template/tutorial/s7x7 + +// START OF SCRIPTING + +/datum/tutorial/marine/medical_basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + message_to_player("This is the tutorial for the basics of medical that you will need to know for playing a marine role.") + addtimer(CALLBACK(src, PROC_REF(brute_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/brute_tutorial() + message_to_player("The first kind of damage is Brute, the most common kind. It represents physical trauma from things like punches, weapons, or guns.") + var/mob/living/living_mob = tutorial_mob + living_mob.adjustBruteLoss(10) + addtimer(CALLBACK(src, PROC_REF(brute_tutorial_2)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/brute_tutorial_2() + message_to_player("You can observe if you have Brute or Burn damage by clicking on yourself with an empty hand on help intent.") + update_objective("Click on yourself with an empty hand.") + RegisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN, PROC_REF(on_health_examine)) + +/datum/tutorial/marine/medical_basic/proc/on_health_examine(datum/source, mob/living/carbon/human/attacked_mob) + SIGNAL_HANDLER + + if(attacked_mob != tutorial_mob) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN) + message_to_player("Good. Now, you have taken some brute damage. Bicaridine is used to fix brute over time. Pick up the bicaridine EZ autoinjector and use it in-hand.") + update_objective("Inject yourself with the bicaridine injector.") + var/obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use/brute_injector = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(brute_injector) + add_highlight(brute_injector) + RegisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED, PROC_REF(on_brute_inject)) + +/datum/tutorial/marine/medical_basic/proc/on_brute_inject(datum/source, obj/item/reagent_container/hypospray/injector) + SIGNAL_HANDLER + + if(!istype(injector, /obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use, brute_injector) + remove_highlight(brute_injector) + message_to_player("All medicines take time to work after injection. Next is Burn damage. It is obtained from things like acid or being set on fire.") + update_objective("") + var/mob/living/living_mob = tutorial_mob + living_mob.adjustFireLoss(10) + addtimer(CALLBACK(src, PROC_REF(burn_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/burn_tutorial() + message_to_player("Kelotane is used to fix burn over time. Inject yourself with the kelotane EZ autoinjector.") + update_objective("Inject yourself with the kelotane injector.") + var/obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use/burn_injector = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(burn_injector) + add_highlight(burn_injector) + RegisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED, PROC_REF(on_burn_inject)) + + +/datum/tutorial/marine/medical_basic/proc/on_burn_inject(datum/source, obj/item/reagent_container/hypospray/injector) + SIGNAL_HANDLER + + if(!istype(injector, /obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use, burn_injector) + remove_highlight(burn_injector) + message_to_player("Good. Now, when you normally take damage, you will also feel pain. Pain slows you down and can knock you out if left unchecked.") + update_objective("") + var/mob/living/living_mob = tutorial_mob + living_mob.pain.apply_pain(PAIN_CHESTBURST_STRONG) + addtimer(CALLBACK(src, PROC_REF(pain_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/pain_tutorial() + message_to_player("Tramadol is used to reduce your pain. Inject yourself with the tramadol EZ autoinjector.") + update_objective("Inject yourself with the tramadol injector.") + var/obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use/pain_injector = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(pain_injector) + add_highlight(pain_injector) + RegisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED, PROC_REF(on_pain_inject)) + +/datum/tutorial/marine/medical_basic/proc/on_pain_inject(datum/source, obj/item/reagent_container/hypospray/injector) + SIGNAL_HANDLER + + if(!istype(injector, /obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_HYPOSPRAY_INJECTED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use, pain_injector) + remove_highlight(pain_injector) + message_to_player("Good. Keep in mind that you can overdose on chemicals, so don't inject yourself with the same chemical too much too often. In the field, injectors have 3 uses.") + update_objective("Don't overdose! Generally, 3 injections of a chemical will overdose you.") + var/mob/living/living_mob = tutorial_mob + living_mob.pain.apply_pain(-PAIN_CHESTBURST_STRONG) // just to make sure + addtimer(CALLBACK(src, PROC_REF(bleed_tutorial)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/bleed_tutorial() + message_to_player("You can sometimes start bleeding from things like bullets or slashes. Losing blood will accumulate oxygen damage, eventually causing death.") + update_objective("") + var/mob/living/carbon/human/human_mob = tutorial_mob + var/obj/limb/chest/mob_chest = locate(/obj/limb/chest) in human_mob.limbs + mob_chest.add_bleeding(damage_amount = 15) + addtimer(CALLBACK(src, PROC_REF(bleed_tutorial_2)), 4 SECONDS) + +/datum/tutorial/marine/medical_basic/proc/bleed_tutorial_2() + message_to_player("Bleeding wounds can clot themselves over time, or you can fix it quickly with gauze. Pick up the gauze and click on yourself while targeting your chest.") + update_objective("Gauze your chest, or let it clot on its own.") + var/obj/item/stack/medical/bruise_pack/two/bandage = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(bandage) + add_highlight(bandage) + var/mob/living/carbon/human/human_mob = tutorial_mob + var/obj/limb/chest/mob_chest = locate(/obj/limb/chest) in human_mob.limbs + RegisterSignal(mob_chest, COMSIG_LIMB_STOP_BLEEDING, PROC_REF(on_chest_bleed_stop)) + +/datum/tutorial/marine/medical_basic/proc/on_chest_bleed_stop(datum/source, external, internal) + SIGNAL_HANDLER + + // If you exit on this step, your limbs get deleted, which stops the bleeding, which progresses the tutorial despite it ending + if(!tutorial_mob || QDELETED(src)) + return + + var/mob/living/carbon/human/human_mob = tutorial_mob + var/obj/limb/chest/mob_chest = locate(/obj/limb/chest) in human_mob.limbs + UnregisterSignal(mob_chest, COMSIG_LIMB_STOP_BLEEDING) + + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/stack/medical/bruise_pack/two, bandage) + remove_from_tracking_atoms(bandage) + remove_highlight(bandage) + qdel(bandage) + + message_to_player("Good. Sometimes, a bullet or bone shard can result in you getting shrapnel, dealing damage over time. Pick up the knife and use it in-hand to remove the shrapnel.") + update_objective("Remove your shrapnel by using the knife in-hand.") + var/mob/living/living_mob = tutorial_mob + living_mob.pain.feels_pain = FALSE + + var/obj/item/attachable/bayonet/knife = new(loc_from_corner(0, 4)) + add_to_tracking_atoms(knife) + add_highlight(knife) + + var/obj/item/shard/shrapnel/tutorial/shrapnel = new + shrapnel.on_embed(tutorial_mob, mob_chest, TRUE) + + RegisterSignal(tutorial_mob, COMSIG_HUMAN_SHRAPNEL_REMOVED, PROC_REF(on_shrapnel_removed)) + +/datum/tutorial/marine/medical_basic/proc/on_shrapnel_removed() + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_HUMAN_SHRAPNEL_REMOVED) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/attachable/bayonet, knife) + remove_highlight(knife) + message_to_player("Good. This is the end of the basic marine medical tutorial. The tutorial will end shortly.") + update_objective("Tutorial completed.") + tutorial_end_in(5 SECONDS) + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + +// END OF SCRIPT HELPERS + +/datum/tutorial/marine/medical_basic/init_mob() + . = ..() + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial/fed) + + +/datum/tutorial/marine/medical_basic/init_map() + new /obj/structure/surface/table/almayer(loc_from_corner(0, 4)) diff --git a/code/datums/tutorial/ss13/_ss13.dm b/code/datums/tutorial/ss13/_ss13.dm new file mode 100644 index 000000000000..53cf5c918ee9 --- /dev/null +++ b/code/datums/tutorial/ss13/_ss13.dm @@ -0,0 +1,41 @@ +/datum/tutorial/ss13 + category = TUTORIAL_CATEGORY_SS13 + parent_path = /datum/tutorial/ss13 + icon_state = "ss13" + +/datum/tutorial/ss13/init_mob() + tutorial_mob.close_spawn_windows() + + var/mob/living/carbon/human/new_character = new(bottom_left_corner) + new_character.lastarea = get_area(bottom_left_corner) + + tutorial_mob.client.prefs.copy_all_to(new_character) + + if(tutorial_mob.client.prefs.be_random_body) + var/datum/preferences/rand_prefs = new() + rand_prefs.randomize_appearance(new_character) + + new_character.job = tutorial_mob.job + new_character.name = tutorial_mob.real_name + new_character.voice = tutorial_mob.real_name + + new_character.sec_hud_set_ID() + new_character.hud_set_squad() + + SSround_recording.recorder.track_player(new_character) + + if(tutorial_mob.mind) + tutorial_mob.mind_initialize() + tutorial_mob.mind.transfer_to(new_character, TRUE) + tutorial_mob.mind.setup_human_stats() + + INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, regenerate_icons)) + INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_body), 1, 0) + INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair)) + + tutorial_mob = new_character + RegisterSignal(tutorial_mob, COMSIG_LIVING_GHOSTED, PROC_REF(on_ghost)) + RegisterSignal(tutorial_mob, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH, COMSIG_MOB_END_TUTORIAL), PROC_REF(signal_end_tutorial)) + RegisterSignal(tutorial_mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout)) + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial/fed) + return ..() diff --git a/code/datums/tutorial/ss13/basic_ss13.dm b/code/datums/tutorial/ss13/basic_ss13.dm new file mode 100644 index 000000000000..65bb0cac94f4 --- /dev/null +++ b/code/datums/tutorial/ss13/basic_ss13.dm @@ -0,0 +1,84 @@ +/datum/tutorial/ss13/basic + name = "Space Station 13 - Basic" + desc = "Learn the very basics of Space Station 13. Recommended if you haven't played before." + tutorial_id = "ss13_basic_1" + tutorial_template = /datum/map_template/tutorial/s7x7 + +// START OF SCRIPTING + +/datum/tutorial/ss13/basic/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + message_to_player("This is the tutorial for the basics of Space Station 13. Any current instructions can be found in the top-right corner, in the status panel.") + update_objective("Here's where it'll be!") + + addtimer(CALLBACK(src, PROC_REF(require_move)), 4 SECONDS) // check if this is a good amount of time + +/datum/tutorial/ss13/basic/proc/require_move() + message_to_player("Now, move in any direction using [retrieve_bind("North")], [retrieve_bind("West")], [retrieve_bind("South")], or [retrieve_bind("East")].") + update_objective("Move in any direction using the [retrieve_bind("North")][retrieve_bind("West")][retrieve_bind("South")][retrieve_bind("East")] keys.") + + RegisterSignal(tutorial_mob, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(on_move)) + +/datum/tutorial/ss13/basic/proc/on_move(datum/source, actually_moving, direction, specific_direction) + SIGNAL_HANDLER + + if(!actually_moving) // The mob just looked in a different dir instead of moving + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_MOVE_OR_LOOK) + + message_to_player("Good. Now, switch hands with [retrieve_bind("swap_hands")].") + update_objective("Switch hands with [retrieve_bind("swap_hands")].") + + RegisterSignal(tutorial_mob, COMSIG_MOB_SWAPPED_HAND, PROC_REF(on_hand_swap)) + +/datum/tutorial/ss13/basic/proc/on_hand_swap(datum/source) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_MOB_SWAPPED_HAND) + + message_to_player("Good. Now, pick up the satchel that just spawned and equip it with [retrieve_bind("quick_equip")].") + update_objective("Pick up the satchel and equip it with [retrieve_bind("quick_equip")].") + + var/obj/item/storage/backpack/marine/satchel/satchel = new(loc_from_corner(2, 2)) + add_to_tracking_atoms(satchel) + add_highlight(satchel) + + RegisterSignal(tutorial_mob, COMSIG_HUMAN_EQUIPPED_ITEM, PROC_REF(on_satchel_equip)) + +/datum/tutorial/ss13/basic/proc/on_satchel_equip(datum/source, obj/item/equipped, slot) + SIGNAL_HANDLER + + if(!istype(equipped, /obj/item/storage/backpack/marine/satchel) || (slot != WEAR_BACK)) + return + + UnregisterSignal(tutorial_mob, COMSIG_HUMAN_EQUIPPED_ITEM) + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/storage/backpack/marine/satchel, satchel) + remove_highlight(satchel) + message_to_player("Now, say anything by pressing [retrieve_bind("Say")].") + update_objective("Speak using [retrieve_bind("Say")].") + + RegisterSignal(tutorial_mob, COMSIG_LIVING_SPEAK, PROC_REF(on_speak)) + +/datum/tutorial/ss13/basic/proc/on_speak(datum/source) + SIGNAL_HANDLER + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_SPEAK) + message_to_player("Excellent. The next tutorial will cover intents. The tutorial will end shortly.") + update_objective("") + tutorial_end_in(5 SECONDS, TRUE) + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + + + +// END OF SCRIPT HELPERS + +/datum/tutorial/ss13/basic/init_mob() + . = ..() + tutorial_mob.forceMove(loc_from_corner(2, 1)) diff --git a/code/datums/tutorial/ss13/intents.dm b/code/datums/tutorial/ss13/intents.dm new file mode 100644 index 000000000000..d67b2ac1b4a1 --- /dev/null +++ b/code/datums/tutorial/ss13/intents.dm @@ -0,0 +1,113 @@ +/datum/tutorial/ss13/intents + name = "Space Station 13 - Intents" + desc = "Learn how the intent interaction system works." + icon_state = "intents" + tutorial_id = "ss13_intents_1" + tutorial_template = /datum/map_template/tutorial/s7x7 + +// START OF SCRIPTING + +/datum/tutorial/ss13/intents/start_tutorial(mob/starting_mob) + . = ..() + if(!.) + return + + init_mob() + message_to_player("This is the tutorial for the intents system of Space Station 13. The highlighted UI element in the bottom-right corner is your current intent.") + var/datum/hud/human/human_hud = tutorial_mob.hud_used + add_highlight(human_hud.action_intent) + + addtimer(CALLBACK(src, PROC_REF(require_help)), 4.5 SECONDS) + +/datum/tutorial/ss13/intents/proc/require_help() + tutorial_mob.a_intent_change(INTENT_DISARM) + message_to_player("Your intent has been changed off of help. Change back to it by pressing [retrieve_bind("select_help_intent")].") + update_objective("Change to help intent by pressing [retrieve_bind("select_help_intent")].") + + RegisterSignal(tutorial_mob, COMSIG_MOB_INTENT_CHANGE, PROC_REF(on_help_intent)) + +/datum/tutorial/ss13/intents/proc/on_help_intent(datum/source, new_intent) + SIGNAL_HANDLER + + if(new_intent != INTENT_HELP) + return + + UnregisterSignal(tutorial_mob, COMSIG_MOB_INTENT_CHANGE) + + var/mob/living/carbon/human/dummy/tutorial/tutorial_dummy = new(loc_from_corner(2, 3)) + add_to_tracking_atoms(tutorial_dummy) + + message_to_player("The first of the intents is help intent. It is used to harmlessly touch others, put out fire, give CPR, and similar. Click on the Test Dummy to give them a pat on the back.") + update_objective("Click on the dummy on help intent.") + + RegisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN, PROC_REF(on_help_attack)) + +/datum/tutorial/ss13/intents/proc/on_help_attack(datum/source, mob/living/carbon/human/attacked_mob) + SIGNAL_HANDLER + + if((attacked_mob == src) || (tutorial_mob.a_intent != INTENT_HELP)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN) + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + tutorial_dummy.status_flags = DEFAULT_MOB_STATUS_FLAGS + REMOVE_TRAIT(tutorial_dummy, TRAIT_IMMOBILIZED, TRAIT_SOURCE_TUTORIAL) + tutorial_dummy.anchored = FALSE + + message_to_player("The second intent is disarm, selectable with [retrieve_bind("select_disarm_intent")]. Disarm is used to shove people, which can make them drop items or fall to the ground. Shove the Test Dummy until it falls over.") + update_objective("Switch to disarm intent by pressing [retrieve_bind("select_disarm_intent")] and shove the dummy to the ground.") + + RegisterSignal(tutorial_dummy, COMSIG_LIVING_APPLY_EFFECT, PROC_REF(on_shove_down)) + +/datum/tutorial/ss13/intents/proc/on_shove_down(datum/source, datum/status_effect/new_effect) + SIGNAL_HANDLER + + if(!istype(new_effect, /datum/status_effect/incapacitating/knockdown)) + return + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + UnregisterSignal(tutorial_dummy, COMSIG_LIVING_APPLY_EFFECT) + tutorial_dummy.rejuvenate() + + message_to_player("The third intent is grab. Grab is used to grab people in either a passive, aggressive, or chokehold grab. Grab successively to \"upgrade\" your grab. Aggressively grab the Test Dummy.") + update_objective("Aggressively grab the dummy by grabbing them twice.") + + + RegisterSignal(tutorial_dummy, COMSIG_MOB_AGGRESSIVELY_GRABBED, PROC_REF(on_aggrograb)) + +/datum/tutorial/ss13/intents/proc/on_aggrograb(datum/source, mob/living/carbon/human/choker) + SIGNAL_HANDLER + + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + UnregisterSignal(tutorial_dummy, COMSIG_MOB_AGGRESSIVELY_GRABBED) + + message_to_player("The final intent is harm. Harm is used to injure people with your fists or a melee weapon. Punch the Test Dummy with an empty hand.") + update_objective("Attack the dummy with an empty hand.") + + RegisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN, PROC_REF(on_harm_attack)) + +/datum/tutorial/ss13/intents/proc/on_harm_attack(datum/source, mob/living/carbon/human/attacked_mob) + SIGNAL_HANDLER + + if((attacked_mob == src) || (tutorial_mob.a_intent != INTENT_HARM)) + return + + UnregisterSignal(tutorial_mob, COMSIG_LIVING_ATTACKHAND_HUMAN) + TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/human/dummy/tutorial, tutorial_dummy) + tutorial_dummy.status_flags = GODMODE + + message_to_player("Excellent. Those are the basics of the intent system. The tutorial will end shortly.") + update_objective("") + + tutorial_end_in(5 SECONDS, TRUE) + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + + + +// END OF SCRIPT HELPERS + +/datum/tutorial/ss13/intents/init_mob() + . = ..() + tutorial_mob.forceMove(loc_from_corner(2, 0)) diff --git a/code/datums/tutorial/tutorial_example.dm b/code/datums/tutorial/tutorial_example.dm new file mode 100644 index 000000000000..9042346f8d39 --- /dev/null +++ b/code/datums/tutorial/tutorial_example.dm @@ -0,0 +1,74 @@ +/datum/tutorial/marine/example + name = "Example Tutorial" + tutorial_id = "example" // This won't show up in the list, so this'll be irrelevant anyway. + category = TUTORIAL_CATEGORY_BASE + parent_path = /datum/tutorial/marine/example + +// START OF SCRIPTING + +/datum/tutorial/marine/example/start_tutorial(mob/starting_mob) + // Here, we're calling parent and checking its return value. If it has a falsey one (as done by !.), then something went wrong and we should abort + // There isn't really a reason that you _shouldn't_ have this + . = ..() + if(!.) + return + + // Init_mob() isn't called by default, so we call it here + init_mob() + // As is standard, we give a message to the player and update their status panel with what we want done. + message_to_player("This is an example tutorial. Perform any emote to continue.") + update_objective("Do any emote.") + // This makes the player (tutorial_mob) listen for the COMSIG_MOB_EMOTE event, which will then call on_emote() when it hears it. + RegisterSignal(tutorial_mob, COMSIG_MOB_EMOTE, PROC_REF(on_emote)) + +/datum/tutorial/marine/example/proc/on_emote(datum/source) + // With any proc called via signal (see the RegisterSignal line above for details), we add SIGNAL_HANDLER to it. + SIGNAL_HANDLER + + // Now that we've gotten the signal and started the script, we want to immediately stop listening for it. + UnregisterSignal(tutorial_mob, COMSIG_MOB_EMOTE) + message_to_player("Good. Now, pick up that can of Weyland-Yutani Aspen Beer.") + update_objective("Pick up that can.") + // This macro takes a specific type path (the same used in init_map()) and a variable name to retrieve an object from the tracked object list + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/food/drinks/cans/aspen, beer_can) + // Now we're adding a yellow highlight around the can to make sure people know what we're talking about + add_highlight(beer_can) + // Now, we always prefer to register signals on the tutorial_mob (as opposed to the beer_can) whenever possible + RegisterSignal(tutorial_mob, COMSIG_MOB_PICKUP_ITEM, PROC_REF(on_can_pickup)) + +/// We get these arguments from the signal's definition. If you have VSC, ctrl+click on COMSIG_MOB_PICKUP_ITEM above. When dealing with a signal proc, `datum/source` is always the first argument, then any added ones +/datum/tutorial/marine/example/proc/on_can_pickup(datum/source, obj/item/picked_up) + SIGNAL_HANDLER + + // Since we're just listening for the mob picking anything up, we want to confirm that the picked up item is the can before continuing. If it's not, then we return and keep listening. + if(!istype(picked_up, /obj/item/reagent_container/food/drinks/cans/aspen)) + // If we hit this return here, then the picked up item wasn't the can, so we abort and keep listening. + return + + // Since we passed the above if statement, stop listening for item pickups. + UnregisterSignal(tutorial_mob, COMSIG_MOB_PICKUP_ITEM) + // Let's get the tracked beer can again. + TUTORIAL_ATOM_FROM_TRACKING(/obj/item/reagent_container/food/drinks/cans/aspen, beer_can) + // And remove the highlight now that it's picked up + remove_highlight(beer_can) + message_to_player("Very good. This is the end of the example tutorial. You will be sent back to the lobby screen momentarily.") + // 7.5 seconds after the above message is sent, kick the player out and end the tutorial. + tutorial_end_in(7.5 SECONDS, TRUE) + + +// END OF SCRIPTING +// START OF SCRIPT HELPERS + +// END OF SCRIPT HELPERS + +/datum/tutorial/marine/example/init_mob() + . = ..() + // We give the tutorial mob a basic ID so they can use general vendors and etc. This is here because not all marine tutorials may want to use a naked equipment preset. + arm_equipment(tutorial_mob, /datum/equipment_preset/tutorial) + + +/datum/tutorial/marine/example/init_map() + // Here we're initializing a new can that we want to track, so we spawn it 2 tiles to the left and up from the bottom left corner of the tutorial zone + var/obj/item/reagent_container/food/drinks/cans/aspen/the_can = new(loc_from_corner(2, 2)) + // Now we start tracking it + add_to_tracking_atoms(the_can) diff --git a/code/game/area/admin_level.dm b/code/game/area/admin_level.dm index 00b408c04adf..bfca1481155e 100644 --- a/code/game/area/admin_level.dm +++ b/code/game/area/admin_level.dm @@ -144,3 +144,22 @@ /area/misc/testroom requires_power = FALSE name = "Test Room" + +/area/misc/tutorial + name = "Tutorial Zone" + icon_state = "tutorial" + requires_power = FALSE + flags_area = AREA_NOTUNNEL|AREA_AVOID_BIOSCAN + statistic_exempt = TRUE + ceiling = CEILING_METAL + block_game_interaction = TRUE + unique = TRUE + + base_lighting_alpha = 255 + +/area/misc/tutorial/Initialize(mapload, ...) + . = ..() + update_base_lighting() + +/area/misc/tutorial/no_baselight + base_lighting_alpha = 0 diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index d9ff42f4f55c..5267798cfe3b 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -119,7 +119,7 @@ fake_zlevel = 1 // upperdeck flags_area = AREA_NOTUNNEL -/area/almayer/command/corporateliason +/area/almayer/command/corporateliaison name = "\improper Corporate Liaison Office" icon_state = "corporatespace" fake_zlevel = 1 // upperdeck @@ -129,9 +129,40 @@ icon_state = "selfdestruct" fake_zlevel = 1 // upperdeck +// engineering + /area/almayer/engineering minimap_color = MINIMAP_AREA_ENGI +// lower deck + +/area/almayer/engineering/lower + name = "\improper Lower Deck Engineering" + icon_state = "lowerengineering" + fake_zlevel = 2 // lowerdeck + +/area/almayer/engineering/lower/engine_monitoring//this is not used so could be remove? + name = "\improper Lower Deck Engine Reactor Monitoring" + icon_state = "lowermonitoring" + +/area/almayer/engineering/lower/workshop + name = "\improper Lower Deck Engineering Workshop" + icon_state = "workshop" + +/area/almayer/engineering/lower/workshop/hangar + name = "\improper Ordnance workshop" + +/area/almayer/engineering/lower/engine_core + name = "\improper Engine Reactor Core Room" + icon_state = "coreroom" + soundscape_playlist = SCAPE_PL_ENG + soundscape_interval = 15 + hijack_evacuation_area = TRUE + hijack_evacuation_weight = 0.2 + hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE + +// upper deck + /area/almayer/engineering/upper_engineering name = "\improper Upper Deck Engineering" icon_state = "upperengineering" @@ -151,34 +182,6 @@ icon_state = "ceroom" fake_zlevel = 1 // upperdeck -/area/almayer/engineering/lower_engine_monitoring - name = "\improper Lower Deck Engine Reactor Monitoring" - icon_state = "lowermonitoring" - fake_zlevel = 2 // lowerdeck - -/area/almayer/engineering/lower_engineering - name = "\improper Lower Deck Engineering" - icon_state = "lowerengineering" - fake_zlevel = 2 // lowerdeck - -/area/almayer/engineering/engineering_workshop - name = "\improper Lower Deck Engineering Workshop" - icon_state = "workshop" - fake_zlevel = 2 // lowerdeck - -/area/almayer/engineering/engineering_workshop/hangar - name = "\improper Ordnance workshop" - -/area/almayer/engineering/engine_core - name = "\improper Engine Reactor Core Room" - icon_state = "coreroom" - fake_zlevel = 2 // lowerdeck - soundscape_playlist = SCAPE_PL_ENG - soundscape_interval = 15 - hijack_evacuation_area = TRUE - hijack_evacuation_weight = 0.2 - hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE - /area/almayer/engineering/starboard_atmos name = "\improper Upper Deck Starboard Atmospherics" icon_state = "starboardatmos" @@ -238,6 +241,13 @@ icon_state = "portpd" fake_zlevel = 2 // lowerdeck +/area/almayer/shipboard/stern_point_defense + name = "\improper Lower Deck Stern Point Defense" + icon_state = "portpd" + fake_zlevel = 2 // lowerdeck + +// brig + /area/almayer/shipboard/brig name = "\improper Brig" icon_state = "brig" @@ -245,51 +255,38 @@ /area/almayer/shipboard/brig/lobby name = "\improper Brig Lobby" - icon_state = "brig" /area/almayer/shipboard/brig/armory name = "\improper Brig Armory" - icon_state = "brig" /area/almayer/shipboard/brig/main_office name = "\improper Brig Main Office" - icon_state = "brig" /area/almayer/shipboard/brig/perma name = "\improper Brig Perma Cells" - icon_state = "brig" /area/almayer/shipboard/brig/cryo name = "\improper Brig Cryo Pods" - icon_state = "brig" /area/almayer/shipboard/brig/surgery name = "\improper Brig Surgery" - icon_state = "brig" /area/almayer/shipboard/brig/general_equipment name = "\improper Brig General Equipment" - icon_state = "brig" /area/almayer/shipboard/brig/evidence_storage name = "\improper Brig Evidence Storage" - icon_state = "brig" /area/almayer/shipboard/brig/execution name = "\improper Brig Execution Room" - icon_state = "brig" /area/almayer/shipboard/brig/cic_hallway name = "\improper Brig CiC Hallway" - icon_state = "brig" /area/almayer/shipboard/brig/dress name = "\improper CIC Dress Uniform Room" - icon_state = "brig" - /area/almayer/shipboard/brig/processing name = "\improper Brig Processing and Holding" - icon_state = "brig" /area/almayer/shipboard/brig/cells name = "\improper Brig Cells" @@ -393,6 +390,19 @@ icon_state = "starboard" fake_zlevel = 2 // lowerdeck +//new hallways areas + +/area/almayer/hallways/upper + fake_zlevel = 1 // upperdeck + +/area/almayer/hallways/upper/port + name = "\improper Upper Deck Port Hallway" + icon_state = "port" + +/area/almayer/hallways/upper/starboard + name = "\improper Upper Deck Starboard Hallway" + icon_state = "starboard" + /area/almayer/stair_clone name = "\improper Lower Deck Stairs" icon_state = "stairs_lowerdeck" @@ -404,11 +414,38 @@ icon_state = "stairs_upperdeck" fake_zlevel = 1 // upperdeck +// hull areas. + +// lower deck hull areas + /area/almayer/hull/lower_hull name = "\improper Lower Deck Hull" icon_state = "lowerhull" fake_zlevel = 2 // lowerdeck +/area/almayer/hull/lower_hull/stern + name = "\improper Lower Deck Stern Hull" + +/area/almayer/hull/lower_hull/l_f_s + name = "\improper Lower Deck Starboard-Fore Hull" + +/area/almayer/hull/lower_hull/l_m_s + name = "\improper Lower Deck Starboard-Midship Hull" + +/area/almayer/hull/lower_hull/l_a_s + name = "\improper Lower Deck Starboard Hull" + +/area/almayer/hull/lower_hull/l_f_p + name = "\improper Lower Deck Port-Fore Hull" + +/area/almayer/hull/lower_hull/l_m_p + name = "\improper Lower Deck Port-Midship Hull" + +/area/almayer/hull/lower_hull/l_a_p + name = "\improper Lower Deck Port-Aft Hull" + +// upper deck hull areas + /area/almayer/hull/upper_hull name = "\improper Upper Deck Hull" icon_state = "upperhull" @@ -416,51 +453,21 @@ /area/almayer/hull/upper_hull/u_f_s name = "\improper Upper Deck Fore-Starboard Hull" - icon_state = "upperhull" /area/almayer/hull/upper_hull/u_m_s name = "\improper Upper Deck Starboard-Midship Hull" - icon_state = "upperhull" /area/almayer/hull/upper_hull/u_a_s name = "\improper Upper Deck Starboard-Aft Hull" - icon_state = "upperhull" /area/almayer/hull/upper_hull/u_f_p name = "\improper Upper Deck Port-Fore Hull" - icon_state = "upperhull" /area/almayer/hull/upper_hull/u_m_p name = "\improper Upper Deck Port-Midship Hull" - icon_state = "upperhull" /area/almayer/hull/upper_hull/u_a_p name = "\improper Upper Deck Port-Aft Hull" - icon_state = "upperhull" - -/area/almayer/hull/lower_hull/l_f_s - name = "\improper Lower Deck Starboard-Fore Hull" - icon_state = "upperhull" - -/area/almayer/hull/lower_hull/l_m_s - name = "\improper Lower Deck Starboard-Midship Hull" - icon_state = "upperhull" - -/area/almayer/hull/lower_hull/l_a_s - name = "\improper Lower Deck Starboard Hull" - icon_state = "upperhull" - -/area/almayer/hull/lower_hull/l_f_p - name = "\improper Lower Deck Port-Fore Hull" - icon_state = "upperhull" - -/area/almayer/hull/lower_hull/l_m_p - name = "\improper Lower Deck Port-Midship Hull" - icon_state = "upperhull" - -/area/almayer/hull/lower_hull/l_a_p - name = "\improper Lower Deck Port-Aft Hull" - icon_state = "upperhull" /area/almayer/living/cryo_cells name = "\improper Lower Deck Cryo Cells" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 536e29599597..9699db527102 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -79,6 +79,10 @@ var/used_environ = 0 var/used_oneoff = 0 //one-off power usage + /// If this area is outside the game's normal interactivity and should be excluded from things like EOR reports and crew monitors. + /// Doesn't need to be set for areas/Z levels that are marked as admin-only + var/block_game_interaction = FALSE + /area/New() // This interacts with the map loader, so it needs to be set immediately diff --git a/code/game/bioscans.dm b/code/game/bioscans.dm index ff6e00ec430e..5be3c9fbe3fd 100644 --- a/code/game/bioscans.dm +++ b/code/game/bioscans.dm @@ -111,7 +111,7 @@ GLOBAL_DATUM_INIT(bioscan_data, /datum/bioscan_data, new) /datum/bioscan_data/proc/ares_can_bioscan() var/datum/ares_link/link = GLOB.ares_link - if(!istype(link)) + if(!istype(link) || !ares_is_active()) return FALSE if(link.processor_bioscan && !link.processor_bioscan.inoperable()) return TRUE @@ -123,8 +123,8 @@ GLOBAL_DATUM_INIT(bioscan_data, /datum/bioscan_data, new) message_admins("An ARES Bioscan has failed.") var/name = "[MAIN_AI_SYSTEM] Bioscan Status" var/input = "Bioscan failed. \n\nInvestigation into Bioscan subsystem recommended." - log_ares_bioscan(name, input) - if(ares_can_interface()) + log_ares_bioscan(name, input, forced) + if(ares_can_interface() || forced) marine_announcement(input, name, 'sound/misc/interference.ogg', logging = ARES_LOG_NONE) return //Adjust the randomness there so everyone gets the same thing diff --git a/code/game/camera_manager/camera_manager.dm b/code/game/camera_manager/camera_manager.dm new file mode 100644 index 000000000000..93d56aca443c --- /dev/null +++ b/code/game/camera_manager/camera_manager.dm @@ -0,0 +1,235 @@ +#define DEFAULT_MAP_SIZE 15 + +#define RENDER_MODE_TARGET 1 +#define RENDER_MODE_AREA 2 + +/datum/component/camera_manager + var/map_name + var/obj/structure/machinery/camera/current + var/datum/shape/rectangle/current_area + var/atom/movable/screen/map_view/cam_screen + var/atom/movable/screen/background/cam_background + var/list/range_turfs = list() + /// The turf where the camera was last updated. + var/turf/last_camera_turf + var/target_x + var/target_y + var/target_z + var/target_width + var/target_height + var/list/cam_plane_masters + var/isXRay = FALSE + var/render_mode = RENDER_MODE_TARGET + +/datum/component/camera_manager/Initialize() + . = ..() + map_name = "camera_manager_[REF(src)]_map" + cam_screen = new + cam_screen.name = "screen" + cam_screen.assigned_map = map_name + cam_screen.del_on_map_removal = FALSE + cam_screen.screen_loc = "[map_name]:1,1" + cam_background = new + cam_background.assigned_map = map_name + cam_background.del_on_map_removal = FALSE + + cam_plane_masters = list() + for(var/plane in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) + var/atom/movable/screen/plane_master/instance = new plane() + add_plane(instance) + +/datum/component/camera_manager/Destroy(force, ...) + . = ..() + range_turfs = null + current_area = null + cam_plane_masters = null + QDEL_NULL(cam_background) + QDEL_NULL(cam_screen) + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + +/datum/component/camera_manager/proc/add_plane(atom/movable/screen/plane_master/instance) + instance.assigned_map = map_name + instance.del_on_map_removal = FALSE + if(instance.blend_mode_override) + instance.blend_mode = instance.blend_mode_override + instance.screen_loc = "[map_name]:CENTER" + cam_plane_masters["[instance.plane]"] = instance + +/datum/component/camera_manager/proc/register(source, mob/user) + SIGNAL_HANDLER + var/client/user_client = user.client + if(!user_client) + return + user_client.register_map_obj(cam_background) + user_client.register_map_obj(cam_screen) + for(var/plane_id in cam_plane_masters) + user_client.register_map_obj(cam_plane_masters[plane_id]) + +/datum/component/camera_manager/proc/unregister(source, mob/user) + SIGNAL_HANDLER + var/client/user_client = user.client + if(!user_client) + return + user_client.clear_map(cam_background) + user_client.clear_map(cam_screen) + for(var/plane_id in cam_plane_masters) + user_client.clear_map(cam_plane_masters[plane_id]) + +/datum/component/camera_manager/RegisterWithParent() + . = ..() + START_PROCESSING(SSdcs, src) + SEND_SIGNAL(parent, COMSIG_CAMERA_MAPNAME_ASSIGNED, map_name) + RegisterSignal(parent, COMSIG_CAMERA_REGISTER_UI, PROC_REF(register)) + RegisterSignal(parent, COMSIG_CAMERA_UNREGISTER_UI, PROC_REF(unregister)) + RegisterSignal(parent, COMSIG_CAMERA_SET_NVG, PROC_REF(enable_nvg)) + RegisterSignal(parent, COMSIG_CAMERA_CLEAR_NVG, PROC_REF(disable_nvg)) + RegisterSignal(parent, COMSIG_CAMERA_SET_AREA, PROC_REF(set_camera_rect)) + RegisterSignal(parent, COMSIG_CAMERA_SET_TARGET, PROC_REF(set_camera)) + RegisterSignal(parent, COMSIG_CAMERA_CLEAR, PROC_REF(clear_camera)) + +/datum/component/camera_manager/UnregisterFromParent() + . = ..() + STOP_PROCESSING(SSdcs, src) + + UnregisterSignal(parent, COMSIG_CAMERA_REGISTER_UI) + UnregisterSignal(parent, COMSIG_CAMERA_UNREGISTER_UI) + UnregisterSignal(parent, COMSIG_CAMERA_SET_NVG) + UnregisterSignal(parent, COMSIG_CAMERA_CLEAR_NVG) + UnregisterSignal(parent, COMSIG_CAMERA_SET_AREA) + UnregisterSignal(parent, COMSIG_CAMERA_SET_TARGET) + UnregisterSignal(parent, COMSIG_CAMERA_CLEAR) + +/datum/component/camera_manager/proc/clear_camera() + SIGNAL_HANDLER + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current_area = null + current = null + target_x = null + target_y = null + target_z = null + target_width = null + target_height = null + show_camera_static() + +/datum/component/camera_manager/proc/set_camera(source, atom/target, w, h) + SIGNAL_HANDLER + render_mode = RENDER_MODE_TARGET + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current = target + target_width = w + target_height = h + RegisterSignal(current, COMSIG_PARENT_QDELETING, PROC_REF(show_camera_static)) + update_target_camera() + +/datum/component/camera_manager/proc/set_camera_rect(source, x, y, z, w, h) + SIGNAL_HANDLER + render_mode = RENDER_MODE_AREA + if(current) + UnregisterSignal(current, COMSIG_PARENT_QDELETING) + current = null + current_area = RECT(x, y, w, h) + target_x = x + target_y = y + target_z = z + update_area_camera() + +/datum/component/camera_manager/proc/enable_nvg(source, power, matrixcol) + SIGNAL_HANDLER + for(var/plane_id in cam_plane_masters) + var/atom/movable/screen/plane_master/plane = cam_plane_masters["[plane_id]"] + plane.add_filter("nvg", 1, color_matrix_filter(color_matrix_from_string(matrixcol))) + sync_lighting_plane_alpha(LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE) + +/datum/component/camera_manager/proc/disable_nvg() + SIGNAL_HANDLER + for(var/plane_id in cam_plane_masters) + var/atom/movable/screen/plane_master/plane = cam_plane_masters["[plane_id]"] + plane.remove_filter("nvg") + sync_lighting_plane_alpha(LIGHTING_PLANE_ALPHA_VISIBLE) + +/datum/component/camera_manager/proc/sync_lighting_plane_alpha(lighting_alpha) + var/atom/movable/screen/plane_master/lighting/lighting = cam_plane_masters["[LIGHTING_PLANE]"] + if (lighting) + lighting.alpha = lighting_alpha + var/atom/movable/screen/plane_master/lighting/exterior_lighting = cam_plane_masters["[EXTERIOR_LIGHTING_PLANE]"] + if (exterior_lighting) + exterior_lighting.alpha = min(GLOB.minimum_exterior_lighting_alpha, lighting_alpha) + +/** + * Set the displayed camera to the static not-connected. + */ +/datum/component/camera_manager/proc/show_camera_static() + cam_screen.vis_contents.Cut() + last_camera_turf = null + cam_background.icon_state = "scanline2" + cam_background.fill_rect(1, 1, DEFAULT_MAP_SIZE, DEFAULT_MAP_SIZE) + +/datum/component/camera_manager/proc/update_target_camera() + // Show static if can't use the camera + if(!current?.can_use()) + show_camera_static() + return + + // Is this camera located in or attached to a living thing, Vehicle or helmet? If so, assume the camera's loc is the living (or non) thing. + var/cam_location = current + if(isliving(current.loc) || isVehicle(current.loc)) + cam_location = current.loc + else if(istype(current.loc, /obj/item/clothing/head/helmet/marine)) + var/obj/item/clothing/head/helmet/marine/helmet = current.loc + cam_location = helmet.loc + + // If we're not forcing an update for some reason and the cameras are in the same location, + // we don't need to update anything. + // Most security cameras will end here as they're not moving. + var/newturf = get_turf(cam_location) + if(last_camera_turf == newturf) + return + + // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. + last_camera_turf = get_turf(cam_location) + + var/list/visible_things = current.isXRay() ? range(current.view_range, cam_location) : view(current.view_range, cam_location) + render_objects(visible_things) + +/datum/component/camera_manager/proc/update_area_camera() + // Show static if can't use the camera + if(!current_area || !target_z) + show_camera_static() + return + + // If we're not forcing an update for some reason and the cameras are in the same location, + // we don't need to update anything. + // Most security cameras will end here as they're not moving. + var/turf/new_location = locate(target_x, target_y, target_z) + if(last_camera_turf == new_location) + return + + // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. + last_camera_turf = new_location + + var/x_size = current_area.width + var/y_size = current_area.height + var/turf/target = locate(current_area.center_x, current_area.center_y, target_z) + + var/list/visible_things = isXRay ? range("[x_size]x[y_size]", target) : view("[x_size]x[y_size]", target) + src.render_objects(visible_things) + +/datum/component/camera_manager/proc/render_objects(list/visible_things) + var/list/visible_turfs = list() + for(var/turf/visible_turf in visible_things) + visible_turfs += visible_turf + + var/list/bbox = get_bbox_of_atoms(visible_turfs) + var/size_x = bbox[3] - bbox[1] + 1 + var/size_y = bbox[4] - bbox[2] + 1 + + cam_screen.vis_contents = visible_turfs + cam_background.icon_state = "clear" + cam_background.fill_rect(1, 1, size_x, size_y) + +#undef DEFAULT_MAP_SIZE +#undef RENDER_MODE_TARGET +#undef RENDER_MODE_AREA diff --git a/code/game/cas_manager/datums/cas_fire_envelope.dm b/code/game/cas_manager/datums/cas_fire_envelope.dm index 330521f34e36..04cd688194dd 100644 --- a/code/game/cas_manager/datums/cas_fire_envelope.dm +++ b/code/game/cas_manager/datums/cas_fire_envelope.dm @@ -1,7 +1,6 @@ /datum/cas_fire_envelope var/obj/structure/machinery/computer/dropship_weapons/linked_console var/list/datum/cas_fire_mission/missions - var/max_mission_len = 5 var/fire_length var/grace_period //how much time you have after initiating fire mission and before you can't change firemissions var/flyto_period //how much time it takes from sound alarm start to first hit. CAS is vulnerable here @@ -30,35 +29,36 @@ linked_console = null return ..() +/datum/cas_fire_envelope/ui_data(mob/user) + . = list() + .["missions"] = list() + for(var/datum/cas_fire_mission/mission in missions) + .["missions"] += list(mission.ui_data(user)) + + /datum/cas_fire_envelope/proc/get_total_duration() return grace_period+flyto_period+flyoff_period +/datum/cas_fire_envelope/proc/update_weapons(list/obj/structure/dropship_equipment/weapon/weapons) + for(var/datum/cas_fire_mission/mission in missions) + mission.update_weapons(weapons, fire_length) + /datum/cas_fire_envelope/proc/generate_mission(firemission_name, length) - if(!missions || !linked_console || missions.len>max_mission_len || !fire_length) + if(!missions || !linked_console || !fire_length) return null - var/list/obj/structure/dropship_equipment/weapons = list() - for(var/X in linked_console.shuttle_equipments) - var/obj/structure/dropship_equipment/E = X - if(E.is_weapon) - weapons += E + var/shuttle_tag = linked_console.shuttle_tag + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) + for(var/obj/structure/dropship_equipment/equipment as anything in dropship.equipments) + if(equipment.is_weapon) + weapons += equipment var/datum/cas_fire_mission/fm = new() - - if(weapons.len==0) - return null //why bother? - for(var/obj/structure/dropship_equipment/weapon/wp in weapons) - var/datum/cas_fire_mission_record/record = new() - record.weapon = wp - record.offsets = new /list(fire_length) - for(var/idx = 1; idx<=fire_length; idx++) - record.offsets[idx] = "-" - fm.records += record + fm.build_new_record(wp, fire_length) fm.name = firemission_name fm.mission_length = length - missions += fm return fm @@ -67,67 +67,61 @@ mission_error = null if(stat > FIRE_MISSION_STATE_IN_TRANSIT && stat < FIRE_MISSION_STATE_COOLDOWN) mission_error = "Fire Mission is under way already." - return 0 + return FIRE_MISSION_NOT_EXECUTABLE if(!missions[mission_id]) - return -1 + return FIRE_MISSION_NOT_EXECUTABLE var/datum/cas_fire_mission/mission = missions[mission_id] if(!mission) - return -1 - if(!mission.records[weapon_id]) - return -1 - var/datum/cas_fire_mission_record/fmr = mission.records[weapon_id] + return FIRE_MISSION_NOT_EXECUTABLE + + var/datum/cas_fire_mission_record/fmr = mission.record_for_weapon(weapon_id) + if(!fmr) + return FIRE_MISSION_NOT_EXECUTABLE if(!fmr.offsets || isnull(fmr.offsets[offset_step])) - return -1 + return FIRE_MISSION_NOT_EXECUTABLE var/old_offset = fmr.offsets[offset_step] + if(offset == null) + offset = "-" fmr.offsets[offset_step] = offset var/check_result = mission.check(linked_console) if(check_result == FIRE_MISSION_CODE_ERROR) - return -1 + return FIRE_MISSION_NOT_EXECUTABLE if(check_result == FIRE_MISSION_ALL_GOOD) - return 1 + return FIRE_MISSION_ALL_GOOD if(check_result == FIRE_MISSION_WEAPON_OUT_OF_AMMO) - return 1 + return FIRE_MISSION_ALL_GOOD mission_error = mission.error_message(check_result) if(skip_checks) - return 0 + return FIRE_MISSION_ALL_GOOD //we have mission error. Fill the thing and restore previous state fmr.offsets[offset_step] = old_offset - return 0 + return FIRE_MISSION_ALL_GOOD -/datum/cas_fire_envelope/proc/execute_firemission(datum/cas_signal/target_turf, offset, dir, mission_id) - if(!istype(target_turf)) - mission_error = "No target." - return 0 +/datum/cas_fire_envelope/proc/execute_firemission(datum/cas_signal/signal, target_turf,dir, mission_id) if(stat != FIRE_MISSION_STATE_IDLE) mission_error = "Fire Mission is under way already." - return 0 + return FIRE_MISSION_NOT_EXECUTABLE if(!missions[mission_id]) - return -1 - if(offset<0) - mission_error = "Can't have negative offsets." - return 0 - if(offset>max_offset) - mission_error = "[max_offset] is the maximum possible offset." - return 0 + return FIRE_MISSION_NOT_EXECUTABLE if(dir!=NORTH && dir!=SOUTH && dir!=WEST && dir!=EAST) mission_error = "Incorrect direction." - return 0 + return FIRE_MISSION_BAD_DIRECTION mission_error = null var/datum/cas_fire_mission/mission = missions[mission_id] var/check_result = mission.check(linked_console) if(check_result == FIRE_MISSION_CODE_ERROR) - return -1 + return FIRE_MISSION_CODE_ERROR if(check_result != FIRE_MISSION_ALL_GOOD) mission_error = mission.error_message(check_result) - return 0 + return FIRE_MISSION_CODE_ERROR //actual firemission code - execute_firemission_unsafe(target_turf, offset, dir, mission) - return 1 + execute_firemission_unsafe(signal, target_turf, dir, mission) + return FIRE_MISSION_ALL_GOOD /datum/cas_fire_envelope/proc/firemission_status_message() switch(stat) @@ -167,6 +161,7 @@ if(!guidance) guidance = new /obj/effect/firemission_guidance() guidance.forceMove(location) + guidance.updateCameras(linked_console) /datum/cas_fire_envelope/proc/user_is_guided(user) return guidance && (user in guidance.users) @@ -183,7 +178,6 @@ guidance.users += user RegisterSignal(user, COMSIG_MOB_RESISTED, PROC_REF(exit_cam_resist)) - /datum/cas_fire_envelope/proc/apply_upgrade(user) var/mob/M = user if(linked_console.upgraded == MATRIX_NVG) @@ -193,8 +187,6 @@ M.overlay_fullscreen("matrix", /atom/movable/screen/fullscreen/flash/noise/nvg) M.lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE M.sync_lighting_plane_alpha() - else if (linked_console.upgraded == MATRIX_WIDE) - M.client?.change_view(linked_console.power + 5, M) /datum/cas_fire_envelope/proc/remove_upgrades(user) @@ -221,6 +213,7 @@ remove_upgrades(user) guidance.users -= user UnregisterSignal(user, COMSIG_MOB_RESISTED) + guidance.clearCameras(linked_console) /datum/cas_fire_envelope/proc/exit_cam_resist(mob/user) SIGNAL_HANDLER @@ -231,54 +224,36 @@ /datum/cas_fire_envelope/proc/check_firemission_loc(datum/cas_signal/target_turf) return TRUE //redefined in child class -/datum/cas_fire_envelope/proc/execute_firemission_unsafe(datum/cas_signal/target_turf, offset, dir, datum/cas_fire_mission/mission) - var/sx = 0 - var/sy = 0 - - recorded_dir = dir - recorded_offset = offset - +/** + * Execute firemission. + */ +/datum/cas_fire_envelope/proc/execute_firemission_unsafe(datum/cas_signal/signal, turf/target_turf, dir, datum/cas_fire_mission/mission) stat = FIRE_MISSION_STATE_IN_TRANSIT + to_chat(usr, SPAN_ALERT("Firemission underway!")) sleep(grace_period) stat = FIRE_MISSION_STATE_ON_TARGET - switch(recorded_dir) - if(NORTH) //default direction - sx = 0 - sy = 1 - if(SOUTH) - sx = 0 - sy = -1 - if(EAST) - sx = 1 - sy = 0 - if(WEST) - sx = -1 - sy = 0 if(!target_turf) stat = FIRE_MISSION_STATE_IDLE mission_error = "Target Lost." return - var/turf/tt_turf = get_turf(target_turf.signal_loc) - if(!tt_turf || !check_firemission_loc(target_turf)) + if(!target_turf || !check_firemission_loc(signal)) stat = FIRE_MISSION_STATE_IDLE mission_error = "Target is off bounds or obstructed." return - var/turf/shootloc = locate(tt_turf.x + sx*recorded_offset, tt_turf.y + sy*recorded_offset,tt_turf.z) - if(!shootloc || !istype(shootloc)) - stat = FIRE_MISSION_STATE_IDLE - mission_error = "Target is off bounds." - return - change_current_loc(shootloc) - playsound(shootloc, soundeffect, 70, TRUE, 50) + change_current_loc(target_turf) + playsound(target_turf, soundeffect, 70, TRUE, 50) sleep(flyto_period) stat = FIRE_MISSION_STATE_FIRING - mission.execute_firemission(linked_console, shootloc, recorded_dir, fire_length, step_delay, src) + mission.execute_firemission(linked_console, target_turf, dir, fire_length, step_delay, src) stat = FIRE_MISSION_STATE_OFF_TARGET sleep(flyoff_period) stat = FIRE_MISSION_STATE_COOLDOWN sleep(cooldown_period) stat = FIRE_MISSION_STATE_IDLE +/** + * Change attack vector for firemission + */ /datum/cas_fire_envelope/proc/change_direction(new_dir) if(stat > FIRE_MISSION_STATE_IN_TRANSIT) mission_error = "Fire Mission is under way already." @@ -346,13 +321,13 @@ /obj/structure/machinery/computer/dropship_weapons/proc/update_mission(mission_id, weapon_id, offset_step, offset) var/result = firemission_envelope.update_mission(mission_id, weapon_id, offset_step, offset) - if(result<1) + if(result != FIRE_MISSION_ALL_GOOD) return firemission_envelope.mission_error return "OK" // Used in the simulation room for firemission testing. /obj/structure/machinery/computer/dropship_weapons/proc/execute_firemission(obj/location, offset, dir, mission_id) var/result = firemission_envelope.execute_firemission(get_turf(location), offset, dir, mission_id) - if(result<1) + if(result != FIRE_MISSION_ALL_GOOD) return firemission_envelope.mission_error return "OK" diff --git a/code/game/cas_manager/datums/cas_fire_mission.dm b/code/game/cas_manager/datums/cas_fire_mission.dm index cb43caec30bb..ece78042ac25 100644 --- a/code/game/cas_manager/datums/cas_fire_mission.dm +++ b/code/game/cas_manager/datums/cas_fire_mission.dm @@ -1,17 +1,83 @@ /obj/effect/firemission_guidance invisibility = 101 - var/list/users + var/list/mob/users + var/camera_width = 11 + var/camera_height = 11 + var/view_range = 7 /obj/effect/firemission_guidance/New() ..() users = list() +/obj/effect/firemission_guidance/Destroy(force) + . = ..() + users = null + +/obj/effect/firemission_guidance/proc/can_use() + return TRUE + +/obj/effect/firemission_guidance/proc/isXRay() + return FALSE + +/obj/effect/firemission_guidance/proc/updateCameras(atom/target) + SEND_SIGNAL(target, COMSIG_CAMERA_SET_TARGET, src, camera_width, camera_height) + +/obj/effect/firemission_guidance/proc/clearCameras(atom/target) + SEND_SIGNAL(target, COMSIG_CAMERA_CLEAR) + /datum/cas_fire_mission var/mission_length = 3 //can be 3,4,6 or 12 var/list/datum/cas_fire_mission_record/records = list() var/obj/structure/dropship_equipment/weapon/error_weapon var/name = "Unnamed Firemission" +/datum/cas_fire_mission/ui_data(mob/user) + . = list() + .["name"] = sanitize(copytext(name, 1, MAX_MESSAGE_LEN)) + .["records"] = list() + for(var/datum/cas_fire_mission_record/record as anything in records) + .["records"] += list(record.ui_data(user)) + +/datum/cas_fire_mission/proc/build_new_record(obj/structure/dropship_equipment/weapon/weap, fire_length) + var/datum/cas_fire_mission_record/record = new() + record.weapon = weap + record.offsets = new /list(fire_length) + for(var/idx = 1; idx<=fire_length; idx++) + record.offsets[idx] = "-" + records += record + +/datum/cas_fire_mission/proc/update_weapons(list/obj/structure/dropship_equipment/weapon/weapons, fire_length) + var/list/datum/cas_fire_mission_record/bad_records = list() + var/list/obj/structure/dropship_equipment/weapon/missing_weapons = list() + for(var/datum/cas_fire_mission_record/record in records) + // if weapon appears in weapons list but not in record + // > add empty record for new weapon + var/found = FALSE + for(var/obj/structure/dropship_equipment/weapon/weap in weapons) + if(record.weapon == weap) + found=TRUE + break + if(!found) + bad_records.Add(record) + for(var/obj/structure/dropship_equipment/weapon/weap in weapons) + var/found = FALSE + for(var/datum/cas_fire_mission_record/record in records) + if(record.weapon == weap) + found=TRUE + break + if(!found) + missing_weapons.Add(weap) + for(var/datum/cas_fire_mission_record/record in bad_records) + records -= record + for(var/obj/structure/dropship_equipment/weapon/weap in missing_weapons) + build_new_record(weap, fire_length) + +/datum/cas_fire_mission/proc/record_for_weapon(weapon_id) + for(var/datum/cas_fire_mission_record/record as anything in records) + if(record.weapon.ship_base.attach_id == weapon_id) + return record + return null + /datum/cas_fire_mission/proc/check(obj/structure/machinery/computer/dropship_weapons/linked_console) error_weapon = null if(records.len == 0) @@ -165,7 +231,7 @@ var/step = 1 for(step = 1; step<=steps; step++) if(step > next_step) - current_turf = get_step(current_turf,direction) + current_turf = get_step(current_turf, direction) next_step += tally_step if(envelope) envelope.change_current_loc(current_turf) diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index 55452972cc3f..c017733de7fd 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -350,7 +350,7 @@ Additional game mode variables. if(cur_xeno.aghosted) continue //aghosted xenos don't count var/area/area = get_area(cur_xeno) - if(is_admin_level(cur_xeno.z) && (!area || !(area.flags_area & AREA_ALLOW_XENO_JOIN))) + if(should_block_game_interaction(cur_xeno) && (!area || !(area.flags_area & AREA_ALLOW_XENO_JOIN))) continue //xenos on admin z level don't count if(!istype(cur_xeno)) continue @@ -734,8 +734,6 @@ Additional game mode variables. to_chat(new_queen, "You should start by building a hive core.") to_chat(new_queen, "Talk in Hivemind using ; (e.g. ';Hello my children!')") - // Xeno ressource collection - //new_queen.crystal_stored = XENO_STARTING_CRYSTAL new_queen.update_icons() //===================================================\\ diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index bc5d6b69228c..f64c2432486b 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -329,7 +329,7 @@ var/datum/hive_status/HS for(var/HN in GLOB.hive_datum) HS = GLOB.hive_datum[HN] - if(HS.living_xeno_queen && !is_admin_level(HS.living_xeno_queen.loc.z)) + if(HS.living_xeno_queen && !should_block_game_interaction(HS.living_xeno_queen.loc)) //Some Queen is alive, we shouldn't end the game yet return round_finished = MODE_INFESTATION_M_MINOR diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm index 6e2738a83788..1ec07b9d8fec 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost/whiskey_output_waves.dm @@ -32,7 +32,7 @@ for(var/mob/living/carbon/xenomorph/X as anything in GLOB.living_xeno_list) var/area/A = get_area(X) - if(is_admin_level(X.z) && (!A || !(A.flags_area & AREA_ALLOW_XENO_JOIN)) || X.aghosted) continue //xenos on admin z level and aghosted ones don't count + if(should_block_game_interaction(X) && (!A || !(A.flags_area & AREA_ALLOW_XENO_JOIN)) || X.aghosted) continue //xenos on admin z level and aghosted ones don't count if(istype(X) && !X.client) if((X.away_timer >= XENO_LEAVE_TIMER) || (islarva(X) && X.away_timer >= XENO_LEAVE_TIMER_LARVA)) available_xenos += X diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 56decd8f0c02..094b899c1691 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -237,32 +237,10 @@ if(!istype(NP)) return - NP.spawning = TRUE - NP.close_spawn_windows() - var/mob/living/carbon/human/new_character = new(NP.loc) new_character.lastarea = get_area(NP.loc) - NP.client.prefs.copy_all_to(new_character, title) - - if (NP.client.prefs.be_random_body) - var/datum/preferences/TP = new() - TP.randomize_appearance(new_character) - - new_character.job = NP.job - new_character.name = NP.real_name - new_character.voice = NP.real_name - - if(NP.mind) - NP.mind_initialize() - NP.mind.transfer_to(new_character, TRUE) - NP.mind.setup_human_stats() - - // Update the character icons - // This is done in set_species when the mob is created as well, but - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, regenerate_icons)) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_body), 1, 0) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair)) + setup_human(new_character, NP) return new_character diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index 06b082e3c5e2..ffcea5406856 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -77,6 +77,12 @@ GLOBAL_LIST_INIT(maintenance_categories, list( // ------ ARES Logging Procs ------ // +/proc/ares_is_active() + for(var/mob/living/silicon/decoy/ship_ai/ai in GLOB.ai_mob_list) + if(ai.stat == DEAD) + return FALSE //ARES dead, most other systems also die with it + return TRUE + /proc/ares_apollo_talk(broadcast_message) var/datum/language/apollo/apollo = GLOB.all_languages[LANGUAGE_APOLLO] for(var/mob/living/silicon/decoy/ship_ai/ai in GLOB.ai_mob_list) @@ -89,33 +95,38 @@ GLOBAL_LIST_INIT(maintenance_categories, list( /proc/ares_can_interface() var/obj/structure/machinery/ares/processor/interface/processor = GLOB.ares_link.processor_interface - if(!istype(GLOB.ares_link)) + if(!istype(GLOB.ares_link) || !ares_is_active()) return FALSE if(processor && !processor.inoperable()) return TRUE return FALSE //interface processor not found or is broken /proc/ares_can_log() - if(!istype(GLOB.ares_link) || !istype(GLOB.ares_datacore)) + if(!istype(GLOB.ares_link) || !istype(GLOB.ares_datacore) || !ares_is_active()) return FALSE var/obj/structure/machinery/ares/cpu/central_processor = GLOB.ares_link.central_processor if(central_processor && !central_processor.inoperable()) return TRUE return FALSE //CPU not found or is broken -/proc/log_ares_apollo(speaker, message) - if(!ares_can_log()) +/proc/ares_can_apollo() + if(!istype(GLOB.ares_link) || !istype(GLOB.ares_datacore) || !ares_is_active()) return FALSE var/datum/ares_link/link = GLOB.ares_link if(!link.processor_apollo || link.processor_apollo.inoperable()) return FALSE + return TRUE + +/proc/log_ares_apollo(speaker, message) + if(!ares_can_log() || !ares_can_apollo()) + return FALSE if(!speaker) speaker = "Unknown" var/datum/ares_datacore/datacore = GLOB.ares_datacore datacore.apollo_log.Add("[worldtime2text()]: [speaker], '[message]'") -/proc/log_ares_bioscan(title, input) - if(!ares_can_log()) +/proc/log_ares_bioscan(title, input, forced = FALSE) + if(!ares_can_log() && !forced) return FALSE var/datum/ares_datacore/datacore = GLOB.ares_datacore datacore.records_bioscan.Add(new /datum/ares_record/bioscan(title, input)) @@ -225,6 +236,13 @@ GLOBAL_LIST_INIT(maintenance_categories, list( conversation.conversation += "[MAIN_AI_SYSTEM] at [worldtime2text()], '[text]'" // ------ End ARES Interface Procs ------ // +/proc/ares_final_words() + //APOLLO + ares_apollo_talk("APOLLO sub-system shutting down. STOP CODE: 0x000000f4|CRITICAL_PROCESS_DIED") + + //GENERAL CREW + shipwide_ai_announcement("A Problem has been detected and the [MAIN_AI_SYSTEM] system has been shutdown. \nTechnical Information: \n\n*** STOP CODE: 0x000000f4|CRITICAL_PROCESS_DIED\n\nPossible caused by: Rapid Unscheduled Disassembly\nContact an AI Service Technician for further assistance.", title = ":(", ares_logging = null) + /obj/structure/machinery/computer/working_joe/get_ares_access(obj/item/card/id/card) if(ACCESS_ARES_DEBUG in card.access) return APOLLO_ACCESS_DEBUG diff --git a/code/game/machinery/ARES/ARES_step_triggers.dm b/code/game/machinery/ARES/ARES_step_triggers.dm index fdf7b26b2e65..2c6d605bcc9b 100644 --- a/code/game/machinery/ARES/ARES_step_triggers.dm +++ b/code/game/machinery/ARES/ARES_step_triggers.dm @@ -69,7 +69,7 @@ broadcast_message = "ALERT: Unauthorized movement detected in [area_name]!" var/datum/ares_link/link = GLOB.ares_link - if(link.processor_apollo.inoperable()) + if(!ares_can_apollo()) return FALSE to_chat(passer, SPAN_BOLDWARNING("You hear a soft beeping sound as you cross the threshold.")) @@ -154,7 +154,7 @@ var/broadcast_message = get_broadcast(passer, idcard, failure) var/datum/ares_link/link = GLOB.ares_link - if(link.processor_apollo.inoperable()) + if(!ares_can_apollo()) return FALSE to_chat(passer, SPAN_BOLDWARNING("You hear a harsh buzzing sound as you cross the threshold!")) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index b9ea018ba98f..190d51d3f7b8 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -4,7 +4,7 @@ /mob/living/silicon/ai/proc/InvalidTurf(turf/T as turf) if(!T) return 1 - if(is_admin_level(T.z)) + if(should_block_game_interaction(T)) return 1 if(T.z > 6) return 1 diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm index ca8c8b2f1a34..1a00e194b5eb 100644 --- a/code/game/machinery/computer/camera_console.dm +++ b/code/game/machinery/computer/camera_console.dm @@ -40,8 +40,6 @@ instance.del_on_map_removal = FALSE if(instance.blend_mode_override) instance.blend_mode = instance.blend_mode_override - if(istype(instance, /atom/movable/screen/plane_master/lighting)) - instance.add_filter("awooga", 1, color_matrix_filter(color_matrix_from_string("#90ee90"))) instance.screen_loc = "[map_name]:CENTER" cam_plane_masters += instance @@ -71,7 +69,7 @@ return attack_hand(user) /obj/structure/machinery/computer/cameras/attack_hand(mob/user) - if(!admin_console && is_admin_level(z)) + if(!admin_console && should_block_game_interaction(src)) to_chat(user, SPAN_DANGER("Unable to establish a connection: \black You're too far away from the ship!")) return if(inoperable()) diff --git a/code/game/machinery/computer/demo_sim.dm b/code/game/machinery/computer/demo_sim.dm index 15261cfc8f4b..f633e8f351d4 100644 --- a/code/game/machinery/computer/demo_sim.dm +++ b/code/game/machinery/computer/demo_sim.dm @@ -55,7 +55,6 @@ var/list/data = list() data["configuration"] = configuration - data["looking"] = simulation.looking_at_simulation data["dummy_mode"] = simulation.dummy_mode data["worldtime"] = world.time @@ -104,8 +103,7 @@ /obj/structure/machinery/computer/demo_sim/ui_close(mob/user) . = ..() - if(simulation.looking_at_simulation) - simulation.stop_watching(user) + simulation.stop_watching(user) // DEMOLITIONS TGUI SHIT END \\ diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm index d86b9fc28a28..db376c40029c 100644 --- a/code/game/machinery/computer/dropship_weapons.dm +++ b/code/game/machinery/computer/dropship_weapons.dm @@ -11,7 +11,6 @@ exproof = TRUE var/shuttle_tag // Used to know which shuttle we're linked to. var/obj/structure/dropship_equipment/selected_equipment //the currently selected equipment installed on the shuttle this console controls. - var/list/shuttle_equipments = list() //list of the equipments on the shuttle this console controls var/cavebreaker = FALSE //ignore caves and other restrictions? var/datum/cas_fire_envelope/firemission_envelope var/datum/cas_fire_mission/selected_firemission @@ -25,15 +24,41 @@ var/datum/simulator/simulation var/datum/cas_fire_mission/configuration + // groundside maps + var/datum/tacmap/tacmap + var/minimap_type = MINIMAP_FLAG_USCM + + // Cameras + var/camera_target_id + var/camera_width = 11 + var/camera_height = 11 + var/camera_map_name + + var/registered = FALSE + /obj/structure/machinery/computer/dropship_weapons/Initialize() . = ..() simulation = new() + tacmap = new(src, minimap_type) + + RegisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED, PROC_REF(camera_mapname_update)) + + // camera setup + AddComponent(/datum/component/camera_manager) + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) /obj/structure/machinery/computer/dropship_weapons/New() ..() if(firemission_envelope) firemission_envelope.linked_console = src +/obj/structure/machinery/computer/dropship_weapons/proc/camera_mapname_update(source, value) + camera_map_name = value + +/obj/structure/machinery/computer/dropship_weapons/Destroy() + . = ..() + UnregisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED) + /obj/structure/machinery/computer/dropship_weapons/attack_hand(mob/user) if(..()) return @@ -43,7 +68,7 @@ to_chat(user, SPAN_WARNING("Weapons modification access denied, attempting to launch simulation.")) if(!selected_firemission) - to_chat(usr, SPAN_WARNING("Firemission must be selected before attempting to run the simulation")) + to_chat(user, SPAN_WARNING("Firemission must be selected before attempting to run the simulation")) return tgui_interact(user) @@ -54,139 +79,41 @@ /obj/structure/machinery/computer/dropship_weapons/attackby(obj/item/W, mob/user as mob) if(istype(W, /obj/item/frame/matrix_frame)) - var/obj/item/frame/matrix_frame/MATRIX = W - if(MATRIX.state == ASSEMBLY_LOCKED) + var/obj/item/frame/matrix_frame/matrix = W + if(matrix.state == ASSEMBLY_LOCKED) user.drop_held_item(W, src) W.forceMove(src) to_chat(user, SPAN_NOTICE("You swap the matrix in the dropship guidance camera system, destroying the older part in the process")) - upgraded = MATRIX.upgrade - matrixcol = MATRIX.matrixcol - power = MATRIX.power + upgraded = matrix.upgrade + matrixcol = matrix.matrixcol + power = matrix.power else to_chat(user, SPAN_WARNING("Matrix is not complete!")) +/obj/structure/machinery/computer/dropship_weapons/proc/equipment_update(obj/docking_port/mobile/marine_dropship/dropship) + SIGNAL_HANDLER + var/list/obj/structure/dropship_equipment/weapons = list() + for(var/obj/structure/dropship_equipment/weapon/weap as anything in dropship.equipments) + weapons.Add(weap) + firemission_envelope.update_weapons(weapons) + /obj/structure/machinery/computer/dropship_weapons/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 0) - var/data[0] var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) if (!istype(dropship)) return - var/shuttle_state - switch(dropship.mode) - if(SHUTTLE_IDLE) - shuttle_state = "idle" - if(SHUTTLE_IGNITING) - shuttle_state = "warmup" - if(SHUTTLE_CALL) - shuttle_state = "in_transit" - if(SHUTTLE_CRASHED) - shuttle_state = "crashed" - - - var/list/equipment_data = list() - var/list/targets_data = list() - var/list/firemission_data = list() - var/list/firemission_edit_data = list() - var/list/firemission_edit_timeslices = list() - - for(var/ts = 1; ts<=firemission_envelope.fire_length; ts++) - firemission_edit_timeslices += ts - - var/current_mission_error = null - if(!faction) - return //no faction, no weapons - - var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] - - if(!cas_group) - return //broken group. No fighting - - for(var/X in cas_group.cas_signals) - var/datum/cas_signal/LT = X - if(!istype(LT) || !LT.valid_signal()) - continue - var/area/laser_area = get_area(LT.signal_loc) - targets_data += list(list("target_name" = "[LT.name] ([laser_area.name])", "target_tag" = LT.target_id)) - shuttle_equipments = dropship.equipments - var/element_nbr = 1 - for(var/X in dropship.equipments) - var/obj/structure/dropship_equipment/E = X - equipment_data += list(list("name"= sanitize(copytext(E.name,1,MAX_MESSAGE_LEN)), "eqp_tag" = element_nbr, "is_weapon" = E.is_weapon, "is_interactable" = E.is_interactable)) - element_nbr++ - E.linked_console = src - - - var/selected_eqp_name = "" - var/selected_eqp_ammo_name = "" - var/selected_eqp_ammo_amt = 0 - var/selected_eqp_max_ammo_amt = 0 var/screen_mode = 0 - var/fm_length = 0 - var/fm_offset = 0 - var/fm_direction = "" - var/fm_step_text = "" - var/firemission_signal - var/firemission_stat = 0 - if(selected_equipment) - selected_eqp_name = sanitize(copytext(selected_equipment.name,1,MAX_MESSAGE_LEN)) - if(selected_equipment.ammo_equipped) - selected_eqp_ammo_name = sanitize(copytext(selected_equipment.ammo_equipped.name,1,MAX_MESSAGE_LEN)) - selected_eqp_ammo_amt = selected_equipment.ammo_equipped.ammo_count - selected_eqp_max_ammo_amt = selected_equipment.ammo_equipped.max_ammo_count - screen_mode = selected_equipment.screen_mode - - var/firemission_id = 1 - var/found_selected = FALSE if(firemission_envelope) - firemission_stat = firemission_envelope.stat - fm_step_text = firemission_envelope.firemission_status_message() - for(var/datum/cas_fire_mission/X in firemission_envelope.missions) - if(!istype(X)) - continue //the fuck - var/error_code = X.check(src) - - var/selected = X == selected_firemission - if(error_code != FIRE_MISSION_ALL_GOOD && selected) - selected = FALSE - selected_firemission = null - var/can_edit = error_code != FIRE_MISSION_CODE_ERROR && !selected - - if(selected) - found_selected = TRUE - var/can_interact = firemission_envelope.stat == FIRE_MISSION_STATE_IDLE && error_code == FIRE_MISSION_ALL_GOOD - firemission_data += list(list("name"= sanitize(copytext(X.name,1,MAX_MESSAGE_LEN)), "mission_tag" = firemission_id, "can_edit" = can_edit, "can_interact" = can_interact, "selected" = selected)) - firemission_id++ - if(!istype(editing_firemission)) editing_firemission = null - //the fuck if(editing_firemission) var/error_code = editing_firemission.check(src) var/can_edit = error_code != FIRE_MISSION_CODE_ERROR - if(error_code != FIRE_MISSION_ALL_GOOD) - current_mission_error = editing_firemission.error_message(error_code) - else - current_mission_error = null if(!can_edit) editing_firemission = null //abort - else - screen_mode = 2 - for(var/datum/cas_fire_mission_record/firerec in editing_firemission.records) - var/gimbal = firerec.get_offsets() - var/ammo = firerec.get_ammo() - var/offsets = new /list(firerec.offsets.len) - for(var/idx = 1; idx < firerec.offsets.len; idx++) - offsets[idx] = firerec.offsets[idx] == null ? "-" : firerec.offsets[idx] - firemission_edit_data += list(list("name" = sanitize(copytext(firerec.weapon.name, 1, 50)), "ammo" = ammo, "gimbal" = gimbal, "offsets" = firerec.offsets)) - - if(!found_selected) - selected_firemission = null - - if(editing_firemission) - fm_length = editing_firemission.mission_length if((screen_mode != 0 && in_firemission_mode) || !selected_firemission) in_firemission_mode = FALSE @@ -196,497 +123,662 @@ selected_firemission = null if(selected_firemission && in_firemission_mode) screen_mode = 3 - fm_offset = firemission_envelope.recorded_offset - fm_direction = dir2text(firemission_envelope.recorded_dir) if(firemission_envelope.recorded_loc && (!firemission_envelope.recorded_loc.signal_loc || !firemission_envelope.recorded_loc.signal_loc:loc)) firemission_envelope.recorded_loc = null - firemission_signal = firemission_envelope.recorded_loc?firemission_envelope.recorded_loc.get_name() : "NOT SELECTED" - if(!fm_direction) - fm_direction = "NOT SELECTED" - - if(screen_mode != 3 || !selected_firemission || shuttle_state != "in_transit") - update_location(null) - // /if(firemission_envelope) - - data = list( - "shuttle_state" = shuttle_state, - "fire_mission_enabled" = dropship.in_flyby, - "equipment_data" = equipment_data, - "targets_data" = targets_data, - "selected_eqp" = selected_eqp_name, - "selected_eqp_ammo_name" = selected_eqp_ammo_name, - "selected_eqp_ammo_amt" = selected_eqp_ammo_amt, - "selected_eqp_max_ammo_amt" = selected_eqp_max_ammo_amt, - "screen_mode" = screen_mode, - "firemission_data" = firemission_data, - "editing_firemission" = editing_firemission, - "editing_firemission_length" = fm_length, - "firemission_edit_data" = firemission_edit_data, - "current_mission_error" = current_mission_error, - "firemission_edit_timeslices" = firemission_edit_timeslices, - "has_firemission" = !!firemission_envelope, - "can_firemission" = !!selected_firemission && shuttle_state == "in_transit", - "can_launch_firemission" = !!selected_firemission && shuttle_state == "in_transit" && firemission_stat != FIRE_MISSION_STATE_IDLE, - //firemission related stuff - "firemission_name" = (selected_firemission ? selected_firemission.name : ""), - "firemission_selected_laser" = firemission_signal, - "firemission_offset" = fm_offset, - "firemission_direction" = fm_direction, - "firemission_message" = fm_step_text, - "firemission_step" = firemission_stat, - ) + if(screen_mode != 3 || !selected_firemission || dropship.mode != SHUTTLE_CALL) + update_location(user, null) + + ui_data(user) + if(!tacmap.map_holder) + var/level = SSmapping.levels_by_trait(tacmap.targeted_ztrait) + tacmap.map_holder = SSminimaps.fetch_tacmap_datum(level[1], tacmap.allowed_flags) + user.client.register_map_obj(tacmap.map_holder.map) + tgui_interact(user) - ui = SSnano.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) +/obj/structure/machinery/computer/dropship_weapons/tgui_interact(mob/user, datum/tgui/ui) + if(!registered) + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) + RegisterSignal(dropship, COMSIG_DROPSHIP_ADD_EQUIPMENT, PROC_REF(equipment_update)) + RegisterSignal(dropship, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, PROC_REF(equipment_update)) + registered=TRUE + ui = SStgui.try_update_ui(user, src, ui) if (!ui) - ui = new(user, src, ui_key, "dropship_weapons_console.tmpl", "Weapons Control", 800, 600) - ui.set_initial_data(data) + SEND_SIGNAL(src, COMSIG_CAMERA_REGISTER_UI, user) + ui = new(user, src, "DropshipWeaponsConsole", "Weapons Console") ui.open() - ui.set_auto_update(1) -/obj/structure/machinery/computer/dropship_weapons/Topic(href, href_list) - if(..()) - return +/obj/structure/machinery/computer/dropship_weapons/ui_close(mob/user) + . = ..() + SEND_SIGNAL(src, COMSIG_CAMERA_UNREGISTER_UI, user) + simulation.stop_watching(user) + +/obj/structure/machinery/computer/dropship_weapons/ui_status(mob/user, datum/ui_state/state) + . = ..() + if(inoperable()) + return UI_CLOSE + if(!faction) + return UI_CLOSE + + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + if(!cas_group) + return UI_CLOSE + +/obj/structure/machinery/computer/dropship_weapons/ui_state(mob/user) + return GLOB.not_incapacitated_and_adjacent_strict_state - add_fingerprint(usr) +/obj/structure/machinery/computer/dropship_weapons/ui_static_data(mob/user) + . = list() + .["tactical_map_ref"] = tacmap.map_holder.map_ref + .["camera_map_ref"] = camera_map_name +/obj/structure/machinery/computer/dropship_weapons/ui_data(mob/user) + . = list() var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) if (!istype(dropship)) return - if(href_list["equip_interact"]) - var/base_tag = text2num(href_list["equip_interact"]) - var/obj/structure/dropship_equipment/E = shuttle_equipments[base_tag] - E.linked_console = src - E.equipment_interact(usr) - - if(href_list["open_fire"]) - var/targ_id = text2num(href_list["open_fire"]) - var/mob/M = usr - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.allow_gun_usage) - to_chat(H, SPAN_WARNING("Your programming prevents you from operating dropship weaponry!")) - return - var/obj/structure/dropship_equipment/weapon/DEW = selected_equipment - if(!selected_equipment || !selected_equipment.is_weapon) - to_chat(usr, SPAN_WARNING("No weapon selected.")) - return - if(!skillcheck(M, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("You don't have the training to fire this weapon!")) - return + var/datum/cas_signal/sig = get_cas_signal(camera_target_id) + if(camera_target_id && !sig) + set_camera_target(null) - if(!faction) - return //no faction, no weapons - - var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] - - if(!cas_group) - return //broken group. No fighting - - for(var/X in cas_group.cas_signals) - var/datum/cas_signal/LT = X - if(LT.target_id == targ_id && LT.valid_signal()) - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Dropship can only fire while in flight.")) - return - if(dropship.door_override) - return - if(!selected_equipment || !selected_equipment.is_weapon) - to_chat(usr, SPAN_WARNING("No weapon selected.")) - return - DEW = selected_equipment // for if the weapon somehow changes - if(!skillcheck(M, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("You don't have the training to fire this weapon!")) - return - if(!dropship.in_flyby && DEW.fire_mission_only) - to_chat(usr, SPAN_WARNING("[DEW] requires a fire mission flight type to be fired.")) - return - - if(!DEW.ammo_equipped || DEW.ammo_equipped.ammo_count <= 0) - to_chat(usr, SPAN_WARNING("[DEW] has no ammo.")) - return - if(DEW.last_fired > world.time - DEW.firing_delay) - to_chat(usr, SPAN_WARNING("[DEW] just fired, wait for it to cool down.")) - return - if(!LT.signal_loc) - return - var/turf/TU = get_turf(LT.signal_loc) - var/area/targ_area = get_area(LT.signal_loc) - var/is_outside = FALSE - if(is_ground_level(TU.z)) - switch(targ_area.ceiling) - if(CEILING_NONE) - is_outside = TRUE - if(CEILING_GLASS) - is_outside = TRUE - if(!is_outside && !cavebreaker) //cavebreaker doesn't care - to_chat(usr, SPAN_WARNING("INVALID TARGET: target must be visible from high altitude.")) - return - if (protected_by_pylon(TURF_PROTECTION_CAS, TU)) - to_chat(usr, SPAN_WARNING("INVALID TARGET: biological-pattern interference with signal.")) - return - if(!DEW.ammo_equipped.can_fire_at(TU, usr)) - return - - DEW.open_fire(LT.signal_loc) - break - - if(href_list["deselect"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - selected_equipment = null + .["screen_mode"] = get_screen_mode() - if(href_list["create_mission"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(firemission_envelope.max_mission_len <= firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Cannot store more than [firemission_envelope.max_mission_len] Fire Missions.")) - return - var/fm_name = stripped_input(usr, "", "Enter Fire Mission Name", "Fire Mission [firemission_envelope.missions.len+1]", 50) - if(!fm_name || length(fm_name) < 5) - to_chat(usr, SPAN_WARNING("Name too short (at least 5 symbols).")) - return - var/fm_length = stripped_input(usr, "Enter length of the Fire Mission. Has to be less than [firemission_envelope.fire_length]. Use something that divides [firemission_envelope.fire_length] for optimal performance.", "Fire Mission Length (in tiles)", "[firemission_envelope.fire_length]", 5) - var/fm_length_n = text2num(fm_length) - if(!fm_length_n) - to_chat(usr, SPAN_WARNING("Incorrect input format.")) - return - if(fm_length_n > firemission_envelope.fire_length) - to_chat(usr, SPAN_WARNING("Fire Mission is longer than allowed by this vehicle.")) - return - if(firemission_envelope.stat != FIRE_MISSION_STATE_IDLE) - to_chat(usr, SPAN_WARNING("Vehicle has to be idle to allow Fire Mission editing and creation.")) - return - //everything seems to be fine now - firemission_envelope.generate_mission(fm_name, fm_length_n) - - if(href_list["mission_tag_delete"]) - var/ref = text2num(href_list["mission_tag_delete"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(ref>firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Fire Mission ID corrupted or already deleted.")) - return - if(selected_firemission == firemission_envelope.missions[ref]) - to_chat(usr, SPAN_WARNING("Can't delete selected Fire Mission.")) - return - var/result = firemission_envelope.delete_firemission(ref) - if(result != 1) - to_chat(usr, SPAN_WARNING("Unable to delete Fire Mission while in combat.")) - return + // dropship info + .["shuttle_state"] = dropship.mode + .["fire_mission_enabled"] = dropship.in_flyby - if(href_list["mission_tag"]) - var/ref = text2num(href_list["mission_tag"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(ref>firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Fire Mission ID corrupted or deleted.")) - return - if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - if(selected_firemission == firemission_envelope.missions[ref]) - selected_firemission = null - else - selected_firemission = firemission_envelope.missions[ref] + // equipment info + .["equipment_data"] = get_sanitised_equipment(user, dropship) - if(href_list["mission_tag_edit"]) - var/ref = text2num(href_list["mission_tag_edit"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(ref>firemission_envelope.missions.len) - to_chat(usr, SPAN_WARNING("Fire Mission ID corrupted or deleted.")) - return - if(selected_firemission == firemission_envelope.missions[ref]) - to_chat(usr, SPAN_WARNING("Can't edit selected Fire Mission.")) - return - if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - editing_firemission = firemission_envelope.missions[ref] + // medevac targets + .["medevac_targets"] = list() + for(var/obj/structure/dropship_equipment/equipment as anything in dropship.equipments) + if (istype(equipment, /obj/structure/dropship_equipment/medevac_system)) + var/obj/structure/dropship_equipment/medevac_system/medevac = equipment + .["medevac_targets"] += medevac.ui_data(user) + // fultons - if(href_list["leave_firemission_editing"]) - editing_firemission = null + .["fulton_targets"] = list() + for(var/obj/structure/dropship_equipment/equipment as anything in dropship.equipments) + if (istype(equipment, /obj/structure/dropship_equipment/fulton_system)) + var/obj/structure/dropship_equipment/fulton_system/fult = equipment + .["fulton_targets"] += fult.ui_data(user) - if(href_list["switch_to_firemission"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - in_firemission_mode = TRUE + .["targets_data"] = get_targets() + .["camera_target"] = camera_target_id - if(href_list["switch_to_simulation"]) - if(!selected_firemission) - to_chat(usr, SPAN_WARNING("Select a firemission before attempting to run the simulation")) - return + if(selected_equipment) + .["selected_eqp"] = selected_equipment.ship_base.attach_id + if(selected_equipment.ammo_equipped) + var/obj/structure/ship_ammo/ammo_equipped = selected_equipment.ammo_equipped + .["selected_eqp_ammo_name"] = sanitize(copytext(ammo_equipped.name, 1, MAX_MESSAGE_LEN)) + .["selected_eqp_ammo_amt"] = ammo_equipped.ammo_count + .["selected_eqp_max_ammo_amt"] = ammo_equipped.max_ammo_count + + // firemission info + .["has_firemission"] = !!firemission_envelope + .["can_firemission"] = !!selected_firemission && dropship.mode == SHUTTLE_CALL + if(editing_firemission) + .["editing_firemission"] = editing_firemission + .["editing_firemission_length"] = editing_firemission ? editing_firemission.mission_length : 0 + var/error_code = editing_firemission.check(src) + .["current_mission_error"] = error_code != FIRE_MISSION_ALL_GOOD ? editing_firemission.error_message(error_code) : null + .["firemission_edit_data"] = get_edit_firemission_data() - configuration = selected_firemission + if(firemission_envelope) + .["can_launch_firemission"] = !!selected_firemission && dropship.mode == SHUTTLE_CALL && firemission_envelope.stat != FIRE_MISSION_STATE_IDLE + .["firemission_data"] = get_firemission_data(user) + .["firemission_state"] = firemission_envelope.stat + .["firemission_offset"] = firemission_envelope.recorded_offset + .["firemission_message"] = firemission_envelope.firemission_status_message() + .["firemission_name"] = selected_firemission ? selected_firemission.name : "" + .["firemission_step"] = firemission_envelope.stat + .["firemission_selected_laser"] = firemission_envelope.recorded_loc ? firemission_envelope.recorded_loc.get_name() : "NOT SELECTED" + + .["configuration"] = configuration + .["dummy_mode"] = simulation.dummy_mode + .["worldtime"] = world.time + .["nextdetonationtime"] = simulation.detonation_cooldown + .["detonation_cooldown"] = simulation.detonation_cooldown_time - // simulation mode - tgui_interact(usr) +/obj/structure/machinery/computer/dropship_weapons/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttle_tag) + if(shuttle.is_hijacked) + return - if(href_list["leave_firemission_execution"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - firemission_envelope.remove_user_from_tracking(usr) - in_firemission_mode = FALSE + var/mob/user = ui.user + switch(action) + if("button_push") + playsound(src, get_sfx("terminal_button"), 25, FALSE) + return TRUE - if(href_list["change_direction"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - var/list/directions = list(dir2text(NORTH), dir2text(SOUTH), dir2text(EAST), dir2text(WEST)) - var/chosen = tgui_input_list(usr, "Select new Direction for the strafing run", "Select Direction", directions) + if("select_equipment") + var/base_tag = params["equipment_id"] + ui_equip_interact(user, base_tag) + return TRUE - var/chosen_dir = text2dir(chosen) - if(!chosen_dir) - to_chat(usr, SPAN_WARNING("Error with direction detected.")) - return + if("start_watching") + simulation.start_watching(user) + . = TRUE - update_direction(chosen_dir) + if("stop_watching") + simulation.stop_watching(user) + . = TRUE - if(href_list["change_offset"]) - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return + if("execute_simulated_firemission") + if(!configuration) + to_chat(user, SPAN_WARNING("No configured firemission")) + return + simulate_firemission(user) + . = TRUE - var/chosen = stripped_input(usr, "Select Fire Mission length, from 0 to [firemission_envelope.max_offset]", "Select Offset", "[firemission_envelope.recorded_offset]", 2) - var/chosen_offset = text2num(chosen) + if("switch_firemission") + configuration = tgui_input_list(user, "Select firemission to simulate", "Select firemission", firemission_envelope.missions, 30 SECONDS) + if(!selected_firemission) + to_chat(user, SPAN_WARNING("No configured firemission")) + return + if(!configuration) + configuration = selected_firemission + . = TRUE - if(chosen_offset == null) - to_chat(usr, SPAN_WARNING("Error with offset detected.")) - return + if("switchmode") + simulation.dummy_mode = tgui_input_list(user, "Select target type to simulate", "Target type", simulation.target_types, 30 SECONDS) + if(!simulation.dummy_mode) + simulation.dummy_mode = CLF_MODE + . = TRUE - update_offset(chosen_offset) + if("set-camera") + var/target_camera = params["equipment_id"] + set_camera_target(target_camera) + return TRUE + + if("set-camera-sentry") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + if (istype(equipment, /obj/structure/dropship_equipment/sentry_holder)) + var/obj/structure/dropship_equipment/sentry_holder/sentry = equipment + var/obj/structure/machinery/defenses/sentry/defense = sentry.deployed_turret + if (defense.has_camera) + defense.set_range() + var/datum/shape/rectangle/current_bb = defense.range_bounds + SEND_SIGNAL(src, COMSIG_CAMERA_SET_AREA, current_bb.center_x, current_bb.center_y, defense.loc.z, current_bb.width, current_bb.height) + return TRUE + + if("clear-camera") + set_camera_target(null) + return TRUE + + if("medevac-target") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + if (istype(equipment, /obj/structure/dropship_equipment/medevac_system)) + var/obj/structure/dropship_equipment/medevac_system/medevac = equipment + var/target_ref = params["ref"] + medevac.automate_interact(user, target_ref) + if(medevac.linked_stretcher) + SEND_SIGNAL(src, COMSIG_CAMERA_SET_TARGET, medevac.linked_stretcher, 5, 5) + return TRUE + if("fulton-target") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + if (istype(equipment, /obj/structure/dropship_equipment/fulton_system)) + var/obj/structure/dropship_equipment/fulton_system/fulton = equipment + var/target_ref = params["ref"] + fulton.automate_interact(user, target_ref) + return TRUE + if("fire-weapon") + var/weapon_tag = params["eqp_tag"] + var/obj/structure/dropship_equipment/weapon/DEW = get_weapon(weapon_tag) + if(!DEW) + return FALSE + + var/datum/cas_signal/sig = get_cas_signal(camera_target_id) + + if(!sig) + return FALSE + + selected_equipment = DEW + ui_open_fire(user, shuttle, camera_target_id) + return TRUE + if("deploy-equipment") + var/equipment_tag = params["equipment_id"] + for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments) + var/mount_point = equipment.ship_base.attach_id + if(mount_point != equipment_tag) + continue + equipment.equipment_interact(user) + return TRUE + + if("firemission-create") + var/name = params["firemission_name"] + var/length = params["firemission_length"] + var/length_n = text2num(length) + if(!length_n) + to_chat(user, SPAN_WARNING("Incorrect input format.")) + return FALSE + ui_create_firemission(user, name, length_n) + return TRUE + + if("firemission-delete") + var/name = params["firemission_name"] + ui_delete_firemission(user, name) + return TRUE + + if("firemission-dual-offset-camera") + var/target_id = params["target_id"] + + var/x_offset_value = params["x_offset_value"] + var/y_offset_value = params["y_offset_value"] + + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + var/datum/cas_signal/cas_sig + for(var/X in cas_group.cas_signals) + var/datum/cas_signal/LT = X + if(LT.target_id == target_id && LT.valid_signal()) + cas_sig = LT + break + // we don't want rapid offset changes to trigger admin warnings + // and block the user from accessing TGUI + // we change the minute_count + user.client.reduce_minute_count() + if(!cas_sig) + return TRUE + + // find position of cas_sig with offset dir and value applied + var/dx = text2num(x_offset_value) + var/dy = text2num(y_offset_value) + + var/obj/current = cas_sig.signal_loc + var/obj/new_target = locate( + current.x + dx, + current.y + dy, + current.z) + + firemission_envelope.change_current_loc(new_target) + + return TRUE + if("nvg-enable") + SEND_SIGNAL(src, COMSIG_CAMERA_SET_NVG, 5, "#7aff7a") + return TRUE + if("nvg-disable") + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR_NVG) + return TRUE + + if("firemission-edit") + var/fm_tag = text2num(params["tag"]) + var/weapon_id = text2num(params["weapon_id"]) + var/offset_id = text2num(params["offset_id"]) + var/offset_value = text2num(params["offset_value"]) + return ui_firemission_change_offset(user, fm_tag, weapon_id, offset_id + 1, offset_value) + + if("firemission-execute") + var/fm_tag = text2num(params["tag"]) + var/direction = params["direction"] + var/target_id = params["target_id"] + var/offset_x_value = params["offset_x_value"] + var/offset_y_value = params["offset_y_value"] + + if(!ui_select_firemission(user, fm_tag)) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return FALSE + if(!update_direction(user, text2num(direction))) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return FALSE + if(!ui_select_laser_firemission(user, shuttle, target_id)) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return FALSE + + initiate_firemission(user, fm_tag, direction, text2num(offset_x_value), text2num(offset_y_value)) + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/get_weapon(eqp_tag) + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) + for(var/obj/structure/dropship_equipment/equipment in dropship.equipments) + if(istype(equipment, /obj/structure/dropship_equipment/weapon)) + //is weapon + if(selected_equipment == equipment) + return equipment + return + +/obj/structure/machinery/computer/dropship_weapons/proc/get_cas_signal(target_ref) + if(!target_ref) + return - if(href_list["select_laser_firemission"]) - var/mob/M = usr - var/targ_id = text2num(href_list["select_laser_firemission"]) - if(!targ_id) - to_chat(usr, SPAN_WARNING("Bad Target.")) - return - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return - var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] - var/datum/cas_signal/cas_sig - for(var/X in cas_group.cas_signals) - var/datum/cas_signal/LT = X - if(LT.target_id == targ_id && LT.valid_signal()) - cas_sig = LT - if(!cas_sig) - to_chat(usr, SPAN_WARNING("Target lost or obstructed.")) - return + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + for(var/datum/cas_signal/sig in cas_group.cas_signals) + if(sig.target_id == target_ref) + return sig - update_location(cas_sig) - if(href_list["execute_firemission"]) - var/mob/M = usr - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.allow_gun_usage) - to_chat(H, SPAN_WARNING("Your programming prevents you from operating dropship weaponry!")) - return - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(firemission_envelope.stat != FIRE_MISSION_STATE_IDLE) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return - if(!firemission_envelope.recorded_loc) - to_chat(usr, SPAN_WARNING("Target is not selected or lost.")) - return +/obj/structure/machinery/computer/dropship_weapons/proc/set_camera_target(target_ref) + var/datum/cas_signal/target = get_cas_signal(target_ref) + camera_target_id = target_ref + if(!target) + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) + return - initiate_firemission() + var/cam_width = camera_width + var/cam_height = camera_height + if(upgraded == MATRIX_WIDE) + cam_width = cam_width * 1.5 + cam_height = cam_height * 1.5 - if(href_list["fm_weapon_id"]) - var/weap_ref = text2num(href_list["fm_weapon_id"])+1 - var/offset_ref = text2num(href_list["fm_offset_id"])+1 - var/mob/M = usr - if(!skillcheck(M, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. - to_chat(usr, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) - return - if(!editing_firemission) - to_chat(usr, SPAN_WARNING("You are no longer editing Fire Mission.")) - return - if(!editing_firemission.records || editing_firemission.records.len FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) - to_chat(usr, SPAN_WARNING("Fire Mission already underway.")) - return - var/list/gimb = record.get_offsets() - var/min = gimb["min"] - var/max = gimb["max"] - var/offset_value = stripped_input(usr, "Enter offset for the [record.weapon.name]. It has to be between [min] and [max]. Enter '-' to remove fire order on this time stamp.", "Firing offset", "[record.offsets[offset_ref]]", 2) - if(offset_value == null) - return - if(offset_value == "-") - offset_value = "-" - else - offset_value = text2num(offset_value) - if(offset_value == null) - to_chat(usr, SPAN_WARNING("Incorrect offset value.")) - return - var/result = firemission_envelope.update_mission(firemission_envelope.missions.Find(editing_firemission), weap_ref, offset_ref, offset_value, TRUE) - if(result == 0) - to_chat(usr, SPAN_WARNING("Update caused an error: [firemission_envelope.mission_error]")) - if(result == -1) - to_chat(usr, SPAN_WARNING("System Error. Delete this Fire Mission.")) - - if(href_list["firemission_camera"]) - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return + SEND_SIGNAL(src, COMSIG_CAMERA_SET_TARGET, target.linked_cam, cam_width, cam_height) - if(!firemission_envelope.guidance) - to_chat(usr, SPAN_WARNING("Guidance is not selected or lost.")) - return +/obj/structure/machinery/computer/dropship_weapons/proc/get_screen_mode() + . = 0 + if(selected_equipment) + . = selected_equipment.screen_mode + if(editing_firemission && editing_firemission.check(src) != FIRE_MISSION_CODE_ERROR) + . = 2 + if(selected_firemission && in_firemission_mode) + . = 3 +/obj/structure/machinery/computer/dropship_weapons/proc/get_firemission_data(mob/user) + . = list() + var/firemission_id = 1 + for(var/datum/cas_fire_mission/firemission in firemission_envelope.missions) + var/error_code = firemission.check(src) - firemission_envelope.add_user_to_tracking(usr) + var/selected = firemission == selected_firemission + var/can_edit = error_code != FIRE_MISSION_CODE_ERROR && !selected - to_chat(usr, "You peek through the guidance camera.") + var/can_interact = firemission_envelope.stat == FIRE_MISSION_STATE_IDLE && error_code == FIRE_MISSION_ALL_GOOD + var/list/fm_data = firemission.ui_data(user) + fm_data["mission_tag"] = firemission_id + fm_data["can_edit"] = can_edit + fm_data["can_interact"] = can_interact + fm_data["selected"] = selected + . += list(fm_data) - if(href_list["cas_camera"]) - if(!ishuman(usr)) - to_chat(usr, SPAN_WARNING("You have no idea how to do that!")) - return - if(dropship.mode != SHUTTLE_CALL) - to_chat(usr, SPAN_WARNING("Shuttle has to be in orbit.")) - return + firemission_id++ - if(!faction) - to_chat(usr, SPAN_DANGER("Bug encountered, this console doesn't have a faction set, report this to a coder!")) - return +/obj/structure/machinery/computer/dropship_weapons/proc/get_edit_firemission_data() + . = list() + if(!editing_firemission) + return + for(var/datum/cas_fire_mission_record/firerec as anything in editing_firemission.records) + var/gimbal = firerec.get_offsets() + var/ammo = firerec.get_ammo() + var/offsets = new /list(firerec.offsets.len) + for(var/idx = 1; idx < firerec.offsets.len; idx++) + offsets[idx] = firerec.offsets[idx] == null ? "-" : firerec.offsets[idx] + . += list( + "name" = sanitize(copytext(firerec.weapon.name, 1, 50)), + "ammo" = ammo, + "gimbal" = gimbal, + "offsets" = firerec.offsets + ) + +/obj/structure/machinery/computer/dropship_weapons/proc/get_sanitised_equipment(mob/user, obj/docking_port/mobile/marine_dropship/dropship) + . = list() + var/element_nbr = 1 + for(var/obj/structure/dropship_equipment/equipment in dropship.equipments) + var/list/data = list( + "name"= equipment.name, + "shorthand" = equipment.shorthand, + "eqp_tag" = element_nbr, + "is_weapon" = equipment.is_weapon, + "is_interactable" = equipment.is_interactable, + "mount_point" = equipment.ship_base.attach_id, + "is_missile" = istype(equipment, /obj/structure/dropship_equipment/weapon/rocket_pod), + "ammo_name" = equipment.ammo_equipped?.name, + "ammo" = equipment.ammo_equipped?.ammo_count, + "max_ammo" = equipment.ammo_equipped?.max_ammo_count, + "firemission_delay" = equipment.ammo_equipped?.fire_mission_delay, + "burst" = equipment.ammo_equipped?.ammo_used_per_firing, + "data" = equipment.ui_data(user) + ) + + . += list(data) - var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] - if(!cas_group) - to_chat(usr, SPAN_DANGER("Bug encountered, no CAS group exists for this console, report this to a coder!")) - return + element_nbr++ + equipment.linked_console = src + + +/obj/structure/machinery/computer/dropship_weapons/proc/get_targets() + . = list() + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + for(var/datum/cas_signal/LT as anything in cas_group.cas_signals) + if(!istype(LT) || !LT.valid_signal()) + continue + var/area/laser_area = get_area(LT.signal_loc) + . += list( + list( + "target_name" = "[LT.name] ([laser_area.name])", + "target_tag" = LT.target_id + ) + ) + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_equip_interact(mob/user, base_tag) + var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttle_tag) + var/obj/structure/dropship_equipment/E = shuttle.equipments[base_tag] + E.linked_console = src + E.equipment_interact(user) + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_open_fire(mob/weapon_operator, obj/docking_port/mobile/marine_dropship/dropship, targ_id) + if(ishuman(weapon_operator)) + var/mob/living/carbon/human/human_operator = weapon_operator + if(!human_operator.allow_gun_usage) + to_chat(human_operator, SPAN_WARNING("Your programming prevents you from operating dropship weaponry!")) + return FALSE + var/obj/structure/dropship_equipment/weapon/DEW = selected_equipment + if(!selected_equipment || !selected_equipment.is_weapon) + to_chat(weapon_operator, SPAN_WARNING("No weapon selected.")) + return FALSE + if(!skillcheck(weapon_operator, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("You don't have the training to fire this weapon!")) + return FALSE + if(dropship.mode != SHUTTLE_CALL) + to_chat(weapon_operator, SPAN_WARNING("Dropship can only fire while in flight.")) + return FALSE + if(!faction) + return FALSE//no faction, no weapons + if(!selected_equipment || !selected_equipment.is_weapon) + to_chat(weapon_operator, SPAN_WARNING("No weapon selected.")) + return FALSE + if(dropship.door_override) + return FALSE + if(!skillcheck(weapon_operator, SKILL_PILOT, DEW.skill_required)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("You don't have the training to fire this weapon!")) + return FALSE + if(!dropship.in_flyby && DEW.fire_mission_only) + to_chat(weapon_operator, SPAN_WARNING("[DEW] requires a fire mission flight type to be fired.")) + return FALSE + + if(!DEW.ammo_equipped || DEW.ammo_equipped.ammo_count <= 0) + to_chat(weapon_operator, SPAN_WARNING("[DEW] has no ammo.")) + return FALSE + if(DEW.last_fired > world.time - DEW.firing_delay) + to_chat(weapon_operator, SPAN_WARNING("[DEW] just fired, wait for it to cool down.")) + return FALSE - var/targ_id = text2num(href_list["cas_camera"]) + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] - var/datum/cas_signal/new_signal - for(var/datum/cas_signal/LT as anything in cas_group.cas_signals) - if(LT.target_id == targ_id && LT.valid_signal()) - new_signal = LT - break + if(!cas_group) + return FALSE//broken group. No fighting - if(!new_signal) - to_chat(usr, SPAN_WARNING("Target lost or obstructed.")) - return + for(var/datum/cas_signal/LT in cas_group.cas_signals) + if(LT.target_id != targ_id || !LT.valid_signal()) + continue + if(!LT.signal_loc) + return FALSE + var/turf/TU = get_turf(LT.signal_loc) + var/area/targ_area = get_area(LT.signal_loc) + var/is_outside = FALSE + if(is_ground_level(TU.z)) + switch(targ_area.ceiling) + if(CEILING_NONE) + is_outside = TRUE + if(CEILING_GLASS) + is_outside = TRUE + if(!is_outside && !cavebreaker) //cavebreaker doesn't care + to_chat(weapon_operator, SPAN_WARNING("INVALID TARGET: target must be visible from high altitude.")) + return FALSE + if (protected_by_pylon(TURF_PROTECTION_CAS, TU)) + to_chat(weapon_operator, SPAN_WARNING("INVALID TARGET: biological-pattern interference with signal.")) + return FALSE + if(!DEW.ammo_equipped.can_fire_at(TU, weapon_operator)) + return FALSE + + DEW.open_fire(LT.signal_loc) + return TRUE + return FALSE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_create_firemission(mob/weapon_operator, firemission_name, firemission_length) + if(!skillcheck(weapon_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + // Check name + if(!firemission_name || length(firemission_name) < 1) + to_chat(weapon_operator, SPAN_WARNING("Name too short (at least 1 symbols).")) + return FALSE + // Check length + if(!firemission_length) + to_chat(weapon_operator, SPAN_WARNING("Incorrect input format.")) + return FALSE + if(firemission_length > firemission_envelope.fire_length) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission is longer than allowed by this vehicle.")) + return FALSE + if(firemission_envelope.stat != FIRE_MISSION_STATE_IDLE) + to_chat(weapon_operator, SPAN_WARNING("Vehicle has to be idle to allow Fire Mission editing and creation.")) + return FALSE + + for(var/datum/cas_fire_mission/mission in firemission_envelope.missions) + if(firemission_name == mission.name) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission name must be unique.")) + return FALSE + //everything seems to be fine now + firemission_envelope.generate_mission(firemission_name, firemission_length) + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_delete_firemission(mob/weapon_operator, firemission_tag) + if(!skillcheck(weapon_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + if(firemission_tag > firemission_envelope.missions.len) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission ID corrupted or already deleted.")) + return FALSE + if(selected_firemission == firemission_envelope.missions[firemission_tag]) + to_chat(weapon_operator, SPAN_WARNING("Can't delete selected Fire Mission.")) + return FALSE + var/result = firemission_envelope.delete_firemission(firemission_tag) + if(result != 1) + to_chat(weapon_operator, SPAN_WARNING("Unable to delete Fire Mission while in combat.")) + return FALSE + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_select_firemission(mob/weapon_operator, firemission_tag) + if(!skillcheck(weapon_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapon_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission already underway.")) + return FALSE + if(firemission_tag > firemission_envelope.missions.len) + to_chat(weapon_operator, SPAN_WARNING("Fire Mission ID corrupted or deleted.")) + return FALSE + if(selected_firemission == firemission_envelope.missions[firemission_tag]) + selected_firemission = null + else + selected_firemission = firemission_envelope.missions[firemission_tag] + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_firemission_change_offset(mob/weapons_operator, fm_tag, weapon_id, offset_id, offset_value) + if(!skillcheck(weapons_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapons_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + + var/result = firemission_envelope.update_mission(fm_tag, weapon_id, offset_id, offset_value) + if(result != FIRE_MISSION_ALL_GOOD) + playsound(src, 'sound/machines/terminal_error.ogg', 5, 1) + return TRUE + +/obj/structure/machinery/computer/dropship_weapons/proc/ui_select_laser_firemission(mob/weapons_operator, obj/docking_port/mobile/marine_dropship/dropship, laser) + if(!laser) + to_chat(weapons_operator, SPAN_WARNING("Bad Target.")) + return FALSE + if(!skillcheck(weapons_operator, SKILL_PILOT, SKILL_PILOT_TRAINED)) //only pilots can fire dropship weapons. + to_chat(weapons_operator, SPAN_WARNING("A screen with graphics and walls of physics and engineering values open, you immediately force it closed.")) + return FALSE + if(firemission_envelope.stat > FIRE_MISSION_STATE_IN_TRANSIT && firemission_envelope.stat < FIRE_MISSION_STATE_COOLDOWN) + to_chat(weapons_operator, SPAN_WARNING("Fire Mission already underway.")) + return FALSE + if(dropship.mode != SHUTTLE_CALL) + to_chat(weapons_operator, SPAN_WARNING("Shuttle has to be in orbit.")) + return FALSE + var/datum/cas_iff_group/cas_group = GLOB.cas_groups[faction] + var/datum/cas_signal/cas_sig + for(var/X in cas_group.cas_signals) + var/datum/cas_signal/LT = X + if(LT.target_id == laser && LT.valid_signal()) + cas_sig = LT + if(!cas_sig) + to_chat(weapons_operator, SPAN_WARNING("Target lost or obstructed.")) + return FALSE - if(usr in selected_cas_signal?.linked_cam?.viewing_users) // Reset previous cam - remove_from_view(usr) + update_location(weapons_operator, cas_sig) + return TRUE - selected_cas_signal = new_signal - if(selected_cas_signal && selected_cas_signal.linked_cam) - selected_cas_signal.linked_cam.view_directly(usr) - else - to_chat(usr, SPAN_WARNING("Error!")) - return - give_action(usr, /datum/action/human_action/cancel_view) - RegisterSignal(usr, COMSIG_MOB_RESET_VIEW, PROC_REF(remove_from_view)) - RegisterSignal(usr, COMSIG_MOB_RESISTED, PROC_REF(remove_from_view)) - firemission_envelope.apply_upgrade(usr) - to_chat(usr, SPAN_NOTICE("You peek through the guidance camera.")) - - ui_interact(usr) - -/obj/structure/machinery/computer/dropship_weapons/proc/remove_from_view(mob/living/carbon/human/user) - UnregisterSignal(user, COMSIG_MOB_RESET_VIEW) - UnregisterSignal(user, COMSIG_MOB_RESISTED) - if(selected_cas_signal && selected_cas_signal.linked_cam) - selected_cas_signal.linked_cam.remove_from_view(user) - firemission_envelope.remove_upgrades(user) - -/obj/structure/machinery/computer/dropship_weapons/proc/initiate_firemission() +/obj/structure/machinery/computer/dropship_weapons/proc/initiate_firemission(mob/user, fmId, dir, offset_x, offset_y) set waitfor = 0 var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag) if (!istype(dropship)) - return - if (dropship.timer && dropship.timeLeft(1) < firemission_envelope.get_total_duration()) - to_chat(usr, "Not enough time to complete the Fire Mission") - return + return FALSE if (!dropship.in_flyby || dropship.mode != SHUTTLE_CALL) - to_chat(usr, "Has to be in Fly By mode") - return - - var/fmid = firemission_envelope.missions.Find(selected_firemission) - if(!fmid) - to_chat(usr, "No Firemission selected") - return - - var/result = firemission_envelope.execute_firemission(firemission_envelope.recorded_loc, firemission_envelope.recorded_offset, firemission_envelope.recorded_dir, fmid) - if(result<1) - to_chat(usr, "Screen beeps with an error: "+ firemission_envelope.mission_error) - else - update_trace_loc() - -/obj/structure/machinery/computer/dropship_weapons/proc/update_offset(new_offset) - var/result = firemission_envelope.change_offset(new_offset) - if(result<1) - to_chat(usr, "Screen beeps with an error: "+ firemission_envelope.mission_error) - else - update_trace_loc() + to_chat(user, SPAN_WARNING("Has to be in Fly By mode")) + return FALSE + if (dropship.timer && dropship.timeLeft(1) < firemission_envelope.get_total_duration()) + to_chat(user, SPAN_WARNING("Not enough time to complete the Fire Mission")) + return FALSE + var/datum/cas_signal/recorded_loc = firemission_envelope.recorded_loc + var/obj/source = recorded_loc.signal_loc + var/turf/target = locate( + source.x + offset_x, + source.y + offset_y, + source.z + ) + var/result = firemission_envelope.execute_firemission(recorded_loc, target, dir, fmId) + if(result != FIRE_MISSION_ALL_GOOD) + to_chat(user, SPAN_WARNING("Screen beeps with an error: [firemission_envelope.mission_error]")) + return TRUE -/obj/structure/machinery/computer/dropship_weapons/proc/update_location(new_location) +/obj/structure/machinery/computer/dropship_weapons/proc/update_location(mob/user, new_location) var/result = firemission_envelope.change_target_loc(new_location) if(result<1) - to_chat(usr, "Screen beeps with an error: "+ firemission_envelope.mission_error) - else - update_trace_loc() + to_chat(user, SPAN_WARNING("Screen beeps with an error: [firemission_envelope.mission_error]")) + return FALSE + return TRUE -/obj/structure/machinery/computer/dropship_weapons/proc/update_direction(new_direction) +/obj/structure/machinery/computer/dropship_weapons/proc/update_direction(mob/user, new_direction) var/result = firemission_envelope.change_direction(new_direction) if(result<1) - to_chat(usr, "Screen beeps with an error: " + firemission_envelope.mission_error) - else - update_trace_loc() - -/obj/structure/machinery/computer/dropship_weapons/on_unset_interaction(mob/user) - ..() - if(firemission_envelope && firemission_envelope.guidance) - firemission_envelope.remove_user_from_tracking(user) + to_chat(user, SPAN_WARNING("Screen beeps with an error: [firemission_envelope.mission_error]")) + return FALSE + return TRUE -/obj/structure/machinery/computer/dropship_weapons/proc/update_trace_loc() +/obj/structure/machinery/computer/dropship_weapons/proc/update_trace_loc(mob/user) if(!firemission_envelope) return if(firemission_envelope.recorded_loc == null || firemission_envelope.recorded_dir == null || firemission_envelope.recorded_offset == null) return if(firemission_envelope.recorded_loc.obstructed_signal()) - if(firemission_envelope.user_is_guided(usr)) - to_chat(usr, SPAN_WARNING("Signal Obstructed. You have to go in blind.")) + if(firemission_envelope.user_is_guided(user)) + to_chat(user, SPAN_WARNING("Signal Obstructed. You have to go in blind.")) return var/sx = 0 var/sy = 0 @@ -711,108 +803,29 @@ return var/area/laser_area = get_area(shootloc) if(!istype(laser_area) || CEILING_IS_PROTECTED(laser_area.ceiling, CEILING_PROTECTION_TIER_1)) - if(firemission_envelope.user_is_guided(usr)) - to_chat(usr, SPAN_WARNING("Vision Obstructed. You have to go in blind.")) + if(firemission_envelope.user_is_guided(user)) + to_chat(user, SPAN_WARNING("Vision Obstructed. You have to go in blind.")) firemission_envelope.change_current_loc() else firemission_envelope.change_current_loc(shootloc) + return TRUE /obj/structure/machinery/computer/dropship_weapons/dropship1 name = "\improper 'Alamo' weapons controls" req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT) firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship() - -/obj/structure/machinery/computer/dropship_weapons/dropship1/New() - ..() shuttle_tag = DROPSHIP_ALAMO /obj/structure/machinery/computer/dropship_weapons/dropship2 name = "\improper 'Normandy' weapons controls" req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT) firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship() - -/obj/structure/machinery/computer/dropship_weapons/dropship2/New() - ..() shuttle_tag = DROPSHIP_NORMANDY /obj/structure/machinery/computer/dropship_weapons/Destroy() . = ..() - QDEL_NULL(firemission_envelope) - -// CAS TGUI SHIT \\ - -/obj/structure/machinery/computer/dropship_weapons/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "CasSim", "[src.name]") - ui.open() - -/obj/structure/machinery/computer/dropship_weapons/ui_state(mob/user) // we gotta do custom shit here so that it always closes instead of suspending - return GLOB.not_incapacitated_and_adjacent_strict_state - -/obj/structure/machinery/computer/dropship_weapons/ui_status(mob/user, datum/ui_state/state) - . = ..() - if(inoperable()) - return UI_CLOSE - -/obj/structure/machinery/computer/dropship_weapons/ui_data(mob/user) - var/list/data = list() - - data["configuration"] = configuration - data["looking"] = simulation.looking_at_simulation - data["dummy_mode"] = simulation.dummy_mode - - data["worldtime"] = world.time - data["nextdetonationtime"] = simulation.detonation_cooldown - data["detonation_cooldown"] = simulation.detonation_cooldown_time - - return data - -/obj/structure/machinery/computer/dropship_weapons/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) - . = ..() - if(.) - return - - var/user = ui.user - - switch(action) - if("start_watching") - simulation.start_watching(user) - . = TRUE - - if("stop_watching") - simulation.stop_watching(user) - . = TRUE - - if("execute_simulated_firemission") - if(!configuration) - to_chat(user, SPAN_WARNING("No configured firemission")) - return - simulate_firemission(user) - . = TRUE - - if("switch_firemission") - configuration = tgui_input_list(user, "Select firemission to simulate", "Select firemission", firemission_envelope.missions, 30 SECONDS) - if(!selected_firemission) - to_chat(user, SPAN_WARNING("No configured firemission")) - return - if(!configuration) - configuration = selected_firemission - . = TRUE - - if("switchmode") - simulation.dummy_mode = tgui_input_list(user, "Select target type to simulate", "Target type", simulation.target_types, 30 SECONDS) - if(!simulation.dummy_mode) - simulation.dummy_mode = CLF_MODE - . = TRUE - -/obj/structure/machinery/computer/dropship_weapons/ui_close(mob/user) - . = ..() - if(simulation.looking_at_simulation) - simulation.stop_watching(user) - -// CAS TGUI SHIT END \\ + QDEL_NULL(tacmap) /obj/structure/machinery/computer/dropship_weapons/proc/simulate_firemission(mob/living/user) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 9a08ab7bd566..e7626938549a 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -95,7 +95,7 @@ if("Released") background = "'background-color:#2981b3;'" if("Suspect") - background = "'background-color:#008743;'" + background = "'background-color:#686A6C;'" if("NJP") background = "'background-color:#faa20a;'" if("None") diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index ab5dc6448f4b..69c2c897e276 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -519,7 +519,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li if(mob.client) to_chat(mob, SPAN_NOTICE("You feel cool air surround you. You go numb as your senses turn inward.")) to_chat(mob, SPAN_BOLDNOTICE("If you log out or close your client now, your character will permanently removed from the round in 10 minutes. If you ghost, timer will be decreased to 2 minutes.")) - if(!is_admin_level(src.z)) // Set their queue time now because the client has to actually leave to despawn and at that point the client is lost + if(!should_block_game_interaction(src)) // Set their queue time now because the client has to actually leave to despawn and at that point the client is lost mob.client.player_details.larva_queue_time = max(mob.client.player_details.larva_queue_time, world.time) var/area/location = get_area(src) if(mob.job != GET_MAPPED_ROLE(JOB_SQUAD_MARINE)) @@ -536,6 +536,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li icon_state = "body_scanner_open" set_light(0) playsound(src, 'sound/machines/pod_open.ogg', 30) + SEND_SIGNAL(src, COMSIG_CRYOPOD_GO_OUT) #ifdef OBJECTS_PROXY_SPEECH // Transfers speech to occupant @@ -554,3 +555,40 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li return move_inside(target) + + +/obj/structure/machinery/cryopod/tutorial + silent_exit = TRUE + +/obj/structure/machinery/cryopod/tutorial/process() + return + +/obj/structure/machinery/cryopod/tutorial/go_in_cryopod(mob/mob, silent = FALSE, del_them = TRUE) + if(occupant) + return + mob.forceMove(src) + occupant = mob + icon_state = "body_scanner_closed" + set_light(2) + time_entered = world.time + if(del_them) + despawn_occupant() + +/obj/structure/machinery/cryopod/tutorial/despawn_occupant() + SSminimaps.remove_marker(occupant) + + if(ishuman(occupant)) + var/mob/living/carbon/human/man = occupant + man.species.handle_cryo(man) + + icon_state = "body_scanner_open" + set_light(0) + + + var/mob/new_player/new_player = new + + if(!occupant.mind) + occupant.mind_initialize() + + occupant.mind.transfer_to(new_player) + SEND_SIGNAL(occupant, COMSIG_MOB_END_TUTORIAL) diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 2abdf971d724..f91f1f48cade 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -179,7 +179,7 @@ //make a subtype for CL office so it as a proper name. /obj/structure/machinery/door/poddoor/shutters/almayer/cl - name = "\improper Corporate Liason Privacy Shutters" + name = "\improper Corporate Liaison Privacy Shutters" //adding a subtype for CL office to use to secure access to cl office. /obj/structure/machinery/door/poddoor/shutters/almayer/cl/office /obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/door diff --git a/code/game/machinery/nuclearbomb.dm b/code/game/machinery/nuclearbomb.dm index cfb0d1abb94f..aac4f82ccff1 100644 --- a/code/game/machinery/nuclearbomb.dm +++ b/code/game/machinery/nuclearbomb.dm @@ -396,45 +396,39 @@ GLOBAL_VAR_INIT(bomb_set, FALSE) playsound(src, 'sound/machines/Alarm.ogg', 75, 0, 30) world << pick('sound/theme/nuclear_detonation1.ogg','sound/theme/nuclear_detonation2.ogg') - var/list/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). - var/list/dead_mobs = list() //Everyone who only needs to see the cinematic. for(var/mob/current_mob as anything in GLOB.mob_list) - if(!current_mob?.loc) - continue - if(current_mob.stat == DEAD) - dead_mobs |= current_mob - continue var/turf/current_turf = get_turf(current_mob) - if(z == current_turf.z) - alive_mobs |= current_mob + if(current_turf?.z == z && current_mob.stat != DEAD) shake_camera(current_mob, 110, 4) + sleep(10 SECONDS) + + var/list/mob/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s). + var/list/mob/dead_mobs = list() //Everyone that needs embryos cleared + for(var/mob/current_mob as anything in GLOB.mob_list) + var/turf/current_turf = get_turf(current_mob) + if(current_turf?.z == z) + if(current_mob.stat == DEAD) + dead_mobs |= current_mob + continue + alive_mobs |= current_mob + for(var/mob/current_mob in alive_mobs) - if(current_mob && current_mob.loc) - var/turf/current_mob_turf = get_turf(current_mob) - if(z == current_mob_turf.z) - if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) - continue - current_mob.death(create_cause_data("nuclear explosion")) - - for(var/mob/current_mob in (alive_mobs + dead_mobs)) - if(current_mob && current_mob.loc) - var/turf/current_mob_turf = get_turf(current_mob) - if(z == current_mob_turf.z) - if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) - continue - for(var/obj/item/alien_embryo/embryo in current_mob) - qdel(embryo) - - sleep(100) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + current_mob.death(create_cause_data("nuclear explosion")) + + for(var/mob/living/current_mob in (alive_mobs + dead_mobs)) + if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge)) + continue + for(var/obj/item/alien_embryo/embryo in current_mob) + qdel(embryo) + cell_explosion(loc, 500, 150, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name))) qdel(src) return TRUE /obj/structure/machinery/nuclearbomb/Destroy() - if(timing != -1) - message_admins("\The [src] has been unexpectedly deleted at ([x],[y],[x]). [ADMIN_JMP(src)]") - log_game("\The [src] has been unexpectedly deleted at ([x],[y],[x]).") GLOB.bomb_set = FALSE SSminimaps.remove_marker(src) return ..() diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index f8250fad271c..e992ef02f8a5 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -83,7 +83,7 @@ vmask, vmessage, obj/item/device/radio/radio, message, name, job, realname, vname, data, compression, list/level, freq, verbage = "says", - datum/language/speaking = null, volume = RADIO_VOLUME_QUIET) + datum/language/speaking = null, volume = RADIO_VOLUME_QUIET, listening_device = FALSE) /* ###### Prepare the radio connection ###### */ var/display_freq = freq @@ -175,13 +175,16 @@ volume = RADIO_VOLUME_CRITICAL for (var/mob/R in receive) + var/is_ghost = istype(R, /mob/dead/observer) /* --- Loop through the receivers and categorize them --- */ if (R.client && !(R.client.prefs.toggles_chat & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. continue if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes. continue // Ghosts hearing all radio chat don't want to hear syndicate intercepts, they're duplicates - if(data == 3 && istype(R, /mob/dead/observer) && R.client && (R.client.prefs.toggles_chat & CHAT_GHOSTRADIO)) + if(data == 3 && is_ghost && R.client && (R.client.prefs.toggles_chat & CHAT_GHOSTRADIO)) + continue + if(is_ghost && listening_device && !(R.client.prefs.toggles_chat & CHAT_LISTENINGBUG)) continue // --- Check for compression --- if(compression > 0) diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 942d70f80705..e43598c4e248 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -177,7 +177,7 @@ if(src.listening_level == TELECOMM_GROUND_Z) // equals the station src.listening_level = position.z return 1 - else if(is_admin_level(position.z)) + else if(should_block_game_interaction(position)) src.listening_level = TELECOMM_GROUND_Z return 1 return 0 @@ -229,7 +229,7 @@ /obj/structure/machinery/telecomms/relay/Options_Menu() var/dat = "" - if(is_admin_level(z)) + if(should_block_game_interaction(src)) dat += "
Signal Locked to Station: [listening_level == TELECOMM_GROUND_Z ? "TRUE" : "FALSE"]" dat += "
Broadcasting: [broadcasting ? "YES" : "NO"]" dat += "
Receiving: [receiving ? "YES" : "NO"]" diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 8ea00ce4061d..8b6622121b86 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -98,7 +98,7 @@ var/turf/T = get_turf(R) if (!T) continue - if(is_admin_level(T.z)) + if(should_block_game_interaction(T)) continue var/tmpname = T.loc.name if(areaindex[tmpname]) @@ -118,7 +118,7 @@ continue var/turf/T = get_turf(M) if(T) continue - if(is_admin_level(T.z)) continue + if(should_block_game_interaction(T)) continue var/tmpname = M.real_name if(areaindex[tmpname]) tmpname = "[tmpname] ([++areaindex[tmpname]])" diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index 6415e1d0acd5..5568a5fda600 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -1239,8 +1239,10 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( if(islist(prod_type)) for(var/each_type in prod_type) vendor_successful_vend_one(each_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + SEND_SIGNAL(src, COMSIG_VENDOR_SUCCESSFUL_VEND, src, itemspec, user) else vendor_successful_vend_one(prod_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + SEND_SIGNAL(src, COMSIG_VENDOR_SUCCESSFUL_VEND, src, itemspec, user) if(vend_flags & VEND_LIMITED_INVENTORY) itemspec[2]-- diff --git a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm index d5b12a264665..9d9c519c285f 100644 --- a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm +++ b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm @@ -268,6 +268,67 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( //------------ EXECUTIVE OFFFICER --------------- + +//------------WEAPON VENDOR--------------- +GLOBAL_LIST_INIT(cm_vending_gear_xo, list( + list("CAPTAIN'S PRIMARY (CHOOSE 1)", 0, null, null, null), + list("M41A MK1 Pulse Rifle", 0, /obj/item/storage/box/guncase/m41aMK1AP, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("MK221 Tactical Shotgun", 0, /obj/effect/essentials_set/xo/shotgunpreset, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + + list("PRIMARY AMMUNITION", 0, null, null, null), + list("M41A MK1 Magazine", 40, /obj/item/ammo_magazine/rifle/m41aMK1, null, VENDOR_ITEM_RECOMMENDED), + list("M41A MK1 AP Magazine", 60, /obj/item/ammo_magazine/rifle/m41aMK1/ap, null, VENDOR_ITEM_RECOMMENDED), + list("Buckshot Shells", 20, /obj/item/ammo_magazine/shotgun/buckshot, null, VENDOR_ITEM_REGULAR), + list("Shotgun Slugs", 20, /obj/item/ammo_magazine/shotgun/slugs, null, VENDOR_ITEM_REGULAR), + list("Flechette Shells", 20, /obj/item/ammo_magazine/shotgun/flechette, null, VENDOR_ITEM_REGULAR), + + list("EXPLOSIVES", 0, null, null, null), + list("HEDP Grenade Pack", 15, /obj/item/storage/box/packet/high_explosive, null, VENDOR_ITEM_REGULAR), + list("HEFA Grenade Pack", 15, /obj/item/storage/box/packet/hefa, null, VENDOR_ITEM_REGULAR), + list("WP Grenade Pack", 15, /obj/item/storage/box/packet/phosphorus, null, VENDOR_ITEM_REGULAR), + + list("RAIL ATTACHMENTS", 0, null, null, null), + list("Red-Dot Sight", 15, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 15, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("S4 2x Telescopic Mini-Scope", 15, /obj/item/attachable/scope/mini, null, VENDOR_ITEM_REGULAR), + + list("Helmet Visors", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_RECOMMENDED), + + list("UNDERBARREL ATTACHMENTS", 0, null, null, null), + list("Laser Sight", 15, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 15, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Shotgun", 15, /obj/item/attachable/attached_gun/shotgun, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Extinguisher", 15, /obj/item/attachable/attached_gun/extinguisher, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Flamethrower", 15, /obj/item/attachable/attached_gun/flamer, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Grenade Launcher", 5, /obj/item/attachable/attached_gun/grenade, null, VENDOR_ITEM_REGULAR), + + list("BARREL ATTACHMENTS", 0, null, null, null), + list("Extended Barrel", 15, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Recoil Compensator", 15, /obj/item/attachable/compensator, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + )) + +/obj/effect/essentials_set/xo/shotgunpreset + spawned_gear_list = list( + /obj/item/weapon/gun/shotgun/combat, + /obj/item/ammo_magazine/shotgun/buckshot, + /obj/item/ammo_magazine/shotgun/slugs, + ) + +/obj/structure/machinery/cm_vending/gear/executive_officer + name = "\improper ColMarTech Executive Officer Weapon Rack" + desc = "An automated weapons rack for the Executive Officer. It features a decent selection of weaponry meant only for the second in command of a ship." + req_access = list(ACCESS_MARINE_SENIOR) + vendor_role = list(JOB_XO) + icon_state = "guns" + use_snowflake_points = TRUE + +/obj/structure/machinery/cm_vending/gear/executive_officer/get_listed_products(mob/user) + return GLOB.cm_vending_gear_xo + +//------------UNIFORM/GEAR VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), @@ -285,6 +346,14 @@ GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), + list("BELTS (CHOOSE 1)", 0, null, null, null), + list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Military Police Belt", 0, /obj/item/storage/belt/security/MP/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Medical Storage Rig", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Holster Toolrig", 0, /obj/item/storage/belt/gun/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), @@ -312,7 +381,6 @@ GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("Document Pouch", 0, /obj/item/storage/pouch/document, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm index ecef3ed622d9..2395d572bad7 100644 --- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm +++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm @@ -345,18 +345,20 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( return ..() /obj/structure/machinery/cm_vending/own_points/experimental_tools/get_listed_products(mob/user) - return list( - list("Autocompressor", 15, /obj/item/clothing/suit/auto_cpr, null, VENDOR_ITEM_REGULAR), - list("Backpack Firefighting Watertank", 15, /obj/item/reagent_container/glass/watertank/atmos, null, VENDOR_ITEM_REGULAR), - list("Breaching Hammer", 15, /obj/item/weapon/twohanded/breacher/synth, null, VENDOR_ITEM_REGULAR), - list("Compact Defibrillator", 15, /obj/item/device/defibrillator/compact, null, VENDOR_ITEM_REGULAR), - list("Compact Nailgun kit", 15, /obj/effect/essentials_set/cnailgun, null, VENDOR_ITEM_REGULAR), - list("Crew Monitor", 15, /obj/item/tool/crew_monitor, null, VENDOR_ITEM_REGULAR), - list("Experimental Meson Goggles", 15, /obj/item/clothing/glasses/night/experimental_mesons, null, VENDOR_ITEM_REGULAR), - list("Maintenance Jack", 15, /obj/item/maintenance_jack, null, VENDOR_ITEM_REGULAR), - list("Portable Dialysis Machine", 15, /obj/item/tool/portadialysis, null, VENDOR_ITEM_REGULAR), - list("Telescopic Baton", 15, /obj/item/weapon/telebaton, null, VENDOR_ITEM_REGULAR), - ) + return GLOB.cm_vending_synth_tools + +GLOBAL_LIST_INIT(cm_vending_synth_tools, list( + list("Autocompressor", 15, /obj/item/clothing/suit/auto_cpr, null, VENDOR_ITEM_REGULAR), + list("Backpack Firefighting Watertank", 15, /obj/item/reagent_container/glass/watertank/atmos, null, VENDOR_ITEM_REGULAR), + list("Breaching Hammer", 15, /obj/item/weapon/twohanded/breacher/synth, null, VENDOR_ITEM_REGULAR), + list("Compact Defibrillator", 15, /obj/item/device/defibrillator/compact, null, VENDOR_ITEM_REGULAR), + list("Compact Nailgun kit", 15, /obj/effect/essentials_set/cnailgun, null, VENDOR_ITEM_REGULAR), + list("Crew Monitor", 15, /obj/item/tool/crew_monitor, null, VENDOR_ITEM_REGULAR), + list("Experimental Meson Goggles", 15, /obj/item/clothing/glasses/night/experimental_mesons, null, VENDOR_ITEM_REGULAR), + list("Maintenance Jack", 15, /obj/item/maintenance_jack, null, VENDOR_ITEM_REGULAR), + list("Portable Dialysis Machine", 15, /obj/item/tool/portadialysis, null, VENDOR_ITEM_REGULAR), + list("Telescopic Baton", 15, /obj/item/weapon/telebaton, null, VENDOR_ITEM_REGULAR), +)) //------------EXPERIMENTAL TOOL KITS--------------- /obj/effect/essentials_set/cnailgun diff --git a/code/game/machinery/vending/vendor_types/food.dm b/code/game/machinery/vending/vendor_types/food.dm index 51749ab2a010..62ed5124727e 100644 --- a/code/game/machinery/vending/vendor_types/food.dm +++ b/code/game/machinery/vending/vendor_types/food.dm @@ -25,6 +25,27 @@ list("W-Y Flask", 5, /obj/item/reagent_container/food/drinks/flask/weylandyutani, VENDOR_ITEM_REGULAR) ) +/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial + hackable = FALSE + wrenchable = FALSE + req_access = list(ACCESS_TUTORIAL_LOCKED) + +/obj/structure/machinery/cm_vending/sorted/marine_food/tutorial/populate_product_list(scale) + listed_products = list( + list("PREPARED MEALS", -1, null, null), + list("USCM Prepared Meal (Chicken)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal5, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Cornbread)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal1, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Pasta)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal3, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Pizza)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal4, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Pork)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal2, VENDOR_ITEM_REGULAR), + list("USCM Prepared Meal (Tofu)", 0, /obj/item/reagent_container/food/snacks/mre_pack/meal6, VENDOR_ITEM_REGULAR), + list("USCM Protein Bar", 1, /obj/item/reagent_container/food/snacks/protein_pack, VENDOR_ITEM_RECOMMENDED), + list("FLASKS", -1, null, null), + list("Canteen", 0, /obj/item/reagent_container/food/drinks/flask/canteen, VENDOR_ITEM_REGULAR), + list("Metal Flask", 0, /obj/item/reagent_container/food/drinks/flask, VENDOR_ITEM_REGULAR), + list("USCM Flask", 0, /obj/item/reagent_container/food/drinks/flask/marine, VENDOR_ITEM_REGULAR), + list("W-Y Flask", 0, /obj/item/reagent_container/food/drinks/flask/weylandyutani, VENDOR_ITEM_REGULAR) + ) //------------BOOZE-O-MAT VENDOR--------------- /obj/structure/machinery/cm_vending/sorted/boozeomat @@ -38,8 +59,8 @@ unslashable = FALSE wrenchable = TRUE -/obj/structure/machinery/cm_vending/sorted/boozeomat/get_listed_products(mob/user) - return list( +/obj/structure/machinery/cm_vending/sorted/boozeomat/populate_product_list(scale) + listed_products = list( list("ALCOHOL", -1, null, null), list("Ale", 6, /obj/item/reagent_container/food/drinks/cans/ale, VENDOR_ITEM_REGULAR), list("Beer", 6, /obj/item/reagent_container/food/drinks/cans/beer, VENDOR_ITEM_REGULAR), @@ -97,8 +118,8 @@ unslashable = FALSE wrenchable = TRUE -/obj/structure/machinery/cm_vending/sorted/boozeomat/chess/get_listed_products(mob/user) - return list( +/obj/structure/machinery/cm_vending/sorted/boozeomat/chess/populate_product_list(scale) + listed_products = list( list("White Pieces", -1, null, null), list("Pawn", 2, /obj/item/reagent_container/food/drinks/bottle/vodka/chess/w_pawn, VENDOR_ITEM_REGULAR), list("Bishop", 2, /obj/item/reagent_container/food/drinks/bottle/vodka/chess/w_bishop, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/intelligence_officer.dm b/code/game/machinery/vending/vendor_types/intelligence_officer.dm index 4d9ced354e2b..6446d17e2db7 100644 --- a/code/game/machinery/vending/vendor_types/intelligence_officer.dm +++ b/code/game/machinery/vending/vendor_types/intelligence_officer.dm @@ -72,6 +72,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_intelligence_officer, list( list("BACKPACK (CHOOSE 1)", 0, null, null, null), list("Expedition Pack", 0, /obj/item/storage/backpack/marine/satchel/intel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + list("Expedition Chestrig", 0, /obj/item/storage/backpack/marine/satchel/intel/chestrig, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), list("Radio Telephone Pack", 0, /obj/item/storage/backpack/marine/satchel/rto/io, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("HELMET (CHOOSE 1)", 0, null, null, null), diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 1ea56c9fc0f5..24f58c8f6ae3 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -50,7 +50,7 @@ list("M40 HPDP White Phosphorus Smoke Grenade", round(scale * 4), /obj/item/explosive/grenade/phosphorus, VENDOR_ITEM_REGULAR), list("M40 HSDP Smoke Grenade", round(scale * 5), /obj/item/explosive/grenade/smokebomb, VENDOR_ITEM_REGULAR), list("M74 AGM-Frag Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst, VENDOR_ITEM_REGULAR), - list("M74 AGM-Icendiary Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/incendiary/airburst, VENDOR_ITEM_REGULAR), + list("M74 AGM-Incendiary Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/incendiary/airburst, VENDOR_ITEM_REGULAR), list("M74 AGM-Smoke Airburst Grenade", round(scale * 4), /obj/item/explosive/grenade/smokebomb/airburst, VENDOR_ITEM_REGULAR), list("M74 AGM-Star Shell", round(scale * 2), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR), list("M74 AGM-Hornet Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/hornet_shell, VENDOR_ITEM_REGULAR), 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 6a770e89984e..e021b6fe0879 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 @@ -53,6 +53,34 @@ list("M94 Marking Flare Pack", round(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_RECOMMENDED) ) +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial + name = "\improper ColMarTech Automated Weapons Rack" + desc = "An automated weapon rack hooked up to a big storage of standard-issue weapons." + icon_state = "guns" + req_access = list(ACCESS_TUTORIAL_LOCKED) + req_one_access = list() + hackable = FALSE + vend_flags = VEND_CLUTTER_PROTECTION | VEND_LIMITED_INVENTORY | VEND_TO_HAND + +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial/populate_product_list(scale) + listed_products = list( + list("PRIMARY FIREARMS", -1, null, null), + list("M41A Pulse Rifle MK2", 1, /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_RECOMMENDED), + + list("PRIMARY AMMUNITION", -1, null, null), + list("M41A Magazine (10x24mm)", 1, /obj/item/ammo_magazine/rifle, VENDOR_ITEM_RECOMMENDED), + ) + +/// Called if the tutorial mob somehow uses an entire magazine without the xeno dying +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep/tutorial/proc/load_ammo() + listed_products = list( + list("PRIMARY FIREARMS", -1, null, null), + list("M41A Pulse Rifle MK2", 0, /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_RECOMMENDED), + + list("PRIMARY AMMUNITION", -1, null, null), + list("M41A Magazine (10x24mm)", 99, /obj/item/ammo_magazine/rifle, VENDOR_ITEM_RECOMMENDED), + ) + //------------SQUAD PREP UNIFORM VENDOR--------------- diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm index 3a15229182b4..15661cc4b661 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm @@ -45,6 +45,12 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("Rebreather", 0, /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("E-Tool", 5, /obj/item/tool/shovel/etool/folded, null, VENDOR_ITEM_REGULAR), + list("Sandbags", 20, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), + list("ES-11 Mobile Fuel Canister", 5, /obj/item/tool/weldpack/minitank, null, VENDOR_ITEM_REGULAR), + list("ME3 Hand Welder", 5, /obj/item/tool/weldingtool/simple, null, VENDOR_ITEM_REGULAR), + list("RESTRICTED FIREARMS", 0, null, null, null), list("VP78 Pistol", 15, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR), list("SU-6 Smart Pistol", 15, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), @@ -88,8 +94,6 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("Large General Pouch", 15, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), list("UTILITIES", 0, null, null, null), - list("E-Tool", 5, /obj/item/tool/shovel/etool/folded, null, VENDOR_ITEM_REGULAR), - list("Sandbags", 20, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), @@ -98,6 +102,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm index 7ddcf14eccde..d9ba7ee97c26 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm @@ -42,10 +42,14 @@ GLOBAL_LIST_INIT(cm_vending_gear_tl, list( list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), list("Night Vision Optic", 30, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), - list("UTILITIES", 0, null, null, null), - list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), + list("ENGINEERING SUPPLIES", 0, null, null, null), list("Plastic Explosive", 10, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), list("Breaching Charge", 10, /obj/item/explosive/plastic/breaching_charge, null, VENDOR_ITEM_REGULAR), + list("ES-11 Mobile Fuel Canister", 5, /obj/item/tool/weldpack/minitank, null, VENDOR_ITEM_REGULAR), + list("ME3 Hand Welder", 5, /obj/item/tool/weldingtool/simple, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), @@ -53,6 +57,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_tl, list( list("BINOCULARS", 0, null, null, null), list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), list("HELMET OPTICS", 0, null, null, null), list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/tutorial.dm b/code/game/machinery/vending/vendor_types/squad_prep/tutorial.dm new file mode 100644 index 000000000000..c1cedd85c7fc --- /dev/null +++ b/code/game/machinery/vending/vendor_types/squad_prep/tutorial.dm @@ -0,0 +1,30 @@ +GLOBAL_LIST_INIT(cm_vending_clothing_tutorial, list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Standard Marine Apparel", 0, list(/obj/item/clothing/under/marine, /obj/item/clothing/shoes/marine/knife, /obj/item/clothing/gloves/marine, /obj/item/clothing/head/helmet/marine), MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("Medium Armor", 0, /obj/item/clothing/suit/storage/marine/medium, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + + list("BACKPACK (CHOOSE 1)", 0, null, null, null), + list("Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (CHOOSE 1)", 0, null, null, null), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), + + )) // The pouch uses a different category so they only get one + +/obj/structure/machinery/cm_vending/clothing/tutorial + name = "\improper ColMarTech Automated Marine Equipment Rack" + desc = "An automated rack hooked up to a colossal storage of Marine Rifleman standard-issue equipment." + icon_state = "mar_rack" + show_points = TRUE + vendor_theme = VENDOR_THEME_USCM + req_access = list(ACCESS_TUTORIAL_LOCKED) + + vendor_role = list() + +/obj/structure/machinery/cm_vending/clothing/tutorial/get_listed_products(mob/user) + return GLOB.cm_vending_clothing_tutorial diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm index 5f4a374ba31c..45cc6fd8b5fa 100644 --- a/code/game/objects/effects/landmarks/landmarks.dm +++ b/code/game/objects/effects/landmarks/landmarks.dm @@ -508,3 +508,7 @@ /// In landmarks.dm and not unit_test.dm so it is always active in the mapping tools. /obj/effect/landmark/unit_test_top_right name = "unit test zone top right" + +/// Marks the bottom left of the tutorial zone. +/obj/effect/landmark/tutorial_bottom_left + name = "tutorial bottom left" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 11da4cce6d98..7cb2781b253b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -364,6 +364,7 @@ cases. Override_icon_state should be a list.*/ qdel(src) SEND_SIGNAL(src, COMSIG_ITEM_DROPPED, user) + SEND_SIGNAL(user, COMSIG_MOB_ITEM_DROPPED, src) if(drop_sound && (src.loc?.z)) playsound(src, drop_sound, dropvol, drop_vary) src.do_drop_animation(user) @@ -708,7 +709,7 @@ cases. Override_icon_state should be a list.*/ if(WEAR_IN_SHOES) if(human.shoes && istype(human.shoes, /obj/item/clothing/shoes)) var/obj/item/clothing/shoes/shoes = human.shoes - if(shoes.attempt_insert_item(human, src)) + if(shoes.can_be_inserted(src)) return TRUE return FALSE if(WEAR_IN_SCABBARD) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 7ec941f1192b..e5c717e699f0 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -520,6 +520,7 @@ name = "corporate liaison radio headset" desc = "Used by the CL to convince people to sign NDAs. Channels are as follows: :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medbay, :u - requisitions, :j - JTAC, :t - intel, :y for WY." icon_state = "wy_headset" + maximum_keys = 5 initial_keys = list(/obj/item/device/encryptionkey/mcom/cl) /obj/item/device/radio/headset/almayer/reporter diff --git a/code/game/objects/items/devices/radio/listening_bugs.dm b/code/game/objects/items/devices/radio/listening_bugs.dm index 4a84df071c60..67a91de1bd56 100644 --- a/code/game/objects/items/devices/radio/listening_bugs.dm +++ b/code/game/objects/items/devices/radio/listening_bugs.dm @@ -90,7 +90,7 @@ var/processed_verb = "[SPAN_RED("\[LSTN [nametag]\]")] [verb]" if(broadcasting) if(get_dist(src, M) <= 7) - talk_into(M, msg,null,processed_verb,speaking) + talk_into(M, msg, null, processed_verb, speaking, listening_device = TRUE) /obj/item/device/radio/listening_bug/afterattack(atom/target_atom, mob/user as mob, proximity) if(!ready_to_disguise) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index c628758c74e8..43eb1810d700 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -206,7 +206,7 @@ // If we were to send to a channel we don't have, drop it. return null -/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, verb = "says", datum/language/speaking = null) +/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, verb = "says", datum/language/speaking = null, listening_device = FALSE) if(!on) return // the device has to be on // Fix for permacell radios, but kinda eh about actually fixing them. if(!M || !message) return @@ -297,11 +297,11 @@ if(use_volume) Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), src, message, displayname, jobname, real_name, M.voice_name, - filter_type, 0, target_zs, connection.frequency, verb, speaking, volume) + filter_type, 0, target_zs, connection.frequency, verb, speaking, volume, listening_device) else Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), src, message, displayname, jobname, real_name, M.voice_name, - filter_type, 0, target_zs, connection.frequency, verb, speaking, RADIO_VOLUME_QUIET) + filter_type, 0, target_zs, connection.frequency, verb, speaking, RADIO_VOLUME_QUIET, listening_device) /obj/item/device/radio/proc/get_target_zs(frequency) var/turf/position = get_turf(src) diff --git a/code/game/objects/items/devices/teleportation.dm b/code/game/objects/items/devices/teleportation.dm index 793f399ecdf0..8dea3b872cd1 100644 --- a/code/game/objects/items/devices/teleportation.dm +++ b/code/game/objects/items/devices/teleportation.dm @@ -48,7 +48,7 @@ if (usr.stat || usr.is_mob_restrained()) return var/turf/current_location = get_turf(usr)//What turf is the user on? - if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2. + if(!current_location || should_block_game_interaction(current_location))//If turf was not found or they're on z level 2. to_chat(usr, "[src] is malfunctioning.") return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) @@ -140,7 +140,7 @@ ..() var/turf/current_location = get_turf(user)//What turf is the user on? - if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2 + if(!current_location || should_block_game_interaction(current_location))//If turf was not found or they're on z level 2 to_chat(user, SPAN_NOTICE("\The [src] is malfunctioning.")) return var/list/L = list( ) diff --git a/code/game/objects/items/reagent_containers/autoinjectors.dm b/code/game/objects/items/reagent_containers/autoinjectors.dm index 46463e628c1d..04a3a15585ab 100644 --- a/code/game/objects/items/reagent_containers/autoinjectors.dm +++ b/code/game/objects/items/reagent_containers/autoinjectors.dm @@ -139,6 +139,12 @@ item_state = "emptyskill" skilllock = SKILL_MEDICAL_DEFAULT +/obj/item/reagent_container/hypospray/autoinjector/tramadol/skillless/one_use + desc = "An EZ autoinjector loaded with 1 use of Tramadol, a weak but effective painkiller for normal wounds. Doesn't require any training to use." + volume = 15 + amount_per_transfer_from_this = 15 + uses_left = 1 + /obj/item/reagent_container/hypospray/autoinjector/oxycodone name = "oxycodone autoinjector (EXTREME PAINKILLER)" chemname = "oxycodone" @@ -164,6 +170,12 @@ item_state = "emptyskill" skilllock = SKILL_MEDICAL_DEFAULT +/obj/item/reagent_container/hypospray/autoinjector/kelotane/skillless/one_use + desc = "An EZ autoinjector loaded with 1 use of Kelotane, a common burn medicine. Doesn't require any training to use." + volume = 15 + amount_per_transfer_from_this = 15 + uses_left = 1 + /obj/item/reagent_container/hypospray/autoinjector/bicaridine name = "bicaridine autoinjector" chemname = "bicaridine" @@ -180,6 +192,12 @@ item_state = "emptyskill" skilllock = SKILL_MEDICAL_DEFAULT +/obj/item/reagent_container/hypospray/autoinjector/bicaridine/skillless/one_use + desc = "An EZ autoinjector loaded with 1 use of Bicaridine, a common brute and circulatory damage medicine. Doesn't require any training to use." + volume = 15 + amount_per_transfer_from_this = 15 + uses_left = 1 + /obj/item/reagent_container/hypospray/autoinjector/inaprovaline name = "inaprovaline autoinjector" chemname = "inaprovaline" diff --git a/code/game/objects/items/reagent_containers/food/drinks.dm b/code/game/objects/items/reagent_containers/food/drinks.dm index 9f88990e5350..db83723bc8df 100644 --- a/code/game/objects/items/reagent_containers/food/drinks.dm +++ b/code/game/objects/items/reagent_containers/food/drinks.dm @@ -23,6 +23,10 @@ to_chat(user, SPAN_DANGER("The [src.name] is empty!")) return FALSE + if(HAS_TRAIT(M, TRAIT_CANNOT_EAT)) + to_chat(user, SPAN_DANGER("[user == M ? "You are" : "[M] is"] unable to drink!")) + return FALSE + if(M == user) to_chat(M, SPAN_NOTICE(" You swallow a gulp from \the [src].")) if(reagents.total_volume) diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index 0a1d0e8aad07..076a4f77cf01 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -21,6 +21,7 @@ //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/reagent_container/food/snacks/proc/On_Consume(mob/M) SEND_SIGNAL(src, COMSIG_SNACK_EATEN, M) + SEND_SIGNAL(M, COMSIG_MOB_EATEN_SNACK, src) if(!usr) return if(!reagents.total_volume) @@ -42,7 +43,7 @@ ..() if (world.time <= user.next_move) - return + return FALSE attack(user, user, "head")//zone does not matter user.next_move += attack_speed @@ -51,24 +52,24 @@ to_chat(user, SPAN_DANGER("None of [src] left, oh no!")) M.drop_inv_item_on_ground(src) //so icons update :[ qdel(src) - return 0 + return FALSE if(package) to_chat(M, SPAN_WARNING("How do you expect to eat this with the package still on?")) - return 0 + return FALSE if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) if(fullness > NUTRITION_HIGH && world.time < C.overeat_cooldown) to_chat(user, SPAN_WARNING("[user == M ? "You" : "They"] don't feel like eating more right now.")) - return + return FALSE if(issynth(C)) fullness = 200 //Synths never get full if(HAS_TRAIT(M, TRAIT_CANNOT_EAT)) //Do not feed the Working Joes to_chat(user, SPAN_DANGER("[user == M ? "You are" : "[M] is"] unable to eat!")) - return + return FALSE if(fullness > NUTRITION_HIGH) C.overeat_cooldown = world.time + OVEREAT_TIME @@ -120,9 +121,9 @@ reagents.trans_to_ingest(M, reagents.total_volume) bitecount++ On_Consume(M) - return 1 + return TRUE - return 0 + return FALSE /obj/item/reagent_container/food/snacks/afterattack(obj/target, mob/user, proximity) return ..() diff --git a/code/game/objects/items/reagent_containers/hypospray.dm b/code/game/objects/items/reagent_containers/hypospray.dm index fcea8997f0b5..5e268d35a33d 100644 --- a/code/game/objects/items/reagent_containers/hypospray.dm +++ b/code/game/objects/items/reagent_containers/hypospray.dm @@ -206,6 +206,7 @@ to_chat(user, SPAN_NOTICE(" You inject [M] with [src].")) to_chat(M, SPAN_WARNING("You feel a tiny prick!")) playsound(loc, injectSFX, injectVOL, 1) + SEND_SIGNAL(M, COMSIG_LIVING_HYPOSPRAY_INJECTED, src) reagents.reaction(M, INGEST) if(M.reagents) diff --git a/code/game/objects/items/shards.dm b/code/game/objects/items/shards.dm index 84c3d5b83427..dab573e6f5a5 100644 --- a/code/game/objects/items/shards.dm +++ b/code/game/objects/items/shards.dm @@ -81,7 +81,7 @@ /obj/item/large_shrapnel/proc/on_embedded_movement(mob/living/embedded_mob) return -/obj/item/large_shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ) +/obj/item/large_shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) return /obj/item/large_shrapnel/at_rocket_dud @@ -180,14 +180,14 @@ cell_explosion(get_turf(target), 200, 150, EXPLOSION_FALLOFF_SHAPE_LINEAR, direction, create_cause_data("[cause] UXO detonation", user)) qdel(src) -/obj/item/large_shrapnel/at_rocket_dud/on_embed(mob/embedded_mob, obj/limb/target_organ) +/obj/item/large_shrapnel/at_rocket_dud/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) if(!ishuman(embedded_mob)) return var/mob/living/carbon/human/H = embedded_mob if(H.species.flags & NO_SHRAPNEL) return if(istype(target_organ)) - target_organ.embed(src) + target_organ.embed(src, silent) /obj/item/large_shrapnel/at_rocket_dud/on_embedded_movement(mob/living/embedded_mob) if(!ishuman(embedded_mob)) @@ -212,14 +212,14 @@ source_sheet_type = null var/damage_on_move = 0.5 -/obj/item/shard/shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ) +/obj/item/shard/shrapnel/proc/on_embed(mob/embedded_mob, obj/limb/target_organ, silent = FALSE) if(!ishuman(embedded_mob)) return var/mob/living/carbon/human/H = embedded_mob if(H.species.flags & NO_SHRAPNEL) return if(istype(target_organ)) - target_organ.embed(src) + target_organ.embed(src, silent) /obj/item/shard/shrapnel/proc/on_embedded_movement(mob/living/embedded_mob) if(!ishuman(embedded_mob)) @@ -228,7 +228,7 @@ if(H.species.flags & NO_SHRAPNEL) return var/obj/limb/organ = embedded_organ - if(istype(organ)) + if(istype(organ) && damage_on_move) organ.take_damage(damage_on_move * count, 0, 0, no_limb_loss = TRUE) embedded_mob.pain.apply_pain(damage_on_move * count) @@ -261,3 +261,7 @@ name = "alien bone fragments" icon_state = "alienbonechips" desc = "Sharp, jagged fragments of alien bone. Looks like the previous owner exploded violently..." + +/obj/item/shard/shrapnel/tutorial + damage_on_move = 0 + diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index f96903cfb687..5434aa006137 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -95,6 +95,9 @@ to_chat(user, SPAN_WARNING("There are no wounds on [possessive] [affecting.display_name].")) return TRUE +/obj/item/stack/medical/bruise_pack/two + amount = 2 + /obj/item/stack/medical/ointment name = "ointment" desc = "Used to treat burns, infected wounds, and relieve itching in unusual places." diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 412dcf164cd4..29c4ec15d03a 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -461,6 +461,12 @@ icon_state = "marinebigsatch" max_storage_space = 20 +/obj/item/storage/backpack/marine/satchel/intel/chestrig + name = "\improper USCM expedition chestrig" + desc = "A heavy-duty IMP based chestrig, can quickly be accessed with only one hand. Usually issued to USCM intelligence officers." + icon_state = "intel_chestrig" + max_storage_space = 20 + /obj/item/storage/backpack/marine/satchel name = "\improper USCM satchel" desc = "A heavy-duty satchel carried by some USCM soldiers and support personnel." diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 9afa0dfd1851..d12f09c2042e 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -302,7 +302,7 @@ if(istype(W) && !W.heat_source && !W.burnt) if(prob(burn_chance)) to_chat(user, SPAN_WARNING("\The [W] lights, but you burn your hand in the process! Ouch!")) - user.apply_damage(3, BRUTE, pick("r_hand", "l_hand")) + user.apply_damage(3, BURN, pick("r_hand", "l_hand")) if((user.pain.feels_pain) && prob(25)) user.emote("scream") W.light_match() diff --git a/code/game/objects/items/storage/large_holster.dm b/code/game/objects/items/storage/large_holster.dm index b02dff1bdbcc..3f653926f8b3 100644 --- a/code/game/objects/items/storage/large_holster.dm +++ b/code/game/objects/items/storage/large_holster.dm @@ -253,9 +253,12 @@ to_chat(user, SPAN_WARNING("[src] must be equipped before you can switch types.")) return - var/obj/item/weapon/gun/flamer/M240T/flamer = user.get_active_hand() - if(!istype(flamer)) - to_chat(user, SPAN_WARNING("You must be holding [flamer] to use [src].")) + if(!linked_flamer) + to_chat(user, SPAN_WARNING("An incinerator unit must be linked in order to switch fuel types.")) + return + + if(user.get_active_hand() != linked_flamer) + to_chat(user, SPAN_WARNING("You must be holding [linked_flamer] to use [src].")) return if(!active_fuel) @@ -276,8 +279,8 @@ to_chat(user, "You switch the fuel tank to [active_fuel.caliber]") playsound(src, 'sound/machines/click.ogg', 25, TRUE) - flamer.current_mag = active_fuel - flamer.update_icon() + linked_flamer.current_mag = active_fuel + linked_flamer.update_icon() return TRUE diff --git a/code/game/objects/items/weapons/blades.dm b/code/game/objects/items/weapons/blades.dm index 2fe80f123bce..a2a4aa8db75d 100644 --- a/code/game/objects/items/weapons/blades.dm +++ b/code/game/objects/items/weapons/blades.dm @@ -213,6 +213,8 @@ else INVOKE_ASYNC(embedded_human, TYPE_PROC_REF(/mob, emote), "me", 1, pick("winces.", "grimaces.", "flinches.")) + SEND_SIGNAL(embedded_human, COMSIG_HUMAN_SHRAPNEL_REMOVED) + else to_chat(user, SPAN_NOTICE("You couldn't find any shrapnel.")) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index cc9f1fe53fea..7747a45ed9da 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -278,6 +278,11 @@ if (iszombie(user)) return + // mobs that become immobilized should not be able to buckle themselves. + if(M == user && HAS_TRAIT(user, TRAIT_IMMOBILIZED)) + to_chat(user, SPAN_WARNING("You are unable to do this in your current state.")) + return + if(density) density = FALSE if(!step(M, get_dir(M, src)) && loc != M.loc) diff --git a/code/game/objects/structures/barricade/barricade.dm b/code/game/objects/structures/barricade/barricade.dm index 5a72ec33ea2a..b23e07f707f2 100644 --- a/code/game/objects/structures/barricade/barricade.dm +++ b/code/game/objects/structures/barricade/barricade.dm @@ -19,6 +19,7 @@ var/force_level_absorption = 5 //How much force an item needs to even damage it at all. var/barricade_hitsound var/barricade_type = "barricade" //"metal", "plasteel", etc. + var/wire_icon = 'icons/obj/structures/barricades.dmi' //! Icon file used for the wiring var/can_change_dmg_state = TRUE var/damage_state = BARRICADE_DMG_NONE var/closed = FALSE @@ -102,9 +103,9 @@ if(is_wired) if(!closed) - overlays += image('icons/obj/structures/barricades.dmi', icon_state = "[src.barricade_type]_wire") + overlays += image(wire_icon, icon_state = "[barricade_type]_wire") else - overlays += image('icons/obj/structures/barricades.dmi', icon_state = "[src.barricade_type]_closed_wire") + overlays += image(wire_icon, icon_state = "[barricade_type]_closed_wire") ..() diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 34b0fb01e9d6..ee2c2bcee882 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -322,6 +322,7 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) base_bed_icon = "stretcher" accepts_bodybag = TRUE var/stretcher_activated + var/view_range = 5 var/obj/structure/dropship_equipment/medevac_system/linked_medevac surgery_duration_multiplier = SURGERY_SURFACE_MULT_AWFUL //On the one hand, it's a big stretcher. On the other hand, you have a big sheet covering the patient and those damned Fulton hookups everywhere. @@ -352,6 +353,14 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) toggle_medevac_beacon(usr) +// Used to pretend to be a camera +/obj/structure/bed/medevac_stretcher/proc/can_use() + return TRUE + +// Used to pretend to be a camera +/obj/structure/bed/medevac_stretcher/proc/isXRay() + return FALSE + /obj/structure/bed/medevac_stretcher/proc/toggle_medevac_beacon(mob/user) if(!ishuman(user)) return diff --git a/code/game/sim_manager/datums/simulator.dm b/code/game/sim_manager/datums/simulator.dm index bf99c65ee66f..1f1aedad8153 100644 --- a/code/game/sim_manager/datums/simulator.dm +++ b/code/game/sim_manager/datums/simulator.dm @@ -1,18 +1,21 @@ +#define GRID_CLEARING_SIZE 16 + /datum/simulator // Necessary to prevent multiple users from simulating at the same time. var/static/detonation_cooldown = 0 + var/static/detonation_cooldown_time = 2 MINUTES var/static/sim_reboot_state = TRUE - var/looking_at_simulation = FALSE - var/detonation_cooldown_time = 2 MINUTES var/dummy_mode = CLF_MODE var/obj/structure/machinery/camera/simulation/sim_camera - var/grid_clearing_size = 16 // garbage collection, var/static/list/delete_targets = list() + // list of users currently inside the simulator + var/static/list/users_in_sim = list() + /* unarmoured humans are unnencessary clutter as they tend to explode easily and litter the sim room with body parts, best left out. @@ -29,7 +32,7 @@ /datum/simulator/proc/start_watching(mob/living/user) - if(looking_at_simulation) + if(user in users_in_sim) to_chat(user, SPAN_WARNING("You are already looking at the simulation.")) return if(!sim_camera) @@ -41,13 +44,15 @@ to_chat(user, SPAN_WARNING("You're too busy looking at something else.")) return user.reset_view(sim_camera) - looking_at_simulation = TRUE + users_in_sim += user /datum/simulator/proc/stop_watching(mob/living/user) + if(!(user in users_in_sim)) + return user.unset_interaction() user.reset_view(null) user.cameraFollow = null - looking_at_simulation = FALSE + users_in_sim -= user /datum/simulator/proc/sim_turf_garbage_collection() @@ -67,8 +72,8 @@ y:2 | x: 1 2 3 4 ... 16 y:1 | x: 1 2 3 4 ... 16 */ - for (var/y_pos in 1 to grid_clearing_size)// outer y - for (var/x_pos in 1 to grid_clearing_size) // inner x + for (var/y_pos in 1 to GRID_CLEARING_SIZE)// outer y + for (var/x_pos in 1 to GRID_CLEARING_SIZE) // inner x var/turf/current_grid = locate(sim_grid_start_pos.x + x_pos,sim_grid_start_pos.y + y_pos,sim_grid_start_pos.z) current_grid.empty(/turf/open/floor/engine) @@ -101,3 +106,4 @@ addtimer(CALLBACK(src, PROC_REF(sim_turf_garbage_collection)), 30 SECONDS, TIMER_STOPPABLE) +#undef GRID_CLEARING_SIZE diff --git a/code/game/sound.dm b/code/game/sound.dm index 6adaab109794..ac863a3bc51e 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -344,7 +344,7 @@ S = pick('sound/voice/alien_queen_command.ogg','sound/voice/alien_queen_command2.ogg','sound/voice/alien_queen_command3.ogg') // Human if("male_scream") - S = pick('sound/voice/human_male_scream_1.ogg','sound/voice/human_male_scream_2.ogg','sound/voice/human_male_scream_3.ogg','sound/voice/human_male_scream_4.ogg',5;'sound/voice/human_male_scream_5.ogg',5;'sound/voice/human_jackson_scream.ogg',5;'sound/voice/human_ack_scream.ogg') + S = pick('sound/voice/human_male_scream_1.ogg','sound/voice/human_male_scream_2.ogg','sound/voice/human_male_scream_3.ogg','sound/voice/human_male_scream_4.ogg',5;'sound/voice/human_male_scream_5.ogg',5;'sound/voice/human_jackson_scream.ogg',5;'sound/voice/human_ack_scream.ogg','sound/voice/human_male_scream_6.ogg') if("male_pain") S = pick('sound/voice/human_male_pain_1.ogg','sound/voice/human_male_pain_2.ogg','sound/voice/human_male_pain_3.ogg',5;'sound/voice/tomscream.ogg',5;'sound/voice/human_bobby_pain.ogg',5;'sound/voice/human_tantrum_scream.ogg', 5;'sound/voice/human_male_pain_rare_1.ogg') if("male_fragout") diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 069d932d991b..8214ee76d091 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -667,9 +667,12 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) var/list/packages -/obj/item/paper/manifest/read_paper(mob/user) +/obj/item/paper/manifest/read_paper(mob/user, scramble = FALSE) + var/paper_info = info + if(scramble) + paper_info = stars_decode_html(info) // Tossing ref in widow id as this allows us to read multiple manifests at same time - show_browser(user, "[info][stamps]", null, "manifest\ref[src]", "size=550x650") + show_browser(user, "[paper_info][stamps]", null, "manifest\ref[src]", "size=550x650") onclose(user, "manifest\ref[src]") /obj/item/paper/manifest/proc/generate_contents() @@ -1442,7 +1445,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) world.log << "## ERROR: Eek. The supply/elevator datum is missing somehow." return - if(!is_admin_level(SSshuttle.vehicle_elevator.z)) + if(!should_block_game_interaction(SSshuttle.vehicle_elevator)) to_chat(usr, SPAN_WARNING("The elevator needs to be in the cargo bay dock to call a vehicle up. Ask someone to send it away.")) return diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 71491cd7d6f9..85996fca1927 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -67,7 +67,7 @@ GLOBAL_LIST_INIT(admin_verbs_default, list( /datum/admins/proc/subtlemessageall, /datum/admins/proc/alertall, /datum/admins/proc/imaginary_friend, - /client/proc/toggle_ares_ping, + /client/proc/toggle_admin_pings, /client/proc/cmd_admin_say, /*staff-only ooc chat*/ /client/proc/cmd_mod_say, /* alternate way of typing asay, no different than cmd_admin_say */ /client/proc/cmd_admin_tacmaps_panel, @@ -585,15 +585,15 @@ GLOBAL_LIST_INIT(roundstart_mod_verbs, list( message_admins("[key_name(usr)] announced a random fact.") SSticker.mode?.declare_fun_facts() -/client/proc/toggle_ares_ping() - set name = "Toggle ARES notification sound" - set category = "Preferences.Logs" +/client/proc/toggle_admin_pings() + set name = "Toggle StaffIC log sounds" + set category = "Preferences.Sound" prefs.toggles_sound ^= SOUND_ARES_MESSAGE if (prefs.toggles_sound & SOUND_ARES_MESSAGE) - to_chat(usr, SPAN_BOLDNOTICE("You will now hear a ping for ARES messages.")) + to_chat(usr, SPAN_BOLDNOTICE("You will now hear an audio cue for ARES and Prayer messages.")) else - to_chat(usr, SPAN_BOLDNOTICE("You will no longer hear a ping for ARES messages.")) + to_chat(usr, SPAN_BOLDNOTICE("You will no longer hear an audio cue for ARES and Prayer messages.")) #undef MAX_WARNS diff --git a/code/modules/admin/player_panel/actions/general.dm b/code/modules/admin/player_panel/actions/general.dm index a47a42d44cc2..e4ebc9fb85dd 100644 --- a/code/modules/admin/player_panel/actions/general.dm +++ b/code/modules/admin/player_panel/actions/general.dm @@ -68,17 +68,9 @@ message_admins("[key_name_admin(user)] has sent [key_name_admin(target)] back to the Lobby.") - var/mob/new_player/NP = new() - - if(!target.mind) - target.mind_initialize() - - target.mind.transfer_to(NP) - - qdel(target) + target.send_to_lobby() return TRUE - /datum/player_action/force_say action_tag = "mob_force_say" name = "Force Say" diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index 830717ef91b9..839dea7b2334 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -570,7 +570,12 @@ if(!admin_holder || !(admin_holder.rights & R_MOD)) to_chat(src, "Only administrators may use this command.") - return + return FALSE + + if(!ares_is_active()) + to_chat(usr, SPAN_WARNING("[MAIN_AI_SYSTEM] is destroyed, and cannot talk!")) + return FALSE + var/input = input(usr, "This is a standard message from the ship's AI. It uses Almayer General channel and won't be heard by humans without access to Almayer General channel (headset or intercom). Check with online staff before you send this. Do not use html.", "What?", "") as message|null if(!input) return FALSE @@ -579,7 +584,7 @@ var/prompt = tgui_alert(src, "ARES interface processor is offline or destroyed, send the message anyways?", "Choose.", list("Yes", "No"), 20 SECONDS) if(prompt == "No") to_chat(usr, SPAN_WARNING("[MAIN_AI_SYSTEM] is not responding. It's interface processor may be offline or destroyed.")) - return + return FALSE ai_announcement(input) message_admins("[key_name_admin(src)] has created an AI comms report") @@ -592,13 +597,17 @@ if(!admin_holder || !(admin_holder.rights & R_MOD)) to_chat(src, "Only administrators may use this command.") - return + return FALSE + + if(!ares_is_active()) + to_chat(usr, SPAN_WARNING("[MAIN_AI_SYSTEM] is destroyed, and cannot talk!")) + return FALSE + var/input = tgui_input_text(usr, "This is a broadcast from the ship AI to Working Joes and Maintenance Drones. Do not use html.", "What?", "") if(!input) return FALSE - var/datum/ares_link/link = GLOB.ares_link - if(link.processor_apollo.inoperable()) + if(!ares_can_apollo()) var/prompt = tgui_alert(src, "ARES APOLLO processor is offline or destroyed, send the message anyways?", "Choose.", list("Yes", "No"), 20 SECONDS) if(prompt != "Yes") to_chat(usr, SPAN_WARNING("[MAIN_AI_SYSTEM] is not responding. It's APOLLO processor may be offline or destroyed.")) @@ -1007,10 +1016,11 @@ if("Xeno") GLOB.bioscan_data.qm_bioscan(variance) if("Marine") - var/force_check = tgui_alert(usr, "Do you wish to force ARES to display the bioscan?", "Display force", list("Yes", "No"), 20 SECONDS) var/force_status = FALSE - if(force_check == "Yes") - force_status = TRUE + if(!ares_can_interface()) //proc checks if ARES is dead or if ARES cannot do announcements + var/force_check = tgui_alert(usr, "ARES is currently unable to properly display and/or perform the Bioscan, do you wish to force ARES to display the bioscan?", "Display force", list("Yes", "No"), 20 SECONDS) + if(force_check == "Yes") + force_status = TRUE GLOB.bioscan_data.ares_bioscan(force_status, variance) if("Yautja") GLOB.bioscan_data.yautja_bioscan() diff --git a/code/modules/admin/topic/topic_events.dm b/code/modules/admin/topic/topic_events.dm index 0c37e81f2641..da8743d6dead 100644 --- a/code/modules/admin/topic/topic_events.dm +++ b/code/modules/admin/topic/topic_events.dm @@ -205,6 +205,7 @@ em_call.mob_max = humans.len em_call.players_to_offer = humans em_call.owner = owner + var/quiet_launch = TRUE var/ql_prompt = tgui_alert(usr, "Would you like to broadcast the beacon launch? This will reveal the distress beacon to all players.", "Announce distress beacon?", list("Yes", "No"), 20 SECONDS) if(ql_prompt == "Yes") @@ -214,7 +215,7 @@ var/ar_prompt = tgui_alert(usr, "Would you like to announce the beacon received message? This will reveal the distress beacon to all players.", "Announce beacon received?", list("Yes", "No"), 20 SECONDS) if(ar_prompt == "Yes") announce_receipt = TRUE - log_debug("ERT DEBUG (CUSTOM SET): [quiet_launch] - [announce_receipt]") + em_call.activate(quiet_launch, announce_receipt) message_admins("[key_name_admin(usr)] created [humans_to_spawn] humans as [job_name] at [get_area(initial_spot)]") @@ -285,7 +286,7 @@ xenos += X - if (offer_as_ert) + if(offer_as_ert) var/datum/emergency_call/custom/em_call = new() var/name = input(usr, "Please name your ERT", "ERT Name", "Admin spawned xenos") em_call.name = name @@ -293,19 +294,16 @@ em_call.players_to_offer = xenos em_call.owner = owner - var/launch_broadcast = tgui_alert(usr, "Would you like to broadcast the beacon launch? This will reveal the distress beacon to all players.", "Announce distress beacon?", list("Yes", "No"), 20 SECONDS) - if(launch_broadcast == "Yes") - launch_broadcast = TRUE - else - launch_broadcast = FALSE + var/quiet_launch = TRUE + var/ql_prompt = tgui_alert(usr, "Would you like to broadcast the beacon launch? This will reveal the distress beacon to all players.", "Announce distress beacon?", list("Yes", "No"), 20 SECONDS) + if(ql_prompt == "Yes") + quiet_launch = FALSE - var/announce_receipt = tgui_alert(usr, "Would you like to announce the beacon received message? This will reveal the distress beacon to all players.", "Announce beacon received?", list("Yes", "No"), 20 SECONDS) - if(announce_receipt == "Yes") + var/announce_receipt = FALSE + var/ar_prompt = tgui_alert(usr, "Would you like to announce the beacon received message? This will reveal the distress beacon to all players.", "Announce beacon received?", list("Yes", "No"), 20 SECONDS) + if(ar_prompt == "Yes") announce_receipt = TRUE - else - announce_receipt = FALSE - em_call.activate(launch_broadcast, announce_receipt) + em_call.activate(quiet_launch, announce_receipt) message_admins("[key_name_admin(usr)] created [xenos_to_spawn] xenos as [xeno_caste] at [get_area(initial_spot)]") - diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 66ed690a0e80..f6df1e652ba5 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -12,23 +12,20 @@ if(src.client.handle_spam_prevention(msg,MUTE_PRAY)) return - var/liaison = 0 - if(job == "Corporate Liaison") - liaison = 1 + var/prefix = SPAN_PURPLE("PRAY: ") + var/receipt = "Your prayers have been received by the gods." + if(job == JOB_CORPORATE_LIAISON) + prefix = SPAN_PURPLE("LIAISON: ") + receipt = "Your corporate overlords at Weyland-Yutani have received your message." - if(liaison) - msg = "[SPAN_STAFF_IC("LIAISON:")][key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]" - else - msg = "[SPAN_STAFF_IC("PRAY: ")][key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]" + msg = SPAN_BIGNOTICE("[prefix][key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]") log_admin(msg) - for(var/client/C in GLOB.admins) - if(AHOLD_IS_MOD(C.admin_holder) && C.prefs.toggles_chat & CHAT_PRAYER) - to_chat(C, msg) - C << 'sound/machines/terminal_alert.ogg' - if(liaison) - to_chat(usr, "Your corporate overlords at Weyland-Yutani have received your message.") - else - to_chat(usr, "Your prayers have been received by the gods.") + for(var/client/admin in GLOB.admins) + if(AHOLD_IS_MOD(admin.admin_holder)) + to_chat(admin, SPAN_STAFF_IC(msg)) + if(admin.prefs.toggles_sound & SOUND_ARES_MESSAGE) + admin << 'sound/machines/terminal_alert.ogg' + to_chat(usr, receipt) /proc/high_command_announce(text , mob/Sender , iamessage) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 300c999b885b..e9587319a160 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -378,6 +378,22 @@ Insert("[icon_name]_big", iconBig) return ..() +/datum/asset/spritesheet/tutorial + name = "tutorial" + +/datum/asset/spritesheet/tutorial/register() + for(var/icon_state in icon_states('icons/misc/tutorial.dmi')) + var/icon/icon_sprite = icon('icons/misc/tutorial.dmi', icon_state) + icon_sprite.Scale(128, 128) + Insert(icon_state, icon_sprite) + + var/icon/retrieved_icon = icon('icons/mob/hud/human_dark.dmi', "intent_all") + retrieved_icon.Scale(128, 128) + Insert("intents", retrieved_icon) + + return ..() + + /datum/asset/spritesheet/gun_lineart name = "gunlineart" diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 171cade3ed4e..a085cb7634d6 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -15,7 +15,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( "1548" = "bug breaking the \"alpha\" functionality in the game, allowing clients to be able to see things/mobs they should not be able to see.", )) -#define LIMITER_SIZE 5 +#define LIMITER_SIZE 12 #define CURRENT_SECOND 1 #define SECOND_COUNT 2 #define CURRENT_MINUTE 3 @@ -57,6 +57,12 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( /client/proc/set_eye_blur_type, )) +/client/proc/reduce_minute_count() + if (!topiclimiter) + topiclimiter = new(LIMITER_SIZE) + if(topiclimiter[MINUTE_COUNT] > 0) + topiclimiter[MINUTE_COUNT] -= 1 + /client/Topic(href, href_list, hsrc) if(!usr || usr != mob) //stops us calling Topic for somebody else's client. Also helps prevent usr=null return @@ -842,3 +848,32 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( total_t3_playtime += get_job_playtime(src, caste_name) return total_t3_playtime + +/client/verb/action_hide_menu() + set name = "Show/Hide Actions" + set category = "IC" + + var/mob/user = usr + + var/list/actions_list = list() + for(var/datum/action/action as anything in user.actions) + var/action_name = action.name + if(action.player_hidden) + action_name += " (Hidden)" + actions_list[action_name] += action + + if(!LAZYLEN(actions_list)) + to_chat(user, SPAN_WARNING("You have no actions available.")) + return + + var/selected_action_name = tgui_input_list(user, "Show or hide selected action", "Show/Hide Actions", actions_list, 30 SECONDS) + if(!selected_action_name) + to_chat(user, SPAN_WARNING("You did not select an action.")) + return + + var/datum/action/selected_action = actions_list[selected_action_name] + selected_action.player_hidden = !selected_action.player_hidden + user.update_action_buttons() + + if(!selected_action.player_hidden && selected_action.hidden) //Inform the player that even if they are unhiding it, itll still not be visible + to_chat(user, SPAN_NOTICE("[selected_action] is forcefully hidden, bypassing player unhiding.")) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 6c52b497f9a3..29676ddb4ac8 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -239,6 +239,8 @@ GLOBAL_LIST_INIT(bgstate_options, list( /// if this client has tooltips enabled var/tooltips = TRUE + /// A list of tutorials that the client has completed, saved across rounds + var/list/completed_tutorials = list() /// If this client has auto observe enabled, used by /datum/orbit_menu var/auto_observe = TRUE @@ -573,6 +575,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( dat += "Ghost Ears: [(toggles_chat & CHAT_GHOSTEARS) ? "All Speech" : "Nearest Creatures"]
" dat += "Ghost Sight: [(toggles_chat & CHAT_GHOSTSIGHT) ? "All Emotes" : "Nearest Creatures"]
" dat += "Ghost Radio: [(toggles_chat & CHAT_GHOSTRADIO) ? "All Chatter" : "Nearest Speakers"]
" + dat += "Ghost Spy Radio: [(toggles_chat & CHAT_LISTENINGBUG) ? "Hear" : "Silence"] listening devices
" dat += "Ghost Hivemind: [(toggles_chat & CHAT_GHOSTHIVEMIND) ? "Show Hivemind" : "Hide Hivemind"]
" dat += "Abovehead Chat: [lang_chat_disabled ? "Hide" : "Show"]
" dat += "Abovehead Emotes: [(toggles_langchat & LANGCHAT_SEE_EMOTES) ? "Show" : "Hide"]
" @@ -1832,6 +1835,9 @@ GLOBAL_LIST_INIT(bgstate_options, list( if("ghost_radio") toggles_chat ^= CHAT_GHOSTRADIO + if("ghost_spyradio") + toggles_chat ^= CHAT_LISTENINGBUG + if("ghost_hivemind") toggles_chat ^= CHAT_GHOSTHIVEMIND @@ -1991,7 +1997,8 @@ GLOBAL_LIST_INIT(bgstate_options, list( if(!istype(character)) return - find_assigned_slot(job_title, is_late_join) + if(job_title) + find_assigned_slot(job_title, is_late_join) if(check_datacore && !(be_random_body && be_random_name)) for(var/datum/data/record/record as anything in GLOB.data_core.locked) if(record.fields["name"] == real_name) @@ -2298,6 +2305,22 @@ GLOBAL_LIST_INIT(bgstate_options, list( show_browser(user, dat, "Character Traits", "character_traits") update_preview_icon(TRUE) +/// Converts a client's list of completed tutorials into a string for saving +/datum/preferences/proc/tutorial_list_to_savestring() + if(!length(completed_tutorials)) + return "" + + var/return_string = "" + var/last_id = completed_tutorials[length(completed_tutorials)] + for(var/tutorial_id in completed_tutorials) + return_string += tutorial_id + (tutorial_id != last_id ? ";" : "") + return return_string + +/// Converts a saved string of completed tutorials into a list for in-game use +/datum/preferences/proc/tutorial_savestring_to_list(savestring) + completed_tutorials = splittext(savestring, ";") + return completed_tutorials + #undef MENU_MARINE #undef MENU_XENOMORPH #undef MENU_CO diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index c67effe90eb1..2261ddf5ebfa 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -480,6 +480,10 @@ S["uplinklocation"] >> uplinklocation S["exploit_record"] >> exploit_record + var/tutorial_string = "" + S["completed_tutorials"] >> tutorial_string + tutorial_savestring_to_list(tutorial_string) + //Sanitize metadata = sanitize_text(metadata, initial(metadata)) real_name = reject_bad_name(real_name) @@ -625,6 +629,8 @@ S["uplinklocation"] << uplinklocation S["exploit_record"] << exploit_record + S["completed_tutorials"] << tutorial_list_to_savestring() + return 1 /// checks through keybindings for outdated unbound keys and updates them diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 6fe334a2a0ab..d246a17bf5c0 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -602,6 +602,14 @@ to_chat(src,SPAN_BOLDNOTICE( "As a ghost, you will now [(prefs.toggles_chat & CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"].")) prefs.save_preferences() +/client/proc/toggle_ghost_spyradio() + set name = "Toggle GhostSpyRadio" + set category = "Preferences.Ghost" + set desc = "Toggle between hearing listening devices or not." + prefs.toggles_chat ^= CHAT_LISTENINGBUG + to_chat(src,SPAN_BOLDNOTICE( "As a ghost, you will [(prefs.toggles_chat & CHAT_LISTENINGBUG) ? "now" : "no longer"] hear listening devices as a ghost.")) + prefs.save_preferences() + /client/proc/toggle_ghost_hud() set name = "Toggle Ghost HUDs" set category = "Preferences.Ghost" @@ -757,6 +765,7 @@ GLOBAL_LIST_INIT(ghost_prefs_verbs, list( /client/proc/toggle_ghost_ears, /client/proc/toggle_ghost_sight, /client/proc/toggle_ghost_radio, + /client/proc/toggle_ghost_spyradio, /client/proc/toggle_ghost_hivemind, /client/proc/deadchat, /client/proc/toggle_ghost_hud, diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d6596474885c..91f42fbafe79 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -336,41 +336,64 @@ permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN blood_overlay_type = "feet" + /// The currently inserted item. var/obj/item/stored_item - var/list/items_allowed + /// List of item types that can be inserted. + var/list/allowed_items_typecache + /// An item which should be inserted when the shoes are spawned. + var/obj/item/spawn_item_type var/shoes_blood_amt = 0 -///Checks if you can put the item inside of the shoes -/obj/item/clothing/shoes/proc/attempt_insert_item(mob/user, obj/item/attacking_item, insert_after = FALSE) - if(!items_allowed) - return +/obj/item/clothing/shoes/Initialize(mapload, ...) + . = ..() + if(allowed_items_typecache) + allowed_items_typecache = typecacheof(allowed_items_typecache) + if(spawn_item_type) + _insert_item(new spawn_item_type(src)) + +/// Returns a boolean indicating if `item_to_insert` can be inserted into the shoes. +/obj/item/clothing/shoes/proc/can_be_inserted(obj/item/item_to_insert) + // If the shoes can't actually hold an item. + if(allowed_items_typecache == null) + return FALSE + // If there's already an item inside. if(stored_item) - return - var/allowed = FALSE - for(var/allowed_item in items_allowed) - if(istype(attacking_item, allowed_item)) - allowed = TRUE - break - if(!allowed) - return - if(!insert_after) - return TRUE - insert_item(user, attacking_item) - -///Puts the item inside of the shoe -/obj/item/clothing/shoes/proc/insert_item(mob/user, obj/item/attacking_item) - stored_item = attacking_item - user.drop_inv_item_to_loc(attacking_item, src) - to_chat(user, SPAN_NOTICE("You slide [attacking_item] into [src].")) - playsound(user, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, 1) + return FALSE + // If `item_to_insert` isn't in the whitelist. + if(!is_type_in_typecache(item_to_insert, allowed_items_typecache)) + return FALSE + // If all of those passed, `item_to_insert` can be inserted. + return TRUE + +/** + * Try to insert `item_to_insert` into the shoes. + * + * Returns `TRUE` if it succeeded, or `FALSE` if [/obj/item/clothing/shoes/proc/can_be_inserted] failed, or `user` couldn't drop the item. + */ +/obj/item/clothing/shoes/proc/attempt_insert_item(mob/user, obj/item/item_to_insert) + if(!can_be_inserted(item_to_insert)) + return FALSE + // Try to drop the item and place it inside `src`. + if(!user.drop_inv_item_to_loc(item_to_insert, src)) + return FALSE + _insert_item(item_to_insert) + to_chat(user, SPAN_NOTICE("You slide [item_to_insert] into [src].")) + playsound(user, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) + return TRUE + +/// Insert `item_to_insert` directly into the shoes without bothering with any checks. +/// (In the majority of cases [/obj/item/clothing/shoes/proc/attempt_insert_item()] should be used instead of this.) +/obj/item/clothing/shoes/proc/_insert_item(obj/item/item_to_insert) + PROTECTED_PROC(TRUE) + stored_item = item_to_insert update_icon() -///Removes the item from the shoes +/// Remove `stored_item` from the shoes, and place it into the `user`'s active hand. /obj/item/clothing/shoes/proc/remove_item(mob/user) - if(!user.put_in_active_hand(stored_item)) + if(!stored_item || !user.put_in_active_hand(stored_item)) return to_chat(user, SPAN_NOTICE("You slide [stored_item] out of [src].")) - playsound(user, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, 1) + playsound(user, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) stored_item = null update_icon() @@ -380,10 +403,8 @@ user.update_inv_shoes() /obj/item/clothing/shoes/Destroy() - if(stored_item) - qdel(stored_item) - stored_item = null - . = ..() + QDEL_NULL(stored_item) + return ..() /obj/item/clothing/shoes/get_examine_text(mob/user) . = ..() @@ -391,17 +412,14 @@ . += "\nIt is storing \a [stored_item]." /obj/item/clothing/shoes/attack_hand(mob/living/user) - if(!stored_item) //Only allow someone to take out the stored_item if it's being worn or held. So you can pick them up off the floor - return ..() - if(user.is_mob_incapacitated()) - return ..() - if(loc != user) + // Only allow someone to take out the `stored_item` if it's being worn or held, so that you can pick them up off the floor. + if(!stored_item || loc != user || user.is_mob_incapacitated()) return ..() remove_item(user) /obj/item/clothing/shoes/attackby(obj/item/attacking_item, mob/living/user) . = ..() - user.equip_to_slot_if_possible(attacking_item, WEAR_IN_SHOES) + attempt_insert_item(user, attacking_item) /obj/item/clothing/equipped(mob/user, slot, silent) if(is_valid_slot(slot, TRUE)) //is it going to a matching clothing slot? diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index b5ec4f3ab924..4318e1a3b184 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -41,7 +41,14 @@ /obj/item/clothing/shoes/red/knife name = "dirty red shoes" desc = "Stylish red shoes with a small space to hold a knife." - items_allowed = list(/obj/item/attachable/bayonet, /obj/item/weapon/throwing_knife, /obj/item/weapon/gun/pistol/holdout, /obj/item/weapon/gun/pistol/clfpistol, /obj/item/tool/screwdriver, /obj/item/weapon/straight_razor) + allowed_items_typecache = list( + /obj/item/attachable/bayonet, + /obj/item/weapon/throwing_knife, + /obj/item/weapon/gun/pistol/holdout, + /obj/item/weapon/gun/pistol/clfpistol, + /obj/item/tool/screwdriver, + /obj/item/weapon/straight_razor, + ) /obj/item/clothing/shoes/white name = "white shoes" @@ -90,5 +97,3 @@ ..() if (istype(H, /obj/item/handcuffs)) attach_cuffs(H, user) - - diff --git a/code/modules/clothing/shoes/marine_shoes.dm b/code/modules/clothing/shoes/marine_shoes.dm index c7eb4ba53982..7855075c2fb4 100644 --- a/code/modules/clothing/shoes/marine_shoes.dm +++ b/code/modules/clothing/shoes/marine_shoes.dm @@ -18,47 +18,46 @@ min_cold_protection_temperature = SHOE_MIN_COLD_PROT max_heat_protection_temperature = SHOE_MAX_HEAT_PROT siemens_coefficient = 0.7 - var/armor_stage = 0 - items_allowed = list(/obj/item/attachable/bayonet, /obj/item/weapon/throwing_knife, /obj/item/weapon/gun/pistol/holdout, /obj/item/weapon/gun/pistol/clfpistol, /obj/item/tool/screwdriver, /obj/item/tool/surgery/scalpel, /obj/item/weapon/straight_razor) - var/knife_type + allowed_items_typecache = list( + /obj/item/attachable/bayonet, + /obj/item/weapon/throwing_knife, + /obj/item/weapon/gun/pistol/holdout, + /obj/item/weapon/gun/pistol/clfpistol, + /obj/item/tool/screwdriver, + /obj/item/tool/surgery/scalpel, + /obj/item/weapon/straight_razor, + ) drop_sound = "armorequip" -/obj/item/clothing/shoes/marine/Initialize(mapload, ...) - . = ..() - if(knife_type) - stored_item = new knife_type(src) - update_icon() - /obj/item/clothing/shoes/marine/update_icon() - if(stored_item && !armor_stage) + if(stored_item) icon_state = "[initial(icon_state)]-1" else - if(!armor_stage) - icon_state = initial(icon_state) + icon_state = initial(icon_state) /obj/item/clothing/shoes/marine/knife - knife_type = /obj/item/attachable/bayonet + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/marine/jungle icon_state = "marine_jungle" desc = "Don't go walkin' slow, the devil's on the loose." /obj/item/clothing/shoes/marine/jungle/knife - knife_type = /obj/item/attachable/bayonet + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/marine/brown icon_state = "marine_brown" desc = "Standard issue combat boots for combat scenarios or combat situations. All combat, all the time. These are brown." /obj/item/clothing/shoes/marine/brown/knife - knife_type = /obj/item/attachable/bayonet + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/marine/monkey name = "monkey combat boots" desc = "A sturdy pair of combat boots, the reflection of the polished leather reflects your true self." icon_state = "monkey_shoes" item_state = "monkey_shoes" - knife_type = /obj/item/attachable/bayonet + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/marine/upp name = "military combat boots" @@ -67,10 +66,9 @@ armor_bullet = CLOTHING_ARMOR_HIGHPLUS armor_bomb = CLOTHING_ARMOR_MEDIUM armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - knife_type = /obj/item/attachable/bayonet/upp -/obj/item/clothing/shoes/marine/upp_knife - knife_type = /obj/item/attachable/bayonet/upp +/obj/item/clothing/shoes/marine/upp/knife + spawn_item_type = /obj/item/attachable/bayonet/upp /obj/item/clothing/shoes/marine/joe name = "biohazard boots" @@ -80,7 +78,7 @@ armor_bio = CLOTHING_ARMOR_MEDIUMHIGH armor_rad = CLOTHING_ARMOR_MEDIUMHIGH armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW - knife_type = /obj/item/attachable/bayonet + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/dress name = "dress shoes" @@ -120,7 +118,13 @@ flags_heat_protection = BODY_FLAG_FEET flags_inventory = FPRINT|NOSLIPPING siemens_coefficient = 0.6 - items_allowed = list(/obj/item/attachable/bayonet, /obj/item/weapon/throwing_knife, /obj/item/weapon/gun/pistol/holdout, /obj/item/weapon/gun/pistol/clfpistol, /obj/item/weapon/straight_razor) + allowed_items_typecache = list( + /obj/item/attachable/bayonet, + /obj/item/weapon/throwing_knife, + /obj/item/weapon/gun/pistol/holdout, + /obj/item/weapon/gun/pistol/clfpistol, + /obj/item/weapon/straight_razor, + ) /obj/item/clothing/shoes/veteran/pmc/update_icon() if(stored_item) @@ -128,10 +132,8 @@ else icon_state = initial(icon_state) -/obj/item/clothing/shoes/veteran/pmc/knife/Initialize(mapload, ...) - . = ..() - stored_item = new /obj/item/attachable/bayonet(src) - update_icon() +/obj/item/clothing/shoes/veteran/pmc/knife + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/veteran/pmc/commando name = "\improper PMC commando boots" @@ -141,22 +143,13 @@ siemens_coefficient = 0.2 unacidable = TRUE -/obj/item/clothing/shoes/veteran/pmc/commando/knife/Initialize(mapload, ...) - . = ..() - stored_item = new /obj/item/attachable/bayonet(src) - update_icon() +/obj/item/clothing/shoes/veteran/pmc/commando/knife + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/veteran/pmc/van_bandolier name = "hiking boots" desc = "Over stone, over ice, through sun and sand, mud and snow, into raging water and hungry bog, these will never let you down." - -/obj/item/clothing/shoes/veteran/pmc/van_bandolier/New() - ..() - var/obj/item/attachable/bayonet/upp/knife = new(src) - knife.name = "\improper Fairbairn-Sykes fighting knife" - knife.desc = "This isn't for dressing game or performing camp chores. It's almost certainly not an original. Almost." - stored_item = knife - update_icon() + spawn_item_type = /obj/item/attachable/bayonet/van_bandolier /obj/item/clothing/shoes/veteran/pmc/commando/cbrn name = "\improper M3 MOPP boots" @@ -165,22 +158,18 @@ item_state = "cbrn" armor_rad = CLOTHING_ARMOR_GIGAHIGHPLUS armor_bio = CLOTHING_ARMOR_GIGAHIGHPLUS - -/obj/item/clothing/shoes/veteran/pmc/commando/cbrn/Initialize(mapload, ...) - . = ..() - stored_item = new /obj/item/attachable/bayonet(src) - update_icon() + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/marine/corporate name = "rugged boots" desc = "These synth-leather boots seem high quality when first worn, but quickly detoriate, especially in the environments the corporate security members these are issued to operate in. Still, better than nothing." - knife_type = /obj/item/attachable/bayonet + spawn_item_type = /obj/item/attachable/bayonet /obj/item/clothing/shoes/marine/ress name = "armored sandals" icon_state = "sandals" item_state = "sandals" - items_allowed = null + allowed_items_typecache = null /obj/item/clothing/shoes/hiking name = "hiking shoes" @@ -201,7 +190,13 @@ flags_heat_protection = BODY_FLAG_FEET flags_inventory = FPRINT|NOSLIPPING siemens_coefficient = 0.6 - items_allowed = list(/obj/item/attachable/bayonet, /obj/item/weapon/throwing_knife, /obj/item/weapon/gun/pistol/holdout, /obj/item/weapon/gun/pistol/clfpistol, /obj/item/weapon/straight_razor) + allowed_items_typecache = list( + /obj/item/attachable/bayonet, + /obj/item/weapon/throwing_knife, + /obj/item/weapon/gun/pistol/holdout, + /obj/item/weapon/gun/pistol/clfpistol, + /obj/item/weapon/straight_razor, + ) var/weed_slowdown_mult = 0.5 /obj/item/clothing/shoes/hiking/equipped(mob/user, slot, silent) @@ -239,7 +234,7 @@ flags_heat_protection = BODY_FLAG_FEET flags_inventory = FPRINT|NOSLIPPING siemens_coefficient = 0.6 - items_allowed = list( + allowed_items_typecache = list( /obj/item/attachable/bayonet, /obj/item/weapon/throwing_knife, /obj/item/weapon/gun/pistol/holdout, @@ -248,7 +243,4 @@ flags_atom = NO_NAME_OVERRIDE /obj/item/clothing/shoes/royal_marine/knife -/obj/item/clothing/shoes/royal_marine/knife/Initialize(mapload, ...) - . = ..() - stored_item = new /obj/item/attachable/bayonet/rmc(src) - update_icon() + spawn_item_type = /obj/item/attachable/bayonet/rmc diff --git a/code/modules/cm_aliens/XenoStructures.dm b/code/modules/cm_aliens/XenoStructures.dm index e78756f1eda6..7e4f7996d3f8 100644 --- a/code/modules/cm_aliens/XenoStructures.dm +++ b/code/modules/cm_aliens/XenoStructures.dm @@ -160,13 +160,12 @@ /obj/effect/alien/resin/sticky/Crossed(atom/movable/AM) . = ..() var/mob/living/carbon/human/H = AM - // Wait doesn't this stack slows if you get dragged over it? What's going on here? if(istype(H) && !H.ally_of_hivenumber(hivenumber)) - H.next_move_slowdown = H.next_move_slowdown + slow_amt + H.next_move_slowdown = max(H.next_move_slowdown, slow_amt) return . var/mob/living/carbon/xenomorph/X = AM if(istype(X) && !X.ally_of_hivenumber(hivenumber)) - X.next_move_slowdown = X.next_move_slowdown + slow_amt + X.next_move_slowdown = max(X.next_move_slowdown, slow_amt) return . /obj/effect/alien/resin/sticky/proc/forsaken_handling() diff --git a/code/modules/cm_aliens/structures/construction_node.dm b/code/modules/cm_aliens/structures/construction_node.dm index 0fdcd5c5c67a..dbc4fcb0d9bf 100644 --- a/code/modules/cm_aliens/structures/construction_node.dm +++ b/code/modules/cm_aliens/structures/construction_node.dm @@ -22,8 +22,7 @@ color = linked_hive.color /obj/effect/alien/resin/construction/Destroy() - if(template && linked_hive && (template.crystals_stored < template.crystals_required)) - linked_hive.crystal_stored += template.crystals_stored + if(template && linked_hive && (template.plasma_stored < template.plasma_required)) linked_hive.remove_construction(src) template = null linked_hive = null @@ -42,7 +41,7 @@ /obj/effect/alien/resin/construction/get_examine_text(mob/user) . = ..() if((isxeno(user) || isobserver(user)) && linked_hive) - var/message = "A [template.name] construction is designated here. It requires [template.crystals_required - template.crystals_stored] more [MATERIAL_CRYSTAL]." + var/message = "A [template.name] construction is designated here. It requires [template.plasma_required - template.plasma_stored] more plasma." . += message /obj/effect/alien/resin/construction/attack_alien(mob/living/carbon/xenomorph/M) diff --git a/code/modules/cm_aliens/structures/egg.dm b/code/modules/cm_aliens/structures/egg.dm index edb86c204558..889359bb7eef 100644 --- a/code/modules/cm_aliens/structures/egg.dm +++ b/code/modules/cm_aliens/structures/egg.dm @@ -23,10 +23,21 @@ if (hive) hivenumber = hive + if(hivenumber == XENO_HIVE_NORMAL) + RegisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING, PROC_REF(forsaken_handling)) + set_hive_data(src, hivenumber) update_icon() addtimer(CALLBACK(src, PROC_REF(Grow)), rand(EGG_MIN_GROWTH_TIME, EGG_MAX_GROWTH_TIME)) +/obj/effect/alien/egg/proc/forsaken_handling() + SIGNAL_HANDLER + if(is_ground_level(z)) + hivenumber = XENO_HIVE_FORSAKEN + set_hive_data(src, XENO_HIVE_FORSAKEN) + + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + /obj/effect/alien/egg/Destroy() . = ..() for(var/obj/effect/egg_trigger/trigger as anything in egg_triggers) @@ -49,7 +60,7 @@ if(status == EGG_BURST || status == EGG_DESTROYED) M.animation_attack_on(src) M.visible_message(SPAN_XENONOTICE("[M] clears the hatched egg."), \ - SPAN_XENONOTICE("You clear the hatched egg.")) + SPAN_XENONOTICE("We clear the hatched egg.")) playsound(src.loc, "alien_resin_break", 25) qdel(src) return XENO_NONCOMBAT_ACTION @@ -57,7 +68,7 @@ if(M.hivenumber != hivenumber) M.animation_attack_on(src) M.visible_message(SPAN_XENOWARNING("[M] crushes \the [src]"), - SPAN_XENOWARNING("You crush \the [src]")) + SPAN_XENOWARNING("We crush \the [src]")) Burst(TRUE) return XENO_ATTACK_ACTION @@ -70,9 +81,9 @@ return XENO_NO_DELAY_ACTION if(EGG_GROWN) if(islarva(M)) - to_chat(M, SPAN_XENOWARNING("You nudge the egg, but nothing happens.")) + to_chat(M, SPAN_XENOWARNING("We nudge the egg, but nothing happens.")) return - to_chat(M, SPAN_XENONOTICE("You retrieve the child.")) + to_chat(M, SPAN_XENONOTICE("We retrieve the child.")) Burst(FALSE) return XENO_NONCOMBAT_ACTION @@ -186,7 +197,7 @@ if(EGG_BURST) if(user) visible_message(SPAN_XENOWARNING("[user] slides [F] back into [src]."), \ - SPAN_XENONOTICE("You place the child back in to [src].")) + SPAN_XENONOTICE("We place the child back in to [src].")) user.temp_drop_inv_item(F) else visible_message(SPAN_XENOWARNING("[F] crawls back into [src]!")) //Not sure how, but let's roll with it for now. diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm index d62db4947b95..13f3e488459e 100644 --- a/code/modules/cm_aliens/structures/special/pylon_core.dm +++ b/code/modules/cm_aliens/structures/special/pylon_core.dm @@ -172,7 +172,7 @@ continue if(checked_hive == linked_hive) - xeno_announcement(SPAN_XENOANNOUNCE("We have harnessed the tall's communication relay at [get_area(src)].\n\nWe will now grow more of our number from this pylon. Hold it!"), hivenumber, XENO_GENERAL_ANNOUNCE) + xeno_announcement(SPAN_XENOANNOUNCE("We have harnessed the tall's communication relay at [get_area(src)].\n\nWe will now grow our numbers from this pylon. Hold it!"), hivenumber, XENO_GENERAL_ANNOUNCE) else xeno_announcement(SPAN_XENOANNOUNCE("Another hive has harnessed the tall's communication relay at [get_area(src)].[linked_hive.faction_is_ally(checked_hive.name) ? "" : " Stop them!"]"), hivenumber, XENO_GENERAL_ANNOUNCE) @@ -190,7 +190,7 @@ if(!linked_hive.hive_location || !linked_hive.living_xeno_queen) return - var/list/hive_xenos = linked_hive.totalXenos + var/list/hive_xenos = linked_hive.totalXenos.Copy() for(var/mob/living/carbon/xenomorph/xeno in hive_xenos) if(!xeno.counts_for_slots) diff --git a/code/modules/cm_aliens/structures/trap.dm b/code/modules/cm_aliens/structures/trap.dm index d885e4d14a91..e4b021e98f46 100644 --- a/code/modules/cm_aliens/structures/trap.dm +++ b/code/modules/cm_aliens/structures/trap.dm @@ -145,7 +145,7 @@ clear_tripwires() for(var/mob/living/carbon/xenomorph/X in GLOB.living_xeno_list) if(X.hivenumber == hivenumber) - to_chat(X, SPAN_XENOMINORWARNING("You sense one of your Hive's facehugger traps at [A.name] has been burnt!")) + to_chat(X, SPAN_XENOMINORWARNING("We sense one of our Hive's facehugger traps at [A.name] has been burnt!")) /obj/effect/alien/resin/trap/proc/get_spray_type(level) switch(level) @@ -199,9 +199,9 @@ for(var/mob/living/carbon/xenomorph/X in GLOB.living_xeno_list) if(X.hivenumber == hivenumber) if(destroyed) - to_chat(X, SPAN_XENOMINORWARNING("You sense one of your Hive's [trap_type_name] traps at [A.name] has been destroyed!")) + to_chat(X, SPAN_XENOMINORWARNING("We sense one of our Hive's [trap_type_name] traps at [A.name] has been destroyed!")) else - to_chat(X, SPAN_XENOMINORWARNING("You sense one of your Hive's [trap_type_name] traps at [A.name] has been triggered!")) + to_chat(X, SPAN_XENOMINORWARNING("We sense one of our Hive's [trap_type_name] traps at [A.name] has been triggered!")) /obj/effect/alien/resin/trap/proc/clear_tripwires() QDEL_NULL_LIST(tripwires) diff --git a/code/modules/cm_aliens/structures/tunnel.dm b/code/modules/cm_aliens/structures/tunnel.dm index 8c467be695b4..8e2993704f31 100644 --- a/code/modules/cm_aliens/structures/tunnel.dm +++ b/code/modules/cm_aliens/structures/tunnel.dm @@ -147,7 +147,7 @@ //No teleporting! return FALSE - to_chat(X, SPAN_XENONOTICE("You begin moving to your destination.")) + to_chat(X, SPAN_XENONOTICE("We begin moving to our destination.")) var/tunnel_time = TUNNEL_MOVEMENT_XENO_DELAY @@ -165,11 +165,11 @@ to_chat(X, SPAN_WARNING("The tunnel is too crowded, wait for others to exit!")) return FALSE if(!T.loc) - to_chat(X, SPAN_WARNING("The tunnel has collapsed before you reached its exit!")) + to_chat(X, SPAN_WARNING("The tunnel has collapsed before we reached its exit!")) return FALSE X.forceMove(T) - to_chat(X, SPAN_XENONOTICE("You have reached your destination.")) + to_chat(X, SPAN_XENONOTICE("We have reached our destination.")) return TRUE /obj/structure/tunnel/proc/exit_tunnel(mob/living/carbon/xenomorph/X) @@ -177,7 +177,7 @@ if(X in contents) X.forceMove(loc) visible_message(SPAN_XENONOTICE("\The [X] pops out of the tunnel!"), \ - SPAN_XENONOTICE("You pop out through the other side!")) + SPAN_XENONOTICE("We pop out through the other side!")) return TRUE //Used for controling tunnel exiting and returning @@ -200,15 +200,15 @@ if(!isfriendly(M)) if(M.mob_size < MOB_SIZE_BIG) - to_chat(M, SPAN_XENOWARNING("You aren't large enough to collapse this tunnel!")) + to_chat(M, SPAN_XENOWARNING("We aren't large enough to collapse this tunnel!")) return XENO_NO_DELAY_ACTION M.visible_message(SPAN_XENODANGER("[M] begins to fill [src] with dirt."),\ - SPAN_XENONOTICE("You begin to fill [src] with dirt using your massive claws."), max_distance = 3) + SPAN_XENONOTICE("We begin to fill [src] with dirt using our massive claws."), max_distance = 3) xeno_attack_delay(M) if(!do_after(M, 10 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE, src, INTERRUPT_ALL_OUT_OF_RANGE, max_dist = 1)) - to_chat(M, SPAN_XENOWARNING("You decide not to cave the tunnel in.")) + to_chat(M, SPAN_XENOWARNING("We decide not to cave the tunnel in.")) return XENO_NO_DELAY_ACTION src.visible_message(SPAN_XENODANGER("[src] caves in!"), max_distance = 3) @@ -217,11 +217,11 @@ return XENO_NO_DELAY_ACTION if(M.anchored) - to_chat(M, SPAN_XENOWARNING("You can't climb through a tunnel while immobile.")) + to_chat(M, SPAN_XENOWARNING("We can't climb through a tunnel while immobile.")) return XENO_NO_DELAY_ACTION if(!hive.tunnels.len) - to_chat(M, SPAN_WARNING("\The [src] doesn't seem to lead anywhere.")) + to_chat(M, SPAN_WARNING("[src] doesn't seem to lead anywhere.")) return XENO_NO_DELAY_ACTION if(contents.len > 2) @@ -236,15 +236,15 @@ tunnel_time = TUNNEL_ENTER_LARVA_DELAY if(M.mob_size >= MOB_SIZE_BIG) - M.visible_message(SPAN_XENONOTICE("[M] begins heaving their huge bulk down into \the [src]."), \ - SPAN_XENONOTICE("You begin heaving your monstrous bulk into \the [src].")) + M.visible_message(SPAN_XENONOTICE("[M] begins heaving their huge bulk down into [src]."), + SPAN_XENONOTICE("We begin heaving our monstrous bulk into [src] ([tunnel_desc]).")) else - M.visible_message(SPAN_XENONOTICE("\The [M] begins crawling down into \the [src]."), \ - SPAN_XENONOTICE("You begin crawling down into \the [src].")) + M.visible_message(SPAN_XENONOTICE("[M] begins crawling down into [src]."), + SPAN_XENONOTICE("We begin crawling down into [src] ([tunnel_desc]).")) xeno_attack_delay(M) if(!do_after(M, tunnel_time, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC)) - to_chat(M, SPAN_WARNING("Your crawling was interrupted!")) + to_chat(M, SPAN_WARNING("Our crawling was interrupted!")) return XENO_NO_DELAY_ACTION if(hive.tunnels.len) //Make sure other tunnels exist @@ -252,7 +252,7 @@ to_chat(M, SPAN_HIGHDANGER("Alt + Click the tunnel to exit, Ctrl + Click to choose a destination.")) pick_tunnel(M) else - to_chat(M, SPAN_WARNING("\The [src] ended unexpectedly, so you return back up.")) + to_chat(M, SPAN_WARNING("[src] ended unexpectedly, so we return back up.")) return XENO_NO_DELAY_ACTION /obj/structure/tunnel/maint_tunnel diff --git a/code/modules/cm_aliens/weeds.dm b/code/modules/cm_aliens/weeds.dm index 4be1ce63ac25..45c78b979105 100644 --- a/code/modules/cm_aliens/weeds.dm +++ b/code/modules/cm_aliens/weeds.dm @@ -186,7 +186,7 @@ SEND_SIGNAL(crossing_mob, COMSIG_MOB_WEED_SLOWDOWN, slowdata, src) var/final_slowdown = slowdata["movement_slowdown"] - crossing_mob.next_move_slowdown += POSITIVE(final_slowdown) + crossing_mob.next_move_slowdown = max(crossing_mob.next_move_slowdown, POSITIVE(final_slowdown)) // Uh oh, we might be dying! // I know this is bad proc naming but it was too good to pass on and it's only used in this file anyways diff --git a/code/modules/cm_marines/dropship_ammo.dm b/code/modules/cm_marines/dropship_ammo.dm index 7e655fce55b6..19086b36c957 100644 --- a/code/modules/cm_marines/dropship_ammo.dm +++ b/code/modules/cm_marines/dropship_ammo.dm @@ -12,8 +12,8 @@ var/fire_mission_delay = 4 /// Time to impact in deciseconds var/travelling_time = 100 - /// Type of equipment that accept this type of ammo. - var/equipment_type + /// Type of dropship equipment that accepts this type of ammo. + var/obj/structure/dropship_equipment/equipment_type /// Ammunition count remaining var/ammo_count /// Maximal ammunition count @@ -84,7 +84,7 @@ /obj/structure/ship_ammo/proc/show_loaded_desc(mob/user) return "It's loaded with \a [src]." -/obj/structure/ship_ammo/proc/detonate_on(turf/impact) +/obj/structure/ship_ammo/proc/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) return /obj/structure/ship_ammo/proc/can_fire_at(turf/impact, mob/user) @@ -159,7 +159,7 @@ else return "It's loaded with an empty [name]." -/obj/structure/ship_ammo/heavygun/detonate_on(turf/impact) +/obj/structure/ship_ammo/heavygun/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) set waitfor = 0 var/list/turf_list = list() for(var/turf/T in range(bullet_spread_range, impact)) @@ -171,7 +171,7 @@ sleep(1) for(var/j in 1 to 2) //rather than halving the sleep, were doubling the bullets shot "bang" var/turf/impact_tile = pick(turf_list) - var/datum/cause_data/cause_data = create_cause_data(initial(name), source_mob) + var/datum/cause_data/cause_data = create_cause_data(fired_from.name, source_mob) impact_tile.ex_act(EXPLOSION_THRESHOLD_VLOW, pick(GLOB.alldirs), cause_data) create_shrapnel(impact_tile,1,0,0,shrapnel_type,cause_data,FALSE,100) //simulates a bullet for(var/atom/movable/explosion_effect in impact_tile) @@ -242,7 +242,7 @@ return "It's loaded with an empty [name]." -/obj/structure/ship_ammo/laser_battery/detonate_on(turf/impact) +/obj/structure/ship_ammo/laser_battery/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) set waitfor = 0 var/list/turf_list = list() for(var/turf/T in range(impact, 3)) //This is its area of effect @@ -251,17 +251,12 @@ for(var/i=1 to 16) //This is how many tiles within that area of effect will be randomly ignited var/turf/U = pick(turf_list) turf_list -= U - laser_burn(U) + fire_spread_recur(U, create_cause_data(fired_from.name, source_mob), 1, null, 5, 75, "#EE6515")//Very, very intense, but goes out very quick if(!ammo_count && !QDELETED(src)) qdel(src) //deleted after last laser beam is fired and impact the ground. - -/obj/structure/ship_ammo/laser_battery/proc/laser_burn(turf/T) - fire_spread_recur(T, create_cause_data(initial(name), source_mob), 1, null, 5, 75, "#EE6515")//Very, very intense, but goes out very quick - - //Rockets /obj/structure/ship_ammo/rocket @@ -279,7 +274,7 @@ max_inaccuracy = 5 point_cost = 0 -/obj/structure/ship_ammo/rocket/detonate_on(turf/impact) +/obj/structure/ship_ammo/rocket/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) qdel(src) @@ -293,7 +288,7 @@ point_cost = 300 fire_mission_delay = 4 //We don't care because our ammo has just 1 rocket -/obj/structure/ship_ammo/rocket/widowmaker/detonate_on(turf/impact) +/obj/structure/ship_ammo/rocket/widowmaker/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), impact, 300, 40, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name)), source_mob), 0.5 SECONDS) //Your standard HE splash damage rocket. Good damage, good range, good speed, it's an all rounder QDEL_IN(src, 0.5 SECONDS) @@ -306,7 +301,7 @@ point_cost = 300 fire_mission_delay = 4 //We don't care because our ammo has just 1 rocket -/obj/structure/ship_ammo/rocket/banshee/detonate_on(turf/impact) +/obj/structure/ship_ammo/rocket/banshee/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), impact, 175, 20, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name)), source_mob), 0.5 SECONDS) //Small explosive power with a small fall off for a big explosion range addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 4, 15, 50, "#00b8ff"), 0.5 SECONDS) //Very intense but the fire doesn't last very long @@ -321,7 +316,7 @@ point_cost = 300 fire_mission_delay = 4 //We don't care because our ammo has just 1 rocket -/obj/structure/ship_ammo/rocket/keeper/detonate_on(turf/impact) +/obj/structure/ship_ammo/rocket/keeper/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), impact, 450, 100, EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL, null, create_cause_data(initial(name)), source_mob), 0.5 SECONDS) //Insane fall off combined with insane damage makes the Keeper useful for single targets, but very bad against multiple. QDEL_IN(src, 0.5 SECONDS) @@ -336,7 +331,7 @@ fire_mission_delay = 4 //Looks kinda OP but all it can actually do is just to blow windows and some of other things out, cant do much damage. -/obj/structure/ship_ammo/rocket/harpoon/detonate_on(turf/impact) +/obj/structure/ship_ammo/rocket/harpoon/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), impact, 150, 16, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name)), source_mob), 0.5 SECONDS) QDEL_IN(src, 0.5 SECONDS) @@ -349,7 +344,7 @@ point_cost = 500 fire_mission_delay = 0 //0 means unusable -/obj/structure/ship_ammo/rocket/napalm/detonate_on(turf/impact) +/obj/structure/ship_ammo/rocket/napalm/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), impact, 200, 25, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name)), source_mob), 0.5 SECONDS) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 6, 60, 30, "#EE6515"), 0.5 SECONDS) //Color changed into napalm's color to better convey how intense the fire actually is. @@ -364,7 +359,7 @@ point_cost = 300 fire_mission_delay = 4 -/obj/structure/ship_ammo/rocket/thermobaric/detonate_on(turf/impact) +/obj/structure/ship_ammo/rocket/thermobaric/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 4, 25, 50, "#c96500"), 0.5 SECONDS) //Very intense but the fire doesn't last very long for(var/mob/living/carbon/victim in orange(5, impact)) @@ -388,7 +383,7 @@ point_cost = 300 fire_mission_delay = 3 //high cooldown -/obj/structure/ship_ammo/minirocket/detonate_on(turf/impact) +/obj/structure/ship_ammo/minirocket/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(2) spawn(5) cell_explosion(impact, 200, 44, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name), source_mob)) @@ -418,7 +413,7 @@ point_cost = 500 fire_mission_delay = 3 //high cooldown -/obj/structure/ship_ammo/minirocket/incendiary/detonate_on(turf/impact) +/obj/structure/ship_ammo/minirocket/incendiary/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) ..() spawn(5) fire_spread(impact, create_cause_data(initial(name), source_mob), 3, 25, 20, "#EE6515") @@ -438,7 +433,7 @@ /// Special structures it needs to break with drop pod var/list/breakeable_structures = list(/obj/structure/barricade, /obj/structure/surface/table) -/obj/structure/ship_ammo/sentry/detonate_on(turf/impact) +/obj/structure/ship_ammo/sentry/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) var/obj/structure/droppod/equipment/sentry/droppod = new(impact, /obj/structure/machinery/defenses/sentry/launchable, source_mob) droppod.special_structures_to_damage = breakeable_structures droppod.special_structure_damage = 500 diff --git a/code/modules/cm_marines/dropship_equipment.dm b/code/modules/cm_marines/dropship_equipment.dm index b50198095aab..59aa1428e23e 100644 --- a/code/modules/cm_marines/dropship_equipment.dm +++ b/code/modules/cm_marines/dropship_equipment.dm @@ -6,6 +6,8 @@ icon = 'icons/obj/structures/props/almayer_props.dmi' climbable = TRUE layer = ABOVE_OBJ_LAYER //so they always appear above attach points when installed + var/shorthand + var/list/equip_categories //on what kind of base this can be installed. var/obj/effect/attach_point/ship_base //the ship base the equipment is currently installed on. var/uses_ammo = FALSE //whether it uses ammo @@ -22,7 +24,7 @@ /obj/structure/dropship_equipment/Destroy() QDEL_NULL(ammo_equipped) if(linked_shuttle) - linked_shuttle.equipments -= src + SEND_SIGNAL(linked_shuttle, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, src) linked_shuttle = null if(ship_base) ship_base.installed_equipment = null @@ -122,7 +124,7 @@ ship_base.installed_equipment = null ship_base = null if(linked_shuttle) - linked_shuttle.equipments -= src + SEND_SIGNAL(linked_shuttle, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, src) linked_shuttle = null if(linked_console && linked_console.selected_equipment == src) linked_console.selected_equipment = null @@ -159,7 +161,8 @@ health = null icon_state = "sentry_system" is_interactable = TRUE - point_cost = 500 + point_cost = 200 + shorthand = "Sentry" var/deployment_cooldown var/obj/structure/machinery/defenses/sentry/premade/dropship/deployed_turret combat_equipment = FALSE @@ -176,6 +179,28 @@ if(!deployed_turret) . += "Its turret is missing." +/obj/structure/dropship_equipment/sentry_holder/ui_data(mob/user) + var/obj/structure/machinery/defenses/defense = deployed_turret + . = list() + var/is_deployed = deployed_turret.loc != src + .["name"] = defense.name + .["area"] = get_area(defense) + .["active"] = defense.turned_on + .["nickname"] = defense.nickname + .["camera_available"] = defense.has_camera && is_deployed + .["selection_state"] = list() + .["kills"] = defense.kills + .["iff_status"] = defense.faction_group + .["health"] = defense.health + .["health_max"] = defense.health_max + .["deployed"] = is_deployed + + if(istype(defense, /obj/structure/machinery/defenses/sentry)) + var/obj/structure/machinery/defenses/sentry/sentrygun = defense + .["rounds"] = sentrygun.ammo.current_rounds + .["max_rounds"] = sentrygun.ammo.max_rounds + .["engaged"] = length(sentrygun.targets) + /obj/structure/dropship_equipment/sentry_holder/on_launch() if(ship_base && ship_base.base_category == DROPSHIP_WEAPON) //only external sentires are automatically undeployed undeploy_sentry() @@ -290,6 +315,7 @@ equip_categories = list(DROPSHIP_WEAPON, DROPSHIP_CREW_WEAPON) icon_state = "mg_system" point_cost = 50 + shorthand = "MG" var/deployment_cooldown var/obj/structure/machinery/m56d_hmg/mg_turret/dropship/deployed_mg combat_equipment = FALSE @@ -300,6 +326,21 @@ deployed_mg = new(src) deployed_mg.deployment_system = src +/obj/structure/dropship_equipment/mg_holder/Destroy() + QDEL_NULL(deployed_mg) + . = ..() + +/obj/structure/dropship_equipment/mg_holder/ui_data(mob/user) + . = list() + var/is_deployed = deployed_mg.loc == src + .["name"] = name + .["selection_state"] = list() + .["health"] = health + .["health_max"] = 100 + .["rounds"] = deployed_mg.rounds + .["max_rounds"] = deployed_mg.rounds_max + .["deployed"] = is_deployed + /obj/structure/dropship_equipment/mg_holder/get_examine_text(mob/user) . = ..() if(!deployed_mg) @@ -330,6 +371,9 @@ ..() +/obj/structure/dropship_equipment/mg_holder/equipment_interact(mob/user) + attack_hand(user) + /obj/structure/dropship_equipment/mg_holder/update_equipment() if(ship_base) setDir(ship_base.dir) @@ -339,9 +383,10 @@ if(ship_base.base_category == DROPSHIP_WEAPON) switch(dir) if(NORTH) - if( istype(get_step(src, WEST), /turf/open) ) + var/step_contents = get_step(src, EAST).contents + if(locate(/obj/structure) in step_contents) deployed_mg.pixel_x = 5 - else if ( istype(get_step(src, EAST), /turf/open) ) + else deployed_mg.pixel_x = -5 if(EAST) deployed_mg.pixel_y = 9 @@ -359,7 +404,7 @@ deployed_mg.forceMove(src) deployed_mg.setDir(dir) else - icon_state = "mg_system_destroyed" + icon_state = "sentry_system_destroyed" /obj/structure/dropship_equipment/mg_holder/proc/deploy_mg(mob/user) if(deployed_mg) @@ -368,12 +413,11 @@ if(ship_base.base_category == DROPSHIP_WEAPON) switch(dir) if(NORTH) - if( istype(get_step(src, WEST), /turf/open) ) + var/step_contents = get_step(src, EAST).contents + if(locate(/obj/structure) in step_contents) deployed_mg.forceMove(get_step(src, WEST)) - else if ( istype(get_step(src, EAST), /turf/open) ) - deployed_mg.forceMove(get_step(src, EAST)) else - deployed_mg.forceMove(get_step(src, NORTH)) + deployed_mg.forceMove(get_step(src, EAST)) if(EAST) deployed_mg.forceMove(get_step(src, SOUTH)) if(WEST) @@ -446,6 +490,7 @@ /obj/structure/dropship_equipment/electronics/spotlights name = "\improper AN/LEN-15 Spotlight" + shorthand = "Spotlight" icon_state = "spotlights" desc = "A set of high-powered spotlights to illuminate large areas. Fits on electronics attach points of dropships. Moving this will require a powerloader." is_interactable = TRUE @@ -496,6 +541,7 @@ /obj/structure/dropship_equipment/electronics/targeting_system name = "\improper AN/AAQ-178 Weapon Targeting System" + shorthand = "Targeting" icon_state = "targeting_system" desc = "A targeting system for dropships. It improves firing accuracy on laser targets. Fits on electronics attach points. You need a powerloader to lift this." point_cost = 800 @@ -508,7 +554,8 @@ /obj/structure/dropship_equipment/electronics/landing_zone_detector name = "\improper AN/AVD-60 LZ detector" - desc = "An electronic device linked to the dropship's camera system that lets you observe your landing zone." + shorthand = "LZ Detector" + desc = "An electronic device linked to the dropship's camera system that lets you observe your landing zone mid-flight." icon_state = "lz_detector" point_cost = 50 var/obj/structure/machinery/computer/cameras/dropship/linked_cam_console @@ -654,7 +701,7 @@ new /obj/effect/overlay/temp/blinking_laser (impact) sleep(10) SA.source_mob = user - SA.detonate_on(impact) + SA.detonate_on(impact, src) /obj/structure/dropship_equipment/weapon/proc/open_fire_firemission(obj/selected_target, mob/user = usr) set waitfor = 0 @@ -680,7 +727,7 @@ var/turf/impact = pick(possible_turfs) sleep(3) SA.source_mob = user - SA.detonate_on(impact) + SA.detonate_on(impact, src) /obj/structure/dropship_equipment/weapon/heavygun name = "\improper GAU-21 30mm cannon" @@ -690,6 +737,7 @@ point_cost = 400 skill_required = SKILL_PILOT_TRAINED fire_mission_only = FALSE + shorthand = "GAU" /obj/structure/dropship_equipment/weapon/heavygun/update_icon() if(ammo_equipped) @@ -706,6 +754,7 @@ firing_sound = 'sound/effects/rocketpod_fire.ogg' firing_delay = 5 point_cost = 600 + shorthand = "MSL" /obj/structure/dropship_equipment/weapon/rocket_pod/deplete_ammo() ammo_equipped = null //nothing left to empty after firing @@ -727,6 +776,7 @@ firing_sound = 'sound/effects/rocketpod_fire.ogg' firing_delay = 10 //1 seconds point_cost = 600 + shorthand = "RKT" /obj/structure/dropship_equipment/weapon/minirocket_pod/update_icon() if(ammo_equipped && ammo_equipped.ammo_count) @@ -750,6 +800,7 @@ point_cost = 500 skill_required = SKILL_PILOT_TRAINED fire_mission_only = FALSE + shorthand = "LZR" /obj/structure/dropship_equipment/weapon/laser_beam_gun/update_icon() if(ammo_equipped && ammo_equipped.ammo_count) @@ -767,7 +818,8 @@ firing_delay = 10 //1 seconds bound_height = 32 equip_categories = list(DROPSHIP_CREW_WEAPON) //fits inside the central spot of the dropship - point_cost = 400 + point_cost = 200 + shorthand = "LCH" /obj/structure/dropship_equipment/weapon/launch_bay/update_equipment() if(ship_base) @@ -781,6 +833,7 @@ /obj/structure/dropship_equipment/medevac_system name = "\improper RMU-4M Medevac System" + shorthand = "Medevac" desc = "A winch system to lift injured marines on medical stretchers onto the dropship. Acquire lift target through the dropship equipment console." equip_categories = list(DROPSHIP_CREW_WEAPON) icon_state = "medevac_system" @@ -806,24 +859,8 @@ linked_stretcher = null icon_state = "medevac_system" - -/obj/structure/dropship_equipment/medevac_system/equipment_interact(mob/user) - if(!linked_shuttle) - return - - if(linked_shuttle.mode != SHUTTLE_CALL) - to_chat(user, SPAN_WARNING("[src] can only be used while in flight.")) - return - - if(busy_winch) - to_chat(user, SPAN_WARNING(" The winch is already in motion.")) - return - - if(world.time < medevac_cooldown) - to_chat(user, SPAN_WARNING("[src] was just used, you need to wait a bit before using it again.")) - return - - var/list/possible_stretchers = list() +/obj/structure/dropship_equipment/medevac_system/proc/get_targets() + . = list() for(var/obj/structure/bed/medevac_stretcher/MS in GLOB.activated_medevac_stretchers) var/area/AR = get_area(MS) var/evaccee_name @@ -850,20 +887,32 @@ if (evaccee_triagecard_color && evaccee_triagecard_color == "none") evaccee_triagecard_color = null - possible_stretchers["[evaccee_name] [evaccee_triagecard_color ? "\[" + uppertext(evaccee_triagecard_color) + "\]" : ""] ([AR.name])"] = MS + .["[evaccee_name] [evaccee_triagecard_color ? "\[" + uppertext(evaccee_triagecard_color) + "\]" : ""] ([AR.name])"] = MS - if(!possible_stretchers.len) - to_chat(user, SPAN_WARNING("No active medevac stretcher detected.")) - return +/obj/structure/dropship_equipment/medevac_system/proc/can_medevac(mob/user) + if(!linked_shuttle) + return FALSE - var/stretcher_choice = tgui_input_list(usr, "Which emitting stretcher would you like to link with?", "Available stretchers", possible_stretchers) - if(!stretcher_choice) - return + if(linked_shuttle.mode != SHUTTLE_CALL) + to_chat(user, SPAN_WARNING("[src] can only be used while in flight.")) + return FALSE - var/obj/structure/bed/medevac_stretcher/selected_stretcher = possible_stretchers[stretcher_choice] - if(!selected_stretcher) - return + if(busy_winch) + to_chat(user, SPAN_WARNING(" The winch is already in motion.")) + return FALSE + + if(world.time < medevac_cooldown) + to_chat(user, SPAN_WARNING("[src] was just used, you need to wait a bit before using it again.")) + return FALSE + + var/list/possible_stretchers = get_targets() + if(!possible_stretchers.len) + to_chat(user, SPAN_WARNING("No active medevac stretcher detected.")) + return FALSE + return TRUE + +/obj/structure/dropship_equipment/medevac_system/proc/position_dropship(mob/user, obj/structure/bed/medevac_stretcher/selected_stretcher) if(!ship_base) //system was uninstalled midway return @@ -913,6 +962,31 @@ linked_stretcher.linked_medevac = src linked_stretcher.visible_message(SPAN_NOTICE("[linked_stretcher] detects a dropship overhead.")) +/obj/structure/dropship_equipment/medevac_system/proc/automate_interact(mob/user, stretcher_choice) + if(!can_medevac(user)) + return + + var/list/possible_stretchers = get_targets() + + var/obj/structure/bed/medevac_stretcher/selected_stretcher = possible_stretchers[stretcher_choice] + if(!selected_stretcher) + return + position_dropship(user, selected_stretcher) + +/obj/structure/dropship_equipment/medevac_system/equipment_interact(mob/user) + if(!can_medevac(user)) + return + + var/list/possible_stretchers = get_targets() + + var/stretcher_choice = tgui_input_list(usr, "Which emitting stretcher would you like to link with?", "Available stretchers", possible_stretchers) + if(!stretcher_choice) + return + + var/obj/structure/bed/medevac_stretcher/selected_stretcher = possible_stretchers[stretcher_choice] + if(!selected_stretcher) + return + position_dropship(user, selected_stretcher) //on arrival we break any link @@ -958,6 +1032,35 @@ activate_winch(user) +/obj/structure/dropship_equipment/medevac_system/ui_data(mob/user) + var/list/stretchers = get_targets() + + . = list() + for(var/stretcher_ref in stretchers) + var/obj/structure/bed/medevac_stretcher/stretcher = stretchers[stretcher_ref] + + var/area/AR = get_area(stretcher) + var/list/target_data = list() + target_data["area"] = AR + target_data["ref"] = stretcher_ref + + var/mob/living/carbon/human/occupant = stretcher.buckled_mob + if(occupant) + target_data["occupant"] = occupant.name + target_data["time_of_death"] = occupant.tod + target_data["damage"] = list( + "hp" = occupant.health, + "brute" = occupant.bruteloss, + "oxy" = occupant.oxyloss, + "tox" = occupant.toxloss, + "fire" = occupant.fireloss + ) + if(ishuman(occupant)) + target_data["damage"]["undefib"] = occupant.undefibbable + target_data["triage_card"] = occupant.holo_card_color + + . += list(target_data) + /obj/structure/dropship_equipment/medevac_system/proc/activate_winch(mob/user) set waitfor = 0 var/old_stretcher = linked_stretcher @@ -1013,6 +1116,7 @@ /obj/structure/dropship_equipment/fulton_system name = "\improper RMU-19 Fulton Recovery System" + shorthand = "Fulton" desc = "A winch system to collect any fulton recovery balloons in high altitude. Make sure you turn it on!" equip_categories = list(DROPSHIP_CREW_WEAPON) icon_state = "fulton_system" @@ -1029,7 +1133,26 @@ icon_state = "fulton_system" -/obj/structure/dropship_equipment/fulton_system/equipment_interact(mob/user) +/obj/structure/dropship_equipment/fulton_system/proc/automate_interact(mob/user, fulton_choice) + if(!can_fulton(user)) + return + + var/list/possible_fultons = get_targets() + + var/obj/item/stack/fulton/fult = possible_fultons[fulton_choice] + if(!fulton_choice) + return + + if(!ship_base) //system was uninstalled midway + return + + if(is_ground_level(fult.z)) //in case the fulton popped during our input() + return + + if(!fult.attached_atom) + to_chat(user, SPAN_WARNING("This balloon stretcher is empty.")) + return + if(!linked_shuttle) return @@ -1045,14 +1168,50 @@ to_chat(user, SPAN_WARNING("[src] was just used, you need to wait a bit before using it again.")) return - var/list/possible_fultons = list() + to_chat(user, SPAN_NOTICE(" You move your dropship above the selected balloon's beacon.")) + + activate_winch(user, fult) + + +/obj/structure/dropship_equipment/fulton_system/proc/can_fulton(mob/user) + if(!linked_shuttle) + return FALSE + + if(linked_shuttle.mode != SHUTTLE_CALL) + to_chat(user, SPAN_WARNING("[src] can only be used while in flight.")) + return FALSE + + if(busy_winch) + to_chat(user, SPAN_WARNING(" The winch is already in motion.")) + return FALSE + + if(world.time < fulton_cooldown) + to_chat(user, SPAN_WARNING("[src] was just used, you need to wait a bit before using it again.")) + return FALSE + return TRUE + +/obj/structure/dropship_equipment/fulton_system/ui_data(mob/user) + var/list/targets = get_targets() + . = list() + for(var/i in targets) + . += list(i) + + +/obj/structure/dropship_equipment/fulton_system/proc/get_targets() + . = list() for(var/obj/item/stack/fulton/F in GLOB.deployed_fultons) var/recovery_object if(F.attached_atom) recovery_object = F.attached_atom.name else recovery_object = "Empty" - possible_fultons["[recovery_object]"] = F + .["[recovery_object]"] = F + +/obj/structure/dropship_equipment/fulton_system/equipment_interact(mob/user) + if(!can_fulton(user)) + return + + var/list/possible_fultons = get_targets() if(!possible_fultons.len) to_chat(user, SPAN_WARNING("No active balloons detected.")) @@ -1130,6 +1289,7 @@ // Rappel deployment system /obj/structure/dropship_equipment/rappel_system name = "\improper HPU-1 Rappel Deployment System" + shorthand = "Rappel" equip_categories = list(DROPSHIP_CREW_WEAPON) icon_state = "rappel_module_packaged" point_cost = 50 @@ -1272,4 +1432,4 @@ var/turf/impact = pick(possible_turfs) sleep(3) SA.source_mob = user - SA.detonate_on(impact) + SA.detonate_on(impact, src) diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index 994e9f1ddcb2..00a8c442b770 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -819,7 +819,7 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) var/turf/pos = get_turf(H) if(!pos) continue - if(is_admin_level(pos.z)) + if(should_block_game_interaction(H)) continue // The entry for this human diff --git a/code/modules/cm_marines/radar.dm b/code/modules/cm_marines/radar.dm index f6751a8fe913..d088b68919b0 100644 --- a/code/modules/cm_marines/radar.dm +++ b/code/modules/cm_marines/radar.dm @@ -95,7 +95,7 @@ if(get_dist_euclidian(here_turf, target_turf) > 24) userot = TRUE - rot = round(get_angle(here_turf, target_turf)) + rot = round(Get_Angle(here_turf, target_turf)) else if(target_turf.z > here_turf.z) pointer="caret-up" diff --git a/code/modules/cm_marines/smartgun_mount.dm b/code/modules/cm_marines/smartgun_mount.dm index 308fb79574f6..ecb592f5f30b 100644 --- a/code/modules/cm_marines/smartgun_mount.dm +++ b/code/modules/cm_marines/smartgun_mount.dm @@ -42,8 +42,12 @@ flags_equip_slot = SLOT_BACK icon = 'icons/turf/whiskeyoutpost.dmi' icon_state = "M56D_gun_e" - var/rounds = 0 // How many rounds are in the weapon. This is useful if we break down our guns. - var/has_mount = FALSE // Indicates whether the M56D will come with its folding mount already attached + ///How many rounds are in the weapon. This is useful if we break down our guns. + var/rounds = 0 + ///Indicates whether the M56D will come with its folding mount already attached + var/has_mount = FALSE + ///The distance this has to be away from other m56d_hmg and m56d_post to be placed. + var/defense_check_range = 5 /obj/item/device/m56d_gun/Initialize(mapload, ...) . = ..() @@ -84,7 +88,10 @@ /obj/item/device/m56d_gun/attack_self(mob/user) ..() - + for(var/obj/structure/machinery/machine in urange(defense_check_range, loc)) + if(istype(machine, /obj/structure/machinery/m56d_hmg) || istype(machine, /obj/structure/machinery/m56d_post)) + to_chat(user, SPAN_WARNING("This is too close to [machine]!")) + return if(!ishuman(user)) return if(!has_mount) @@ -125,6 +132,10 @@ if(!do_after(user, 1 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return + for(var/obj/structure/machinery/machine in urange(defense_check_range, loc)) + if(istype(machine, /obj/structure/machinery/m56d_hmg) || istype(machine, /obj/structure/machinery/m56d_post)) + to_chat(user, SPAN_WARNING("This is too close to [machine]!")) + return var/obj/structure/machinery/m56d_post/M = new /obj/structure/machinery/m56d_post(user.loc) M.setDir(user.dir) // Make sure we face the right direction @@ -307,6 +318,10 @@ if(istype(O,/obj/item/device/m56d_gun)) //lets mount the MG onto the mount. var/obj/item/device/m56d_gun/MG = O + for(var/obj/structure/machinery/machine in urange(MG.defense_check_range, loc, TRUE)) + if(istype(machine, /obj/structure/machinery/m56d_hmg) || istype(machine, /obj/structure/machinery/m56d_post)) + to_chat(user, SPAN_WARNING("This is too close to [machine]!")) + return if(!anchored) to_chat(user, SPAN_WARNING("[src] must be anchored! Use a screwdriver!")) return @@ -698,11 +713,14 @@ if(!istype(in_chamber, /obj/projectile)) return - var/angle = get_angle(T, U) + var/angle = Get_Angle(T, U) if((dir == NORTH) && (angle > 180) && (abs(360 - angle) > shoot_degree)) // If north and shooting to the left, we do some extra math return + if((dir == NORTH) && (angle < 180) && (angle > shoot_degree)) + return + else if((dir != NORTH) && (abs(angle - dir2angle(dir)) > shoot_degree)) return @@ -1082,6 +1100,18 @@ zoom = 1 ammo = /datum/ammo/bullet/machinegun/doorgun +/obj/structure/machinery/m56d_hmg/mg_turret/update_health(amount) //Negative values restores health. + health -= amount + if(health <= 0) + playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) + qdel(src) + return + + if(health > health_max) + health = health_max + update_damage_state() + update_icon() + /obj/structure/machinery/m56d_hmg/mg_turret/dropship name = "\improper scoped M56D heavy machine gun" desc = "A scoped M56D heavy machine gun mounted behind a metal shield. Drag its sprite onto yourself to man it. Ctrl-click it to toggle burst fire." diff --git a/code/modules/cm_preds/thrall_items.dm b/code/modules/cm_preds/thrall_items.dm index 80b4d42c16e2..708b230d5c11 100644 --- a/code/modules/cm_preds/thrall_items.dm +++ b/code/modules/cm_preds/thrall_items.dm @@ -35,7 +35,7 @@ ) thrall = TRUE - items_allowed = list( + allowed_items_typecache = list( /obj/item/attachable/bayonet, /obj/item/weapon/throwing_knife, /obj/item/weapon/gun/pistol/holdout, diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm index df8ab136ea18..b575021685fe 100644 --- a/code/modules/cm_preds/yaut_bracers.dm +++ b/code/modules/cm_preds/yaut_bracers.dm @@ -1148,7 +1148,7 @@ return TRUE var/mob/living/carbon/human/victim = held_mob.grabbed_thing - var/obj/item/clothing/gloves/yautja/hunter/bracer = victim.gloves + var/obj/item/clothing/gloves/yautja/bracer = victim.gloves if(isspeciesyautja(victim) && !(victim.stat == DEAD)) to_chat(user, SPAN_WARNING("You cannot unlock the bracer of a living hunter!")) return FALSE diff --git a/code/modules/cm_preds/yaut_items.dm b/code/modules/cm_preds/yaut_items.dm index a648f2392d47..22e1318a7358 100644 --- a/code/modules/cm_preds/yaut_items.dm +++ b/code/modules/cm_preds/yaut_items.dm @@ -3,7 +3,7 @@ //Thrall subtypes are located in /code/modules/cm_preds/thrall_items.dm /proc/add_to_missing_pred_gear(obj/item/W) - if(!is_admin_level(W.z)) + if(!should_block_game_interaction(W)) GLOB.loose_yautja_gear |= W /proc/remove_from_missing_pred_gear(obj/item/W) @@ -217,7 +217,7 @@ siemens_coefficient = 0.2 min_cold_protection_temperature = SHOE_MIN_COLD_PROT max_heat_protection_temperature = SHOE_MAX_HEAT_PROT - items_allowed = list( + allowed_items_typecache = list( /obj/item/weapon/yautja/knife, /obj/item/weapon/gun/energy/yautja/plasmapistol, ) @@ -259,10 +259,9 @@ armor_rad = CLOTHING_ARMOR_MEDIUMHIGH armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH -/obj/item/clothing/shoes/yautja/hunter/knife/New() - ..() - stored_item = new /obj/item/weapon/yautja/knife(src) - update_icon() +/obj/item/clothing/shoes/yautja/hunter/knife + spawn_item_type = /obj/item/weapon/yautja/knife + /obj/item/clothing/under/chainshirt name = "ancient alien mesh suit" desc = "A strange alloy weave in the form of a vest. It feels cold with an alien weight." @@ -394,7 +393,7 @@ var/mob/living/carbon/human/H = user var/ship_to_tele = list("Yautja Ship" = -1, "Human Ship" = "Human") - if(!HAS_TRAIT(H, TRAIT_YAUTJA_TECH) || is_admin_level(H.z)) + if(!HAS_TRAIT(H, TRAIT_YAUTJA_TECH) || should_block_game_interaction(H)) to_chat(user, SPAN_WARNING("You fiddle with it, but nothing happens!")) return diff --git a/code/modules/cm_tech/techtree.dm b/code/modules/cm_tech/techtree.dm index 6c39d8ab9cf9..a027789185ef 100644 --- a/code/modules/cm_tech/techtree.dm +++ b/code/modules/cm_tech/techtree.dm @@ -58,16 +58,24 @@ if(longest_tier < tier_length) longest_tier = tier_length - // Clear out the area - for(var/t in block(locate(1, 1, zlevel.z_value), locate(longest_tier * 2 + 1, length(all_techs) * 3 + 1, zlevel.z_value))) + // Clear out and create the area + // (The `+ 2` on both of these is 1 for a buffer tile, and 1 for the outer `/turf/closed/void`.) + var/area_max_x = longest_tier * 2 + 2 + var/area_max_y = length(all_techs) * 3 + 2 + for(var/t in block(locate(1, 1, zlevel.z_value), locate(area_max_x, area_max_y, zlevel.z_value))) var/turf/pos = t for(var/A in pos) qdel(A) - pos.ChangeTurf(/turf/open/blank) - pos.color = "#000000" - + if(pos.x == area_max_x || pos.y == area_max_y) + // The turfs around the edge are closed. + pos.ChangeTurf(/turf/closed/void) + else + pos.ChangeTurf(/turf/open/blank) + pos.color = "#000000" + new /area/techtree(pos) + // Create the tech nodes var/y_offset = 1 for(var/tier in all_techs) var/tier_length = length(all_techs[tier]) diff --git a/code/modules/decorators/christmas.dm b/code/modules/decorators/christmas.dm index 5c4126510056..290ac6302448 100644 --- a/code/modules/decorators/christmas.dm +++ b/code/modules/decorators/christmas.dm @@ -51,6 +51,7 @@ helmet.icon_override = 'icons/mob/humans/onmob/head_0.dmi' helmet.flags_inv_hide = HIDEEARS|HIDEALLHAIR helmet.flags_marine_helmet = NO_FLAGS + helmet.flags_atom |= NO_SNOW_TYPE|NO_NAME_OVERRIDE if(prob(50)) helmet.icon_state = "santa_hat_red" else @@ -65,7 +66,7 @@ /datum/decorator/christmas/barricade/decorate(obj/structure/barricade/barricade) if(!istype(barricade)) return - barricade.icon = 'icons/obj/structures/barricades_christmas.dmi' + barricade.wire_icon = 'icons/obj/structures/barricades_christmas.dmi' barricade.update_icon() diff --git a/code/modules/defenses/sentry_computer.dm b/code/modules/defenses/sentry_computer.dm index e2cbd5d5858e..59c6409d552c 100644 --- a/code/modules/defenses/sentry_computer.dm +++ b/code/modules/defenses/sentry_computer.dm @@ -48,41 +48,18 @@ // Stuff needed to render the map /// asset name for the game map - var/map_name - - /// camera screen which renders the world - var/atom/movable/screen/map_view/cam_screen - - /// camera screen which shows a blank error - var/atom/movable/screen/background/cam_background - - var/list/cam_plane_masters + var/camera_map_name /obj/item/device/sentry_computer/Initialize(mapload) . = ..() if(cell_type) cell = new cell_type() cell.charge = cell.maxcharge - // set up cameras - map_name = "sentry_computer_[REF(src)]_map" - cam_screen = new - cam_screen.name = "screen" - cam_screen.assigned_map = map_name - cam_screen.del_on_map_removal = FALSE - cam_screen.screen_loc = "[map_name]:1,1" - cam_background = new - cam_background.assigned_map = map_name - cam_background.del_on_map_removal = FALSE - - cam_plane_masters = list() - for(var/plane in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) - var/atom/movable/screen/plane_master/instance = new plane() - instance.assigned_map = map_name - instance.del_on_map_removal = FALSE - if(instance.blend_mode_override) - instance.blend_mode = instance.blend_mode_override - instance.screen_loc = "[map_name]:CENTER" - cam_plane_masters += instance + + RegisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED, PROC_REF(camera_mapname_update)) + + AddComponent(/datum/component/camera_manager) + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) faction_group = FACTION_LIST_MARINE transceiver.forceMove(src) @@ -94,16 +71,20 @@ /obj/item/device/sentry_computer/Destroy() . = ..() + UnregisterSignal(src, COMSIG_CAMERA_MAPNAME_ASSIGNED) QDEL_NULL(cell) - QDEL_NULL(cam_background) - QDEL_NULL(cam_screen) QDEL_NULL(transceiver) QDEL_NULL(voice) last_camera_turf = null current = null registered_tools = null + for(var/obj/structure/machinery/defenses/sentry/sentrygun as anything in paired_sentry) + unpair_sentry(sentrygun) paired_sentry = null +/obj/item/device/sentry_computer/proc/camera_mapname_update(source, value) + camera_map_name = value + /obj/item/device/sentry_computer/Move(NewLoc, direct) ..() if(table_setup || open || on) @@ -232,7 +213,7 @@ for(var/key_id in tool.encryption_keys) var/datum/weakref/ref = tool.encryption_keys[key_id] var/obj/item/device/sentry_computer/key_object = ref.resolve() - key_object.registered_tools -= id + key_object?.registered_tools -= id tool.encryption_keys = list() to_chat(user, SPAN_NOTICE("Existing encryption keys cleared.")) to_chat(usr, SPAN_NOTICE("You begin encryption key to \the [tool].")) @@ -321,7 +302,7 @@ if(current == target) current = null - update_active_camera() + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) /obj/item/device/sentry_computer/ui_status(mob/user, datum/ui_state/state) . = ..() @@ -332,19 +313,16 @@ /obj/item/device/sentry_computer/ui_close(mob/user) - - // Unregister map objects - user.client.clear_map(map_name) + SEND_SIGNAL(src, COMSIG_CAMERA_UNREGISTER_UI, user) /obj/item/device/sentry_computer/ui_static_data(mob/user) . = list() .["sentry_static"] = list() - .["mapRef"] = map_name + .["mapRef"] = camera_map_name var/index = 1 - for(var/sentry in paired_sentry) + for(var/obj/structure/machinery/defenses/sentry/sentrygun as anything in paired_sentry) var/list/sentry_holder = list() - var/obj/structure/machinery/defenses/sentry/sentrygun = sentry sentry_holder["selection_menu"] = list() sentry_holder["index"] = index sentry_holder["name"] = sentrygun.name @@ -396,13 +374,8 @@ /obj/item/device/sentry_computer/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) - update_active_camera() if (!ui) - // Register map objects - user.client.register_map_obj(cam_background) - user.client.register_map_obj(cam_screen) - for(var/plane in cam_plane_masters) - user.client.register_map_obj(plane) + SEND_SIGNAL(src, COMSIG_CAMERA_REGISTER_UI, user) ui = new(user, src, "SentryGunUI", name) ui.open() @@ -426,7 +399,12 @@ if("set-camera") current = sentry playsound(src, get_sfx("terminal_button"), 25, FALSE) - update_active_camera() + var/obj/structure/machinery/defenses/sentry/defense = sentry + if (defense.has_camera) + defense.set_range() + var/datum/shape/rectangle/current_bb = defense.range_bounds + SEND_SIGNAL(src, COMSIG_CAMERA_SET_AREA, current_bb.center_x, current_bb.center_y, defense.loc.z, current_bb.width, current_bb.height) + return TRUE if("ping") playsound(sentry, 'sound/machines/twobeep.ogg', 50, 1) @@ -439,62 +417,8 @@ if("clear-camera") current = null playsound(src, get_sfx("terminal_button"), 25, FALSE) - update_active_camera() + SEND_SIGNAL(src, COMSIG_CAMERA_CLEAR) return TRUE if("ui-interact") playsound(src, get_sfx("terminal_button"), 25, FALSE) return FALSE - -/** - * Set the displayed camera to the static not-connected. - */ -/obj/item/device/sentry_computer/proc/show_camera_static() - cam_screen.vis_contents.Cut() - last_camera_turf = null - cam_background.icon_state = "scanline2" - cam_background.fill_rect(1, 1, 15, 15) - -/** - * Update camera settings and redraw camera on the current variable. - */ -/obj/item/device/sentry_computer/proc/update_active_camera() - // Show static if can't use the camera - if(isnull(current) || !current.has_camera || current.placed != 1) - show_camera_static() - return - - // Is this camera located in or attached to a living thing, Vehicle or helmet? If so, assume the camera's loc is the living (or non) thing. - var/cam_location = current - if(isliving(current.loc) || isVehicle(current.loc)) - cam_location = current.loc - else if(istype(current.loc, /obj/item/clothing/head/helmet/marine)) - var/obj/item/clothing/head/helmet/marine/helmet = current.loc - cam_location = helmet.loc - // If we're not forcing an update for some reason and the cameras are in the same location, - // we don't need to update anything. - // Most security cameras will end here as they're not moving. - if(last_camera_turf == get_turf(cam_location)) - return - - // Cameras that get here are moving, and are likely attached to some moving atom such as cyborgs. - last_camera_turf = get_turf(cam_location) - current.set_range() - var/datum/shape/rectangle/current_bb = current.range_bounds - var/x_size = current_bb.width - var/y_size = current_bb.height - var/target = locate(current_bb.center_x, current_bb.center_y, current.loc.z) - var/list/guncamera_zone = range("[x_size]x[y_size]", target) - - var/list/visible_turfs = list() - - for(var/turf/visible_turf in guncamera_zone) - visible_turfs += visible_turf - - var/list/bbox = get_bbox_of_atoms(visible_turfs) - var/size_x = bbox[3] - bbox[1] + 1 - var/size_y = bbox[4] - bbox[2] + 1 - cam_screen.icon = null - cam_screen.icon_state = "clear" - cam_screen.vis_contents = visible_turfs - cam_background.icon_state = "clear" - cam_background.fill_rect(1, 1, size_x, size_y) diff --git a/code/modules/dropships/attach_points/attach_point.dm b/code/modules/dropships/attach_points/attach_point.dm index 6724f5d18bd2..cee26f0b13f2 100644 --- a/code/modules/dropships/attach_points/attach_point.dm +++ b/code/modules/dropships/attach_points/attach_point.dm @@ -60,7 +60,7 @@ for(var/obj/docking_port/mobile/marine_dropship/shuttle in SSshuttle.mobile) if(shuttle.id == ship_tag) SE.linked_shuttle = shuttle - shuttle.equipments += SE + SEND_SIGNAL(shuttle, COMSIG_DROPSHIP_ADD_EQUIPMENT, SE) break SE.update_equipment() diff --git a/code/modules/dropships/cas/fire_mission_record.dm b/code/modules/dropships/cas/fire_mission_record.dm index 093a1509b2ad..2887ec92c24a 100644 --- a/code/modules/dropships/cas/fire_mission_record.dm +++ b/code/modules/dropships/cas/fire_mission_record.dm @@ -5,6 +5,11 @@ /// List of transverse offsets for each firing step - null meaning not shooting var/list/offsets +/datum/cas_fire_mission_record/ui_data(mob/user) + . = list() + .["weapon"] = weapon.ship_base.attach_id + .["offsets"] = offsets + /// Get offset range allowed when firing weapon in this configuration /datum/cas_fire_mission_record/proc/get_offsets() if(!weapon?.ship_base) diff --git a/code/modules/gear_presets/clf.dm b/code/modules/gear_presets/clf.dm index d89e349a62c1..7748f4e0c558 100644 --- a/code/modules/gear_presets/clf.dm +++ b/code/modules/gear_presets/clf.dm @@ -918,7 +918,7 @@ new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smartgun/clf(new_human), WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/smartgunner/clf/full(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) diff --git a/code/modules/gear_presets/contractor.dm b/code/modules/gear_presets/contractor.dm index ea77fe4a4d0f..896771d26aca 100644 --- a/code/modules/gear_presets/contractor.dm +++ b/code/modules/gear_presets/contractor.dm @@ -4,7 +4,7 @@ rank = JOB_CONTRACTOR idtype = /obj/item/card/id/data faction = FACTION_CONTRACTOR - faction_group = FACTION_LIST_ERT + faction_group = list(FACTION_CONTRACTOR) languages = list(LANGUAGE_ENGLISH, LANGUAGE_SPANISH, LANGUAGE_RUSSIAN) var/human_versus_human = FALSE var/headset_type = /obj/item/device/radio/headset/distress/contractor diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index ca2b2e2ab52d..72513a95f880 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -111,7 +111,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) if(prob(25)) @@ -738,7 +738,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) add_random_survivor_equipment(new_human) @@ -854,7 +854,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/freelancer, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/dutch, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine, WEAR_WAIST) diff --git a/code/modules/gear_presets/fun.dm b/code/modules/gear_presets/fun.dm index 68253afbf90a..44b2a1a1157a 100644 --- a/code/modules/gear_presets/fun.dm +++ b/code/modules/gear_presets/fun.dm @@ -327,7 +327,7 @@ //head new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ivanberet, WEAR_HEAD) //limb - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/ivan, WEAR_WAIST) diff --git a/code/modules/gear_presets/other.dm b/code/modules/gear_presets/other.dm index 6a9fa4d6f55a..d97a032337ee 100644 --- a/code/modules/gear_presets/other.dm +++ b/code/modules/gear_presets/other.dm @@ -69,7 +69,7 @@ //generic clothing new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/freelancer, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) spawn_merc_helmet(new_human) //storage and specific stuff, they all get an ERT medpouch. @@ -149,7 +149,7 @@ new_human.equip_to_slot_or_del(FREELANCER, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) spawn_merc_helmet(new_human) @@ -216,7 +216,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/freelancer, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/freelancer/beret, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) @@ -774,7 +774,7 @@ /datum/equipment_preset/other/xeno_cultist/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain/cultist(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) @@ -952,3 +952,21 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tank(new_human), WEAR_R_STORE) //*****************************************************************************************************/ + + +/datum/equipment_preset/tutorial + name = "Tutorial" + faction = FACTION_MARINE + flags = EQUIPMENT_PRESET_EXTRA + faction_group = FACTION_LIST_MARINE + languages = list(LANGUAGE_ENGLISH) + idtype = /obj/item/card/id + /// If the player should start out underfed + var/underfed = TRUE + +/datum/equipment_preset/tutorial/load_status(mob/living/carbon/human/new_human) + if(underfed) + new_human.nutrition = NUTRITION_LOW + +/datum/equipment_preset/tutorial/fed + underfed = FALSE diff --git a/code/modules/gear_presets/survivors/corsat/preset_corsat.dm b/code/modules/gear_presets/survivors/corsat/preset_corsat.dm index f71439b9d7ac..f4267c4454b8 100644 --- a/code/modules/gear_presets/survivors/corsat/preset_corsat.dm +++ b/code/modules/gear_presets/survivors/corsat/preset_corsat.dm @@ -35,11 +35,11 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) ..() -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat +/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/corsat name = "Survivor - Interstellar Commerce Commission Liaison CORSAT" assignment = "Interstellar Commerce Commission Corporate Liaison" -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/corsat/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) diff --git a/code/modules/gear_presets/survivors/misc.dm b/code/modules/gear_presets/survivors/misc.dm index 396c38054965..692833bfa82b 100644 --- a/code/modules/gear_presets/survivors/misc.dm +++ b/code/modules/gear_presets/survivors/misc.dm @@ -242,7 +242,7 @@ Everything below isn't used or out of place. new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/freelancer, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) spawn_merc_helmet(new_human) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/dutch, WEAR_L_EAR) diff --git a/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm index daa3a8ec019b..077adf971092 100644 --- a/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm +++ b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm @@ -38,11 +38,11 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) ..() -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv +/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/nv name = "Survivor - Interstellar Commerce Commission Liaison New Varadero" assignment = "Interstellar Commerce Commission Corporate Liaison" -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/nv/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/black(new_human), WEAR_JACKET) diff --git a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm index f53f25326b69..220034399293 100644 --- a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm +++ b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm @@ -5,7 +5,7 @@ /datum/equipment_preset/survivor/engineer/soro/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/soviet(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) @@ -19,7 +19,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/veteran/soviet_uniform_01(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/soviet(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) @@ -71,4 +71,3 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/lockable/liaison, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) ..() - diff --git a/code/modules/gear_presets/survivors/survivors.dm b/code/modules/gear_presets/survivors/survivors.dm index f443b46bb177..0e98c60ca453 100644 --- a/code/modules/gear_presets/survivors/survivors.dm +++ b/code/modules/gear_presets/survivors/survivors.dm @@ -378,12 +378,13 @@ Everything bellow is a parent used as a base for one or multiple maps. skills = /datum/skills/civilian/survivor/trucker idtype = /obj/item/card/id/data flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_LOGISTICS) + access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_LOGISTICS,ACCESS_WY_FLIGHT) -/datum/equipment_preset/survivor/engineer/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/flight_control_operator/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/bluesuit(new_human), WEAR_BODY) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) add_ice_colony_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/windbreaker/windbreaker_brown(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/headset(new_human), WEAR_HEAD) @@ -420,7 +421,7 @@ Everything bellow is a parent used as a base for one or multiple maps. // ----- Interstellar Commerce Commission Survivor // Used in Trijent Dam and New Varadero. -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason +/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison name = "Survivor - Interstellar Commerce Commission Liaison" assignment = "Interstellar Commerce Commission Corporate Liaison" skills = /datum/skills/civilian/survivor @@ -431,11 +432,11 @@ Everything bellow is a parent used as a base for one or multiple maps. survivor_variant = CORPORATE_SURVIVOR -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/New() +/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/New() . = ..() access = get_access(ACCESS_LIST_CIVIL_LIAISON) -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) diff --git a/code/modules/gear_presets/survivors/trijent/crashlanding_upp_bar_insert_trijent.dm b/code/modules/gear_presets/survivors/trijent/crashlanding_upp_bar_insert_trijent.dm index 324cfbe3bf7a..99589582cbf6 100644 --- a/code/modules/gear_presets/survivors/trijent/crashlanding_upp_bar_insert_trijent.dm +++ b/code/modules/gear_presets/survivors/trijent/crashlanding_upp_bar_insert_trijent.dm @@ -26,7 +26,7 @@ uniform.roll_suit_sleeves(new_human) new_human.equip_to_slot_or_del(uniform, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp (new_human), WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp_knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) @@ -207,4 +207,4 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/uppsynth, WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index 3b2efd8c22be..9a181c817020 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -317,7 +317,7 @@ WEAR_WAIST = /obj/item/storage/belt/marine, WEAR_HANDS = /obj/item/clothing/gloves/marine/veteran, WEAR_R_HAND = /obj/item/storage/pouch/flare/full, - WEAR_FEET = /obj/item/clothing/shoes/marine/upp, + WEAR_FEET = /obj/item/clothing/shoes/marine/upp/knife, WEAR_L_HAND = /obj/item/storage/large_holster/katana/full ) diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index dc79f87c5135..0b3b4d4ecfb5 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -78,7 +78,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) @@ -151,7 +151,7 @@ /datum/equipment_preset/upp/soldier/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UM5 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), @@ -261,7 +261,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //póckets var/obj/item/storage/pouch/magazine/large/ppouch = new() @@ -280,7 +280,7 @@ /datum/equipment_preset/upp/medic/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), @@ -435,7 +435,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/upp/sapper(new_human), WEAR_WAIST) //limb new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/insulated(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction/full(new_human), WEAR_R_STORE) @@ -443,7 +443,7 @@ /datum/equipment_preset/upp/sapper/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UM5 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), @@ -556,7 +556,7 @@ new_human.equip_to_slot_or_del(UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, WEAR_JACKET) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_R_STORE) @@ -582,7 +582,7 @@ /datum/equipment_preset/upp/specialist/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UH7 Heavy Plated Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), @@ -683,7 +683,7 @@ new_human.equip_to_slot_or_del(UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, WEAR_JACKET) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_R_STORE) @@ -707,7 +707,7 @@ /datum/equipment_preset/upp/machinegunner/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UH7 Heavy Plated Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), @@ -829,7 +829,7 @@ if(4) //25% new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flamertank, WEAR_R_STORE) @@ -843,7 +843,7 @@ /datum/equipment_preset/upp/leader/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UH7 Heavy Plated Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), @@ -979,7 +979,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/UPP/full, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_L_STORE) @@ -990,7 +990,7 @@ /datum/equipment_preset/upp/military_police/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/mp, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UL4 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), @@ -1140,7 +1140,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -1155,7 +1155,7 @@ /datum/equipment_preset/upp/officer/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -1300,7 +1300,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -1315,7 +1315,7 @@ /datum/equipment_preset/upp/officer/senior/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -1461,7 +1461,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -1476,7 +1476,7 @@ /datum/equipment_preset/upp/officer/kapitan/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -1622,7 +1622,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -1637,7 +1637,7 @@ /datum/equipment_preset/upp/officer/major/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -1783,7 +1783,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -1798,7 +1798,7 @@ /datum/equipment_preset/upp/officer/lt_kolonel/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -1944,7 +1944,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -1959,7 +1959,7 @@ /datum/equipment_preset/upp/officer/kolonel/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -2105,7 +2105,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -2120,7 +2120,7 @@ /datum/equipment_preset/upp/officer/may_gen/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -2266,7 +2266,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -2281,7 +2281,7 @@ /datum/equipment_preset/upp/officer/ley_gen/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -2427,7 +2427,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) @@ -2442,7 +2442,7 @@ /datum/equipment_preset/upp/officer/gen/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -2583,7 +2583,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/shotgun/upp/heavybuck(new_human), WEAR_WAIST) //limb new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/insulated(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_R_STORE) @@ -2667,7 +2667,7 @@ //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //póckets var/obj/item/storage/pouch/magazine/large/ppouch = new() @@ -2836,7 +2836,7 @@ new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_JACKET) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) var/maybegloves = prob(80) ? pick(/obj/item/clothing/gloves/black, /obj/item/clothing/gloves/marine/veteran/upp, /obj/item/clothing/gloves/combat) : null if(maybegloves) new_human.equip_to_slot_or_del(new maybegloves, WEAR_HANDS) @@ -2865,7 +2865,7 @@ /datum/equipment_preset/upp/conscript/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -2933,7 +2933,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92/suppressed, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -2954,7 +2954,7 @@ /datum/equipment_preset/upp/commando/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/commando, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/kdo, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -3055,7 +3055,7 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -3085,7 +3085,7 @@ /datum/equipment_preset/upp/commando/medic/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues Medic", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/kdo/medic, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -3225,7 +3225,7 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) 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/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -3249,7 +3249,7 @@ /datum/equipment_preset/upp/commando/leader/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/commando, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/kdo/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), @@ -3369,7 +3369,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92/suppressed, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -3399,7 +3399,7 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -3438,7 +3438,7 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) 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/storage/backpack/marine/satchel/scout_cloak/upp/weak, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -3472,7 +3472,7 @@ /datum/equipment_preset/upp/tank/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/cct(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(new_human), WEAR_HANDS) @@ -3611,7 +3611,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_BELT) //limbs - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //póckets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_R_STORE) @@ -3630,7 +3630,7 @@ /datum/equipment_preset/upp/doctor/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index 7cee0802e479..8289bdfe09cb 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -30,7 +30,7 @@ /datum/equipment_preset/uscm/load_preset(mob/living/carbon/human/new_human, randomise, count_participant) . = ..() - if(!auto_squad_name || (is_admin_level(new_human.z) && !ert_squad)) + if(!auto_squad_name || (should_block_game_interaction(new_human) && !ert_squad)) return if(!GLOB.data_core.manifest_modify(new_human.real_name, WEAKREF(new_human), assignment, rank)) GLOB.data_core.manifest_inject(new_human) diff --git a/code/modules/maptext_alerts/screen_alerts.dm b/code/modules/maptext_alerts/screen_alerts.dm index b096d3b3718f..e0a4d2e4d5b8 100644 --- a/code/modules/maptext_alerts/screen_alerts.dm +++ b/code/modules/maptext_alerts/screen_alerts.dm @@ -64,6 +64,26 @@ style_open = "" style_close = "" +/atom/movable/screen/text/screen_text/command_order/tutorial + letters_per_update = 4 // overall, pretty fast while not immediately popping in + play_delay = 0.1 + fade_out_delay = 2.5 SECONDS + fade_out_time = 0.5 SECONDS + +/atom/movable/screen/text/screen_text/command_order/tutorial/end_play() + if(!player) + qdel(src) + return + + if(player.mob || HAS_TRAIT(player.mob, TRAIT_IN_TUTORIAL)) + return ..() + + for(var/atom/movable/screen/text/screen_text/command_order/tutorial/tutorial_message in player.screen_texts) + LAZYREMOVE(player.screen_texts, tutorial_message) + qdel(tutorial_message) + + return ..() + ///proc for actually playing this screen_text on a mob. /atom/movable/screen/text/screen_text/proc/play_to_client() player?.add_to_screen(src) @@ -222,6 +242,10 @@ if(!QDELETED(src)) openToolTip(usr, src, params, title = name, content = desc, theme = alerttooltipstyle) +/atom/movable/screen/alert/MouseExited(location, control, params) + . = ..() + closeToolTip(usr) + /atom/movable/screen/alert/notify_action name = "Notification" desc = "A new notification. You can enter it." diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 430f959a7718..529d13636b2d 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -463,7 +463,7 @@ Works together with spawning an observer, noted above. ghost.langchat_make_image() SStgui.on_transfer(src, ghost) - if(is_admin_level((get_turf(src))?.z)) // Gibbed humans ghostize the brain in their head which itself is z 0 + if(should_block_game_interaction(src)) // Gibbed humans ghostize the brain in their head which itself is z 0 ghost.timeofdeath = 1 // Bypass respawn limit if you die on the admin zlevel ghost.key = key @@ -547,7 +547,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp msg_admin_niche("[key_name_admin(client)] has ghosted. [ADMIN_JMP(location)]") log_game("[key_name_admin(client)] has ghosted.") var/mob/dead/observer/ghost = ghostize((is_nested && nest && !QDELETED(nest))) //FALSE parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3 - if(ghost && !is_admin_level(z)) + SEND_SIGNAL(src, COMSIG_LIVING_GHOSTED, ghost) + if(ghost && !should_block_game_interaction(src)) ghost.timeofdeath = world.time // Larva queue: We use the larger of their existing queue time or the new timeofdeath except for facehuggers or lesser drone @@ -1231,6 +1232,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(client.prefs?.be_special & BE_ALIEN_AFTER_DEATH) if(larva_queue_cached_message) . += larva_queue_cached_message + . += "" + + if(timeofdeath) + . += "Time Since Death: [duration2text_sec(world.time - timeofdeath)]" /proc/message_ghosts(message) diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index 5fe27c5e5167..50496cef31c5 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -53,6 +53,15 @@ var/list/survivors = list() var/list/xenos = list() var/list/ert_members = list() + var/list/upp = list() + var/list/clf = list() + var/list/wy = list() + var/list/twe = list() + var/list/freelancer = list() + var/list/contractor = list() + var/list/mercenary = list() + var/list/dutch = list() + var/list/marshal = list() var/list/synthetics = list() var/list/predators = list() var/list/animals = list() @@ -132,12 +141,30 @@ if(SSticker.mode.is_in_endgame == TRUE && !is_mainship_level(M.z) && !(human.faction in FACTION_LIST_ERT)) escaped += list(serialized) + else if(human.faction in FACTION_LIST_WY) + wy += list(serialized) else if(issynth(human) && !isinfiltratorsynthetic(human)) synthetics += list(serialized) else if(isyautja(human)) predators += list(serialized) else if(human.faction in FACTION_LIST_ERT) ert_members += list(serialized) + else if(human.faction in FACTION_LIST_UPP) + upp += list(serialized) + else if(human.faction in FACTION_LIST_CLF) + clf += list(serialized) + else if(human.faction in FACTION_LIST_TWE) + twe += list(serialized) + else if(human.faction in FACTION_LIST_FREELANCER) + freelancer += list(serialized) + else if(human.faction in FACTION_LIST_CONTRACTOR) + contractor += list(serialized) + else if(human.faction in FACTION_LIST_MERCENARY) + mercenary += list(serialized) + else if(human.faction in FACTION_LIST_MARSHAL) + marshal += list(serialized) + else if(human.faction in FACTION_LIST_DUTCH) + dutch += list(serialized) else if(human.faction in FACTION_LIST_MARINE) marines += list(serialized) else if(issurvivorjob(human.job)) @@ -156,6 +183,15 @@ data["survivors"] = survivors data["xenos"] = xenos data["ert_members"] = ert_members + data["upp"] = upp + data["clf"] = clf + data["wy"] = wy + data["twe"] = twe + data["freelancer"] = freelancer + data["contractor"] = contractor + data["mercenary"] = mercenary + data["dutch"] = dutch + data["marshal"] = marshal data["synthetics"] = synthetics data["predators"] = predators data["animals"] = animals diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index c66d096c6c68..dd71180e2dfe 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -202,18 +202,21 @@ /mob/living/hear_say(message, verb, datum/language/language, alt_name, italics, mob/speaker, sound/speech_sound, sound_vol) if(client && mind && stat == UNCONSCIOUS) - hear_sleep(src, message, src == speaker, Adjacent(speaker)) + hear_sleep(speaker, message, src == speaker, Adjacent(speaker), language) return return ..() /mob/living/hear_radio(message, verb, datum/language/language, part_a, part_b, mob/speaker, hard_to_hear, vname, command, no_paygrade) if(client && mind && stat == UNCONSCIOUS) - hear_sleep(src, message, FALSE, FALSE) + hear_sleep(speaker, message, FALSE, FALSE, language) return return ..() -/mob/living/proc/hear_sleep(mob/speaker = null, message, hearing_self = FALSE, proximity_flag = FALSE) +/mob/living/proc/hear_sleep(mob/speaker = null, message, hearing_self = FALSE, proximity_flag = FALSE, datum/language/language = null) var/heard = "" + var/clear_char_probability = 90 + if(!say_understands(speaker, language)) + clear_char_probability = 25 if(sdisabilities & DISABILITY_DEAF || ear_deaf) if(speaker == src) @@ -226,7 +229,7 @@ heard = SPAN_LOCALSAY("You mutter something about... [stars(message, clear_char_probability = 99)]") else if(!sleeping && proximity_flag) - heard = SPAN_LOCALSAY("You hear someone near you say something... [stars(message, clear_char_probability = 90)]") + heard = SPAN_LOCALSAY("You hear someone near you say something... [stars(message, clear_char_probability)]") else if(prob(15)) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index d71a908d627a..8a0f0f8aa1e9 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -347,13 +347,12 @@ W.forceMove(B) equipped = 1 if(WEAR_IN_SHOES) - if(!shoes) - return + // If the player isn't wearing shoes, or the shoes somehow aren't shoes. if(!istype(shoes, /obj/item/clothing/shoes)) return - if(shoes.stored_item) - return - shoes.attempt_insert_item(src, shoes, TRUE) + // If the item was successfully inserted. + if(shoes.attempt_insert_item(src, W)) + equipped = 1 // what is this proc if(WEAR_IN_SCABBARD) if(src.back && istype(src.back, /obj/item/storage/large_holster)) var/obj/item/storage/large_holster/B = src.back diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 62fbd1da09fa..77f33b999924 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -528,24 +528,24 @@ if(istype(passed_mob, /mob/living/carbon/human)) var/mob/living/carbon/human/passed_human = passed_mob if (issynth(passed_human)) - return 1 + return TRUE switch(hudtype) if("security") if(skillcheck(passed_human, SKILL_POLICE, SKILL_POLICE_SKILLED)) var/datum/mob_hud/sec_hud = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] - if(locate(passed_mob) in sec_hud.hudusers) + if(sec_hud.hudusers[passed_human]) return TRUE if("medical") if(skillcheck(passed_human, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) var/datum/mob_hud/med_hud = GLOB.huds[MOB_HUD_MEDICAL_ADVANCED] - if(locate(passed_mob) in med_hud.hudusers) + if(med_hud.hudusers[passed_human]) return TRUE if("squadleader") var/datum/mob_hud/faction_hud = GLOB.huds[MOB_HUD_FACTION_USCM] - if(passed_human.mind && passed_human.assigned_squad && passed_human.assigned_squad.squad_leader == passed_human && locate(passed_mob) in faction_hud.hudusers) + if(passed_human.mind && passed_human.assigned_squad && passed_human.assigned_squad.squad_leader == passed_human && faction_hud.hudusers[passed_mob]) return TRUE else - return 0 + return FALSE else if(isrobot(passed_mob)) var/mob/living/silicon/robot/R = passed_mob switch(hudtype) @@ -554,6 +554,6 @@ if("medical") return istype(R.module_state_1, /obj/item/robot/sight/hud/med) || istype(R.module_state_2, /obj/item/robot/sight/hud/med) || istype(R.module_state_3, /obj/item/robot/sight/hud/med) else - return 0 + return FALSE else - return 0 + return FALSE diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b523cef08eec..d2e0db929624 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1445,7 +1445,7 @@ /mob/living/carbon/human/verb/remove_your_splints() set name = "Remove Your Splints" - set category = "Object" + set category = "IC" remove_splints() @@ -1748,3 +1748,28 @@ // clamped to max 500 if(dizziness > 100 && !is_dizzy) INVOKE_ASYNC(src, PROC_REF(dizzy_process)) + +/proc/setup_human(mob/living/carbon/human/target, mob/new_player/new_player, is_late_join = FALSE) + new_player.spawning = TRUE + new_player.close_spawn_windows() + new_player.client.prefs.copy_all_to(target, new_player.job, is_late_join) + + if(new_player.client.prefs.be_random_body) + var/datum/preferences/rand_prefs = new() + rand_prefs.randomize_appearance(target) + + target.job = new_player.job + target.name = new_player.real_name + target.voice = new_player.real_name + + if(new_player.mind) + new_player.mind_initialize() + new_player.mind.transfer_to(target, TRUE) + new_player.mind.setup_human_stats() + + target.sec_hud_set_ID() + target.hud_set_squad() + + INVOKE_ASYNC(target, TYPE_PROC_REF(/mob/living/carbon/human, regenerate_icons)) + INVOKE_ASYNC(target, TYPE_PROC_REF(/mob/living/carbon/human, update_body), 1, 0) + INVOKE_ASYNC(target, TYPE_PROC_REF(/mob/living/carbon/human, update_hair)) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 8f032288065b..f14b023b81da 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -4,9 +4,11 @@ if(..()) return TRUE + SEND_SIGNAL(attacking_mob, COMSIG_LIVING_ATTACKHAND_HUMAN, src) + if((attacking_mob != src) && check_shields(0, attacking_mob.name)) visible_message(SPAN_DANGER("[attacking_mob] attempted to touch [src]!"), null, null, 5) - return 0 + return FALSE switch(attacking_mob.a_intent) if(INTENT_HELP) diff --git a/code/modules/mob/living/carbon/human/human_dummy.dm b/code/modules/mob/living/carbon/human/human_dummy.dm index 061ac3cea05f..1f90c618fd38 100644 --- a/code/modules/mob/living/carbon/human/human_dummy.dm +++ b/code/modules/mob/living/carbon/human/human_dummy.dm @@ -73,3 +73,12 @@ GLOBAL_LIST_EMPTY(dummy_mob_list) /mob/living/carbon/human/dummy/add_to_all_mob_huds() return + + +/mob/living/carbon/human/dummy/tutorial // Effectively an even more disabled dummy + +/mob/living/carbon/human/dummy/tutorial/Initialize(mapload) + . = ..() + status_flags = GODMODE + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_TUTORIAL) + anchored = TRUE diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b54f03e2ce7d..3d372376d1e7 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -354,8 +354,7 @@ current_storage.attempt_item_insertion(equipping_item, disable_warning, src) back.update_icon() if(WEAR_IN_SHOES) - shoes.attempt_insert_item(src, equipping_item, TRUE) - shoes.update_icon() + shoes.attempt_insert_item(src, equipping_item) if(WEAR_IN_SCABBARD) var/obj/item/storage/current_storage = back current_storage.attempt_item_insertion(equipping_item, disable_warning, src) @@ -495,7 +494,8 @@ /// Multiplier for how quickly the user can strip things. var/user_speed = user.get_skill_duration_multiplier(SKILL_CQC) /// The total skill level of CQC & Police - var/target_skills = (target.skills.get_skill_level(SKILL_CQC) + target.skills.get_skill_level(SKILL_POLICE)) + var/target_skills = 0 + target_skills += (target.skills?.get_skill_level(SKILL_CQC) + target.skills?.get_skill_level(SKILL_POLICE)) /// Delay then gets + 0.5s per skill level, so long as not dead or cuffed. if(!(target.stat || target.handcuffed)) @@ -571,5 +571,3 @@ /mob/living/carbon/human/drop_inv_item_on_ground(obj/item/I, nomoveupdate, force) remember_dropped_object(I) return ..() - - diff --git a/code/modules/mob/living/carbon/human/powers/human_powers.dm b/code/modules/mob/living/carbon/human/powers/human_powers.dm index be7848b2a936..36eb927eb7fb 100644 --- a/code/modules/mob/living/carbon/human/powers/human_powers.dm +++ b/code/modules/mob/living/carbon/human/powers/human_powers.dm @@ -202,7 +202,7 @@ if(new_resting == resting) return if(!COOLDOWN_FINISHED(src, rest_cooldown)) - to_chat(src, SPAN_WARNING("You can't 'rest' that fast. Take a breather!")) + to_chat(src, SPAN_WARNING("[isxeno(src) ? "We" : "You"] can't 'rest' that fast. Take a breather!")) return COOLDOWN_START(src, rest_cooldown, 1 SECONDS) @@ -211,24 +211,24 @@ if(new_resting) if(body_position == LYING_DOWN) if(!silent) - to_chat(src, SPAN_NOTICE("You will now try to stay lying down on the floor.")) + to_chat(src, SPAN_NOTICE("[isxeno(src) ? "We" : "You"] will now try to stay lying down on the floor.")) else if(HAS_TRAIT(src, TRAIT_FORCED_STANDING) || (buckled && buckled.buckle_lying != NO_BUCKLE_LYING)) if(!silent) - to_chat(src, SPAN_NOTICE("You will now lay down as soon as you are able to.")) + to_chat(src, SPAN_NOTICE("[isxeno(src) ? "We" : "You"] will now lay down as soon as [isxeno(src) ? "we" : "you"] are able to.")) else if(!silent) - to_chat(src, SPAN_NOTICE("You lay down.")) + to_chat(src, SPAN_NOTICE("[isxeno(src) ? "We" : "You"] lay down.")) set_lying_down() else if(body_position == STANDING_UP) if(!silent) - to_chat(src, SPAN_NOTICE("You will now try to remain standing up.")) + to_chat(src, SPAN_NOTICE("[isxeno(src) ? "We" : "You"] will now try to remain standing up.")) else if(HAS_TRAIT(src, TRAIT_FLOORED) || (buckled && buckled.buckle_lying != NO_BUCKLE_LYING)) if(!silent) - to_chat(src, SPAN_NOTICE("You will now stand up as soon as you are able to.")) + to_chat(src, SPAN_NOTICE("[isxeno(src) ? "We" : "You"] will now stand up as soon as [isxeno(src) ? "we" : "you"] are able to.")) else if(!silent) - to_chat(src, SPAN_NOTICE("You stand up.")) + to_chat(src, SPAN_NOTICE("[isxeno(src) ? "We" : "You"] stand up.")) get_up(instant) // SEND_SIGNAL(src, COMSIG_LIVING_RESTING, new_resting, silent, instant) diff --git a/code/modules/mob/living/carbon/human/species/yautja/_species.dm b/code/modules/mob/living/carbon/human/species/yautja/_species.dm index f8937279d8b9..a69d94afaca7 100644 --- a/code/modules/mob/living/carbon/human/species/yautja/_species.dm +++ b/code/modules/mob/living/carbon/human/species/yautja/_species.dm @@ -53,8 +53,8 @@ /mob/living/carbon/human/proc/mark_panel, ) - knock_down_reduction = 4 - stun_reduction = 4 + knock_down_reduction = 1.5 + stun_reduction = 1.5 weed_slowdown_mult = 0 // no slowdown! icobase = 'icons/mob/humans/species/r_predator.dmi' diff --git a/code/modules/mob/living/carbon/human/species/zombie.dm b/code/modules/mob/living/carbon/human/species/zombie.dm index 76b1c3928659..f5db0c1b8728 100644 --- a/code/modules/mob/living/carbon/human/species/zombie.dm +++ b/code/modules/mob/living/carbon/human/species/zombie.dm @@ -59,10 +59,10 @@ zombie.equip_to_slot_or_del(new /obj/item/weapon/zombie_claws(zombie), WEAR_L_HAND, TRUE) zombie.equip_to_slot_or_del(new /obj/item/clothing/glasses/zombie_eyes(zombie), WEAR_EYES, TRUE) - var/datum/disease/black_goo/D = locate() in zombie.viruses - if(!D) - D = zombie.AddDisease(new /datum/disease/black_goo()) - D.stage = 5 + var/datum/disease/black_goo/zombie_infection = locate() in zombie.viruses + if(!zombie_infection) + zombie_infection = zombie.AddDisease(new /datum/disease/black_goo()) + zombie_infection.stage = 3 var/datum/mob_hud/Hu = GLOB.huds[MOB_HUD_MEDICAL_OBSERVER] Hu.add_hud_to(zombie, zombie) @@ -70,6 +70,7 @@ return ..() + /datum/species/zombie/post_species_loss(mob/living/carbon/human/zombie) ..() remove_from_revive(zombie) diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index e799c21d3f20..9a1dfcb0e9a5 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -160,7 +160,7 @@ /obj/item/alien_embryo/proc/become_larva() // We do not allow chest bursts on the Centcomm Z-level, to prevent // stranded players from admin experiments and other issues - if(!affected_mob || is_admin_level(affected_mob.z)) + if(!affected_mob || should_block_game_interaction(affected_mob)) return stage = 6 // Increase the stage value to prevent this proc getting repeated diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index a2ade5cd0512..d6f963747e33 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -143,7 +143,7 @@ return var/area/xeno_area = get_area(new_xeno) - if(!is_admin_level(new_xeno.z) || (xeno_area.flags_atom & AREA_ALLOW_XENO_JOIN)) + if(!should_block_game_interaction(new_xeno) || (xeno_area.flags_atom & AREA_ALLOW_XENO_JOIN)) switch(new_xeno.tier) //They have evolved, add them to the slot count IF they are in regular game space if(2) hive.tier_2_xenos |= new_xeno diff --git a/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm b/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm index 3160c5e20bc7..0b0efbc0f34f 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm @@ -43,12 +43,12 @@ var/list/possible_xenos = list() for(var/mob/living/carbon/xenomorph/T in GLOB.living_xeno_list) - if (T != X && !is_admin_level(T.z) && X.hivenumber == T.hivenumber) // Can't overwatch yourself, Xenos in Thunderdome, or Xenos in other hives + if (T != X && !should_block_game_interaction(T) && X.hivenumber == T.hivenumber) // Can't overwatch yourself, Xenos in Thunderdome, or Xenos in other hives possible_xenos += T var/mob/living/carbon/xenomorph/selected_xeno = tgui_input_list(X, "Target", "Watch which xenomorph?", possible_xenos, theme="hive_status") - if (!selected_xeno || QDELETED(selected_xeno) || selected_xeno == X.observed_xeno || selected_xeno.stat == DEAD || is_admin_level(selected_xeno.z) || !X.check_state(TRUE)) + if (!selected_xeno || QDELETED(selected_xeno) || selected_xeno == X.observed_xeno || selected_xeno.stat == DEAD || should_block_game_interaction(selected_xeno) || !X.check_state(TRUE)) X.overwatch(X.observed_xeno, TRUE) // Cancel OW else if (!isQueen) // Regular Xeno OW vs Queen X.overwatch(selected_xeno) @@ -177,7 +177,7 @@ var/mob/living/carbon/xenomorph/xenoTarget = locate(href_list[XENO_OVERWATCH_TARGET_HREF]) in GLOB.living_xeno_list var/mob/living/carbon/xenomorph/xenoSrc = locate(href_list[XENO_OVERWATCH_SRC_HREF]) in GLOB.living_xeno_list - if(!istype(xenoTarget) || xenoTarget.stat == DEAD || is_admin_level(xenoTarget.z)) + if(!istype(xenoTarget) || xenoTarget.stat == DEAD || should_block_game_interaction(xenoTarget)) return if(!istype(xenoSrc) || xenoSrc.stat == DEAD) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 3095e805be6a..08f884d3a69d 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -114,10 +114,6 @@ var/crit_grace_time = 1 SECONDS var/next_grace_time = 0 - //Amount of construction resources stored internally - var/crystal_stored = 0 - var/crystal_max = 0 - var/evasion = 0 // RNG "Armor" // Armor @@ -436,6 +432,9 @@ if(mob_size < MOB_SIZE_BIG) mob_flags |= SQUEEZE_UNDER_VEHICLES + GLOB.living_xeno_list += src + GLOB.xeno_mob_list += src + // More setup stuff for names, abilities etc update_icon_source() generate_name() @@ -457,9 +456,6 @@ //Begin SStracking SStracking.start_tracking("hive_[src.hivenumber]", src) - GLOB.living_xeno_list += src - GLOB.xeno_mob_list += src - //WO GAMEMODE if(SSticker?.mode?.hardcore) hardcore = 1 //Prevents healing and queen evolution @@ -480,7 +476,7 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE // Only handle free slots if the xeno is not in tdome - if(hive && !is_admin_level(z)) + if(hive && !should_block_game_interaction(src)) var/selected_caste = GLOB.xeno_datum_list[caste_type]?.type hive.used_slots[selected_caste]++ @@ -735,8 +731,6 @@ if(!isliving(AM)) return FALSE var/mob/living/L = AM - if(issynth(L) && L.health < 0) // no pulling critted or dead synths - return FALSE if(L.buckled) return FALSE //to stop xeno from pulling marines on roller beds. if(!L.is_xeno_grabbable()) @@ -847,7 +841,6 @@ /mob/living/carbon/xenomorph/proc/recalculate_stats() recalculate_health() recalculate_plasma() - recalculate_stockpile() recalculate_speed() recalculate_armor() recalculate_damage() @@ -887,11 +880,6 @@ if(plasma_stored > plasma_max) plasma_stored = plasma_max -/mob/living/carbon/xenomorph/proc/recalculate_stockpile() - crystal_max = caste.crystal_max - if(crystal_stored > crystal_max) - crystal_stored = crystal_max - /mob/living/carbon/xenomorph/proc/recalculate_speed() recalculate_move_delay = TRUE speed = speed_modifier @@ -1011,22 +999,21 @@ SPAN_NOTICE("We extinguish ourselves."), null, 5) /mob/living/carbon/xenomorph/resist_restraints() + if(!legcuffed) + return var/breakouttime = legcuffed.breakouttime - next_move = world.time + 100 - last_special = world.time + 10 + next_move = world.time + 10 SECONDS + last_special = world.time + 1 SECONDS var/displaytime = max(1, round(breakouttime / 600)) //Minutes - to_chat(src, SPAN_WARNING("We attempt to remove [legcuffed]. (This will take around [displaytime] minute(s) and we must stand still)")) - for(var/mob/O in viewers(src)) - O.show_message(SPAN_DANGER("[usr] attempts to remove [legcuffed]!"), SHOW_MESSAGE_VISIBLE) - if(!do_after(src, breakouttime, INTERRUPT_NO_NEEDHAND^INTERRUPT_RESIST, BUSY_ICON_HOSTILE)) + visible_message(SPAN_DANGER("[src] attempts to remove [legcuffed]!"), + SPAN_WARNING("We attempt to remove [legcuffed]. (This will take around [displaytime] minute\s and we must stand still)")) + if(!do_after(src, breakouttime, INTERRUPT_NO_NEEDHAND ^ INTERRUPT_RESIST, BUSY_ICON_HOSTILE)) return if(!legcuffed || buckled) - return // time leniency for lag which also might make this whole thing pointless but the server - for(var/mob/O in viewers(src))// lags so hard that 40s isn't lenient enough - Quarxink - O.show_message(SPAN_DANGER("[src] manages to remove [legcuffed]!"), SHOW_MESSAGE_VISIBLE) - to_chat(src, SPAN_NOTICE(" We successfully remove [legcuffed].")) + return + visible_message(SPAN_DANGER("[src] manages to remove [legcuffed]!"), SPAN_NOTICE("We successfully remove [legcuffed].")) drop_inv_item_on_ground(legcuffed) /mob/living/carbon/xenomorph/IgniteMob() @@ -1053,7 +1040,7 @@ /mob/living/carbon/xenomorph/ghostize(can_reenter_corpse = TRUE, aghosted = FALSE) . = ..() - if(. && !can_reenter_corpse && stat != DEAD && !QDELETED(src) && !is_admin_level(z)) + if(. && !can_reenter_corpse && stat != DEAD && !QDELETED(src) && !should_block_game_interaction(src)) handle_ghost_message() /mob/living/carbon/xenomorph/proc/handle_ghost_message() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm index 1fb0f3a92269..68312b77936d 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm @@ -31,12 +31,6 @@ if(isobj(O)) I = O - if(istype(I, /obj/structure/window_frame)) - var/obj/structure/window_frame/WF = I - if(WF.reinforced && acid_type != /obj/effect/xenomorph/acid/strong) - to_chat(src, SPAN_WARNING("This [O.name] is too tough to be melted by our weak acid.")) - return - wait_time = I.get_applying_acid_time() if(wait_time == -1) to_chat(src, SPAN_WARNING("We cannot dissolve \the [I].")) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm index ea1c734d9482..e7f72e7e013e 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm @@ -13,7 +13,7 @@ macro_path = /datum/action/xeno_action/verb/verb_acid_lance action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 190 + xeno_cooldown = 19 SECONDS // Config var/stack_time = 10 @@ -96,7 +96,7 @@ macro_path = /datum/action/xeno_action/verb/verb_boiler_trap action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_1 - xeno_cooldown = 205 + xeno_cooldown = 20.5 SECONDS /// Config var/trap_ttl = 100 @@ -112,7 +112,7 @@ macro_path = /datum/action/xeno_action/verb/verb_acid_mine action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 55 + xeno_cooldown = 5.5 SECONDS var/empowered = FALSE @@ -127,7 +127,7 @@ macro_path = /datum/action/xeno_action/verb/verb_acid_shotgun action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_3 - xeno_cooldown = 130 + xeno_cooldown = 13 SECONDS var/ammo_type = /datum/ammo/xeno/acid_shotgun diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/carrier/carrier_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/carrier/carrier_powers.dm index 28d025869646..dae095f8630f 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/carrier/carrier_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/carrier/carrier_powers.dm @@ -10,6 +10,10 @@ /datum/action/xeno_action/onclick/set_hugger_reserve/use_ability(atom/Atom) var/mob/living/carbon/xenomorph/carrier/carrier = owner - carrier.huggers_reserved = tgui_input_number(usr, "How many facehuggers would you like to keep safe from Observers wanting to join as facehuggers?", "How many to reserve?", 0, carrier.huggers_max, carrier.huggers_reserved) + carrier.huggers_reserved = tgui_input_number(usr, + "How many facehuggers would you like to keep safe from Observers wanting to join as facehuggers?", + "How many to reserve?", + carrier.huggers_reserved, carrier.huggers_max, 0 + ) to_chat(carrier, SPAN_XENONOTICE("We reserve [carrier.huggers_reserved] facehuggers for ourself.")) return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm index 87f58df34472..4691d70321c3 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm @@ -39,7 +39,7 @@ macro_path = /datum/action/xeno_action/verb/verb_crusher_stomp action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 180 + xeno_cooldown = 18 SECONDS plasma_cost = 30 var/damage = 65 diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm index d661f2112a4d..4ac166c58c69 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm @@ -306,7 +306,7 @@ var/target = get_step(get_step(Xeno, target_dir), target_dir) var/list/collision_callbacks = list(/mob/living/carbon/human = CALLBACK(src, PROC_REF(handle_mob_collision))) var/list/end_throw_callbacks = list(CALLBACK(src, PROC_REF(on_end_throw), start_charging)) - Xeno.throw_atom(target, target_dist, SPEED_FAST, pass_flags = PASS_CRUSHER_CHARGE, end_throw_callbacks = end_throw_callbacks, collision_callbacks = collision_callbacks) + Xeno.throw_atom(target, target_dist, SPEED_FAST, launch_type = LOW_LAUNCH, pass_flags = PASS_CRUSHER_CHARGE, end_throw_callbacks = end_throw_callbacks, collision_callbacks = collision_callbacks) apply_cooldown() return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_abilities.dm index 3949e4ac9b80..22d5f4b57aa2 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_abilities.dm @@ -18,7 +18,7 @@ macro_path = /datum/action/xeno_action/verb/verb_headbutt action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 40 + xeno_cooldown = 4 SECONDS /datum/action/xeno_action/onclick/tail_sweep name = "Tail Sweep" @@ -28,7 +28,7 @@ action_type = XENO_ACTION_ACTIVATE ability_primacy = XENO_PRIMARY_ACTION_3 plasma_cost = 10 - xeno_cooldown = 110 + xeno_cooldown = 11 SECONDS /datum/action/xeno_action/activable/fortify name = "Fortify" diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm index 0cb803e67b96..ef084c9b5b59 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm @@ -85,20 +85,12 @@ var/facing = get_dir(fendy, carbone) var/headbutt_distance = 1 + (fendy.crest_defense * 2) + (fendy.fortify * 2) - var/turf/thrown_turf = get_turf(fendy) - var/turf/temp = get_turf(fendy) - - for(var/x in 0 to headbutt_distance) - temp = get_step(thrown_turf, facing) - if(!temp) - break - thrown_turf = temp // Hmm today I will kill a marine while looking away from them fendy.face_atom(carbone) fendy.animation_attack_on(carbone) fendy.flick_attack_overlay(carbone, "punch") - carbone.throw_atom(thrown_turf, headbutt_distance, SPEED_SLOW, src) + fendy.throw_carbon(carbone, facing, headbutt_distance, SPEED_SLOW, shake_camera = FALSE, immobilize = FALSE) playsound(carbone,'sound/weapons/alien_claw_block.ogg', 50, 1) apply_cooldown() return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/facehugger/facehugger_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/facehugger/facehugger_abilities.dm index 91bda707ec45..ee1fed3094a7 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/facehugger/facehugger_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/facehugger/facehugger_abilities.dm @@ -5,7 +5,7 @@ macro_path = /datum/action/xeno_action/verb/verb_pounce action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_1 - xeno_cooldown = 30 + xeno_cooldown = 3 SECONDS plasma_cost = 0 // Config options diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm index 80e4130fccb9..460a561fa801 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm @@ -424,7 +424,7 @@ action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_5 -/datum/action/xeno_action/activable/place_construction/queen_macro //so it doesn't screw other macros up +/datum/action/xeno_action/activable/place_construction/not_primary //so it doesn't screw other macros up ability_primacy = XENO_NOT_PRIMARY_ACTION /datum/action/xeno_action/activable/xeno_spit diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm index 81f500245a41..63cc4cb93431 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm @@ -433,7 +433,7 @@ pre_pounce_effects() X.pounce_distance = get_dist(X, A) - X.throw_atom(A, distance, throw_speed, X, pass_flags = pounce_pass_flags, collision_callbacks = pounce_callbacks) + X.throw_atom(A, distance, throw_speed, X, launch_type = LOW_LAUNCH, pass_flags = pounce_pass_flags, collision_callbacks = pounce_callbacks) X.update_icons() additional_effects_always() @@ -512,7 +512,7 @@ /datum/action/xeno_action/onclick/xenohide/proc/unhide_on_stat(mob/living/carbon/xenomorph/source, new_stat, old_stat) SIGNAL_HANDLER - if(new_stat >= UNCONSCIOUS && old_stat <= UNCONSCIOUS) + if(!QDELETED(source) && (new_stat >= UNCONSCIOUS && old_stat <= UNCONSCIOUS)) post_attack() /datum/action/xeno_action/onclick/place_trap/use_ability(atom/A) @@ -638,7 +638,7 @@ if(!choice) return if(choice == "help") - var/message = "Placing a construction node creates a template for special structures that can benefit the hive, which require the insertion of [MATERIAL_CRYSTAL] to construct the following:
" + var/message = "Placing a construction node creates a template for special structures that can benefit the hive, which require the insertion of plasma to construct the following:
" for(var/structure_name in X.hive.hive_structure_types) var/datum/construction_template/xenomorph/structure_type = X.hive.hive_structure_types[structure_name] message += "[capitalize_first_letters(structure_name)] - [initial(structure_type.description)]
" diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm index 2facee1edc9d..fd525701b12d 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm @@ -2,7 +2,7 @@ macro_path = /datum/action/xeno_action/verb/verb_pounce action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_1 - xeno_cooldown = 60 + xeno_cooldown = 6 SECONDS plasma_cost = 20 // Config options @@ -70,7 +70,7 @@ macro_path = /datum/action/xeno_action/verb/verb_crippling_strike ability_primacy = XENO_PRIMARY_ACTION_3 action_type = XENO_ACTION_ACTIVATE - xeno_cooldown = 100 + xeno_cooldown = 10 SECONDS plasma_cost = 20 var/buff_duration = 50 diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm index 69f869387068..4ec301a17819 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm @@ -208,7 +208,7 @@ xeno.visible_message(SPAN_XENOWARNING("\The [xeno] strikes the window with their tail!"), SPAN_XENOWARNING("We strike the window with our tail!")) apply_cooldown(cooldown_modifier = 0.5) return - if(current_structure.density) + if(current_structure.density && !current_structure.throwpass) to_chat(xeno, SPAN_WARNING("There's something blocking us from striking!")) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm index 11317bed9af1..c2fbd6b9d8c4 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm @@ -25,7 +25,7 @@ macro_path = /datum/action/xeno_action/verb/verb_dash action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 110 + xeno_cooldown = 11 SECONDS plasma_cost = 50 // Config options @@ -51,11 +51,11 @@ macro_path = /datum/action/xeno_action/verb/verb_cleave ability_primacy = XENO_PRIMARY_ACTION_3 action_type = XENO_ACTION_CLICK - xeno_cooldown = 120 + xeno_cooldown = 12 SECONDS // Root config var/root_duration_unbuffed = 1 SECONDS - var/root_duration_buffed = 2.5 SECONDS + var/root_duration_buffed = 1.8 SECONDS // Fling config var/fling_dist_unbuffed = 3 @@ -138,7 +138,7 @@ macro_path = /datum/action/xeno_action/verb/verb_oppressor_punch action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 100 + xeno_cooldown = 10 SECONDS plasma_cost = 55 // Configurables @@ -164,7 +164,7 @@ macro_path = /datum/action/xeno_action/verb/verb_crush ability_primacy = XENO_PRIMARY_ACTION_3 action_type = XENO_ACTION_CLICK - xeno_cooldown = 130 + xeno_cooldown = 13 SECONDS plasma_cost = 80 // Config @@ -180,7 +180,7 @@ macro_path = /datum/action/xeno_action/verb/verb_prae_impale ability_primacy = XENO_PRIMARY_ACTION_1 action_type = XENO_ACTION_CLICK - xeno_cooldown = 130 + xeno_cooldown = 13 SECONDS plasma_cost = 80 /datum/action/xeno_action/onclick/prae_dodge @@ -191,7 +191,7 @@ ability_primacy = XENO_PRIMARY_ACTION_2 action_type = XENO_ACTION_CLICK plasma_cost = 200 - xeno_cooldown = 190 + xeno_cooldown = 19 SECONDS // Config var/duration = 70 @@ -204,7 +204,7 @@ macro_path = /datum/action/xeno_action/verb/verb_prae_tail_trip ability_primacy = XENO_PRIMARY_ACTION_3 action_type = XENO_ACTION_CLICK - xeno_cooldown = 130 + xeno_cooldown = 13 SECONDS plasma_cost = 30 // Config @@ -224,7 +224,7 @@ macro_path = /datum/action/xeno_action/verb/verb_dash action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 100 + xeno_cooldown = 10 SECONDS plasma_cost = 40 // Config options @@ -255,7 +255,7 @@ ability_primacy = XENO_PRIMARY_ACTION_4 plasma_cost = 80 - xeno_cooldown = 100 + xeno_cooldown = 10 SECONDS // Configurable options spray_type = ACID_SPRAY_LINE @@ -270,7 +270,7 @@ /datum/action/xeno_action/activable/spray_acid/prae_warden ability_primacy = XENO_PRIMARY_ACTION_2 plasma_cost = 130 - xeno_cooldown = 130 + xeno_cooldown = 13 SECONDS // Configurable options @@ -288,7 +288,7 @@ // todo: macro action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_3 - xeno_cooldown = 100 + xeno_cooldown = 10 SECONDS plasma_cost = 100 // Config diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_abilities.dm index 4f9c5f298637..3744fb7823e8 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_abilities.dm @@ -136,7 +136,7 @@ action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 plasma_cost = 0 - xeno_cooldown = 100 + xeno_cooldown = 10 SECONDS // Config var/shard_cost = 75 @@ -150,7 +150,7 @@ action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_3 plasma_cost = 0 - xeno_cooldown = 300 + xeno_cooldown = 30 SECONDS // Config values var/shard_cost = 50 diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm index c70c3cae6cd3..5f8853a066a7 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm @@ -132,16 +132,8 @@ human.attack_alien(xeno, rand(xeno.melee_damage_lower, xeno.melee_damage_upper)) var/facing = get_dir(xeno, human) - var/turf/turf = xeno.loc - var/turf/temp = xeno.loc - - for(var/step in 0 to behavior.fling_distance-1) - temp = get_step(turf, facing) - if (!temp) - break - turf = temp - human.throw_atom(turf, behavior.fling_distance, SPEED_VERY_FAST, xeno, TRUE) + xeno.throw_carbon(human, facing, behavior.fling_distance, SPEED_VERY_FAST, shake_camera = FALSE, immobilize = TRUE) /datum/action/xeno_action/activable/scissor_cut/use_ability(atom/target_atom) var/mob/living/carbon/xenomorph/ravager_user = owner diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_abilities.dm index 510f161d8a86..2880dd15eb5a 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_abilities.dm @@ -5,7 +5,7 @@ macro_path = /datum/action/xeno_action/verb/verb_pounce action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_1 - xeno_cooldown = 30 + xeno_cooldown = 3 SECONDS plasma_cost = 0 // Config options @@ -28,7 +28,7 @@ macro_path = /datum/action/xeno_action/verb/verb_runner_bonespurs action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 110 + xeno_cooldown = 11 SECONDS plasma_cost = 0 var/ammo_type = /datum/ammo/xeno/bone_chips/spread/runner_skillshot diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm index dad3a992e404..b907a382dda1 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm @@ -77,12 +77,6 @@ if(isobj(affected_atom)) object = affected_atom - if(istype(object, /obj/structure/window_frame)) - var/obj/structure/window_frame/window_frame = object - if(window_frame.reinforced && acid_type != /obj/effect/xenomorph/acid/strong) - to_chat(src, SPAN_WARNING("This [object.name] is too tough to be melted by our weak acid.")) - return - wait_time = object.get_applying_acid_time() if(wait_time == -1) to_chat(src, SPAN_WARNING("We cannot dissolve [object].")) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_abilities.dm index abc1e43bfccd..20febc22c4a4 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_abilities.dm @@ -34,7 +34,7 @@ action_type = XENO_ACTION_CLICK plasma_cost = 50 - xeno_cooldown = 80 + xeno_cooldown = 8 SECONDS // Configurable options spray_type = ACID_SPRAY_LINE // Enum for the shape of spray to do diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_powers.dm index 1385eb1cf668..c6ba00d9a3bb 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/spitter/spitter_powers.dm @@ -23,6 +23,7 @@ zenomorf.speed_modifier -= speed_buff_amount zenomorf.armor_modifier += armor_buff_amount zenomorf.recalculate_speed() + zenomorf.recalculate_armor() /// Though the ability's other buffs are supposed to last for its duration, it's only supposed to enhance one spit. RegisterSignal(zenomorf, COMSIG_XENO_POST_SPIT, PROC_REF(disable_spatter)) @@ -50,6 +51,7 @@ zenomorf.speed_modifier += speed_buff_amount zenomorf.armor_modifier -= armor_buff_amount zenomorf.recalculate_speed() + zenomorf.recalculate_armor() to_chat(zenomorf, SPAN_XENOHIGHDANGER("We feel our movement speed slow down!")) disable_spatter() buffs_active = FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm index 2c16477c1414..4f40e1914540 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm @@ -6,7 +6,7 @@ macro_path = /datum/action/xeno_action/verb/verb_fling action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_3 - xeno_cooldown = 60 + xeno_cooldown = 6 SECONDS // Configurables var/fling_distance = 4 @@ -22,7 +22,7 @@ macro_path = /datum/action/xeno_action/verb/verb_lunge action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_2 - xeno_cooldown = 100 + xeno_cooldown = 10 SECONDS // Configurables var/grab_range = 4 @@ -36,7 +36,7 @@ macro_path = /datum/action/xeno_action/verb/verb_punch action_type = XENO_ACTION_CLICK ability_primacy = XENO_PRIMARY_ACTION_1 - xeno_cooldown = 45 + xeno_cooldown = 4.5 SECONDS // Configurables var/base_damage = 25 diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm index c25b7e5fc49f..bbb4a584e2a5 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm @@ -37,6 +37,8 @@ if (xeno.Adjacent(carbon)) xeno.start_pulling(carbon,1) + if(ishuman(carbon)) + INVOKE_ASYNC(carbon, TYPE_PROC_REF(/mob, emote), "scream") else xeno.visible_message(SPAN_XENOWARNING("[xeno]'s claws twitch."), SPAN_XENOWARNING("Our claws twitch as we lunge but are unable to grab onto our target. Wait a moment to try again.")) @@ -84,23 +86,14 @@ if(carbon.slowed < slowdown) carbon.apply_effect(slowdown, SLOW) carbon.last_damage_data = create_cause_data(initial(xeno.caste_type), xeno) - shake_camera(carbon, 2, 1) var/facing = get_dir(xeno, carbon) - var/turf/throw_turf = xeno.loc - var/turf/temp = xeno.loc - - for (var/step in 0 to fling_distance-1) - temp = get_step(throw_turf, facing) - if (!temp) - break - throw_turf = temp // Hmm today I will kill a marine while looking away from them xeno.face_atom(carbon) xeno.animation_attack_on(carbon) xeno.flick_attack_overlay(carbon, "disarm") - carbon.throw_atom(throw_turf, fling_distance, SPEED_VERY_FAST, xeno, TRUE) + xeno.throw_carbon(carbon, facing, fling_distance, SPEED_VERY_FAST, shake_camera = TRUE, immobilize = TRUE) apply_cooldown() return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm b/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm index 69a498184fa3..886ffcfe1ef2 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm @@ -9,7 +9,6 @@ max_health = XENO_HEALTH_TIER_6 plasma_gain = XENO_PLASMA_GAIN_TIER_8 plasma_max = XENO_PLASMA_TIER_6 - crystal_max = XENO_CRYSTAL_LOW xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_4 armor_deflection = XENO_ARMOR_TIER_2 evasion = XENO_EVASION_NONE diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm b/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm index cf3acb890e4d..2e106743514a 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm @@ -9,7 +9,6 @@ max_health = XENO_HEALTH_TIER_9 plasma_gain = XENO_PLASMA_GAIN_TIER_6 plasma_max = XENO_PLASMA_TIER_5 - crystal_max = XENO_CRYSTAL_LOW xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_2 armor_deflection = XENO_NO_ARMOR evasion = XENO_EVASION_NONE diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm b/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm index 64dfd021f894..d2c0b0e40e59 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm @@ -81,21 +81,21 @@ //Barricade collision else if (istype(target, /obj/structure/barricade)) var/obj/structure/barricade/B = target - visible_message(SPAN_DANGER("[src] rams into [B] and skids to a halt!"), SPAN_XENOWARNING("You ram into [B] and skid to a halt!")) + visible_message(SPAN_DANGER("[src] rams into [B] and skids to a halt!"), SPAN_XENOWARNING("We ram into [B] and skid to a halt!")) B.Collided(src) . = FALSE else if (istype(target, /obj/vehicle/multitile)) var/obj/vehicle/multitile/M = target - visible_message(SPAN_DANGER("[src] rams into [M] and skids to a halt!"), SPAN_XENOWARNING("You ram into [M] and skid to a halt!")) + visible_message(SPAN_DANGER("[src] rams into [M] and skids to a halt!"), SPAN_XENOWARNING("We ram into [M] and skid to a halt!")) M.Collided(src) . = FALSE else if (istype(target, /obj/structure/machinery/m56d_hmg)) var/obj/structure/machinery/m56d_hmg/HMG = target - visible_message(SPAN_DANGER("[src] rams [HMG]!"), SPAN_XENODANGER("You ram [HMG]!")) + visible_message(SPAN_DANGER("[src] rams [HMG]!"), SPAN_XENODANGER("We ram [HMG]!")) playsound(loc, "punch", 25, 1) HMG.CrusherImpact() . = FALSE @@ -132,7 +132,7 @@ else if (istype(target, /obj/structure/machinery/defenses)) var/obj/structure/machinery/defenses/DF = target - visible_message(SPAN_DANGER("[src] rams [DF]!"), SPAN_XENODANGER("You ram [DF]!")) + visible_message(SPAN_DANGER("[src] rams [DF]!"), SPAN_XENODANGER("We ram [DF]!")) if (!DF.unacidable) playsound(loc, "punch", 25, 1) @@ -148,7 +148,7 @@ if (V.unslashable) . = FALSE else - visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("You smash straight into [V]!")) + visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("We smash straight into [V]!")) playsound(loc, "punch", 25, 1) V.tip_over() @@ -165,7 +165,7 @@ if (V.unslashable) . = FALSE else - visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("You smash straight into [V]!")) + visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("We smash straight into [V]!")) playsound(loc, "punch", 25, 1) V.tip_over() @@ -184,7 +184,7 @@ if (O.unacidable) . = FALSE else if (O.anchored) - visible_message(SPAN_DANGER("[src] crushes [O]!"), SPAN_XENODANGER("You crush [O]!")) + visible_message(SPAN_DANGER("[src] crushes [O]!"), SPAN_XENODANGER("We crush [O]!")) if(O.contents.len) //Hopefully won't auto-delete things inside crushed stuff. var/turf/T = get_turf(src) for(var/atom/movable/S in T.contents) S.forceMove(T) @@ -195,7 +195,7 @@ else if(O.buckled_mob) O.unbuckle() - visible_message(SPAN_WARNING("[src] knocks [O] aside!"), SPAN_XENOWARNING("You knock [O] aside.")) //Canisters, crates etc. go flying. + visible_message(SPAN_WARNING("[src] knocks [O] aside!"), SPAN_XENOWARNING("We knock [O] aside.")) //Canisters, crates etc. go flying. playsound(loc, "punch", 25, 1) var/impact_range = 2 diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Drone.dm b/code/modules/mob/living/carbon/xenomorph/castes/Drone.dm index 77992b33a52b..c4c9b11b37e4 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Drone.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Drone.dm @@ -7,7 +7,6 @@ max_health = XENO_HEALTH_TIER_6 plasma_gain = XENO_PLASMA_GAIN_TIER_8 plasma_max = XENO_PLASMA_TIER_10 - crystal_max = XENO_CRYSTAL_LOW xeno_explosion_resistance = XENO_NO_EXPLOSIVE_ARMOR armor_deflection = XENO_NO_ARMOR evasion = XENO_EVASION_MEDIUM @@ -74,7 +73,11 @@ icon_xeno = 'icons/mob/xenos/drone.dmi' icon_xenonid = 'icons/mob/xenonids/drone.dmi' - weed_food_icon = 'icons/mob/xenos/weeds_48x48.dmi' weed_food_states = list("Drone_1","Drone_2","Drone_3") weed_food_states_flipped = list("Drone_1","Drone_2","Drone_3") + +/mob/living/carbon/xenomorph/drone/tutorial + +/mob/living/carbon/xenomorph/drone/tutorial/gib(datum/cause_data/cause = create_cause_data("gibbing", src)) + death(cause, 1) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm b/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm index 9c062bf779fd..b00ec2a9c1eb 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm @@ -8,7 +8,6 @@ max_health = XENO_HEALTH_TIER_7 plasma_gain = XENO_PLASMA_GAIN_TIER_10 plasma_max = XENO_PLASMA_TIER_10 - crystal_max = XENO_CRYSTAL_HIGH xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_1 armor_deflection = XENO_NO_ARMOR evasion = XENO_EVASION_NONE diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm index fb61996f2f12..6d082b327b48 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm @@ -12,7 +12,6 @@ max_health = XENO_HEALTH_QUEEN plasma_gain = XENO_PLASMA_GAIN_TIER_7 plasma_max = XENO_PLASMA_TIER_10 - crystal_max = XENO_CRYSTAL_MEDIUM xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_10 armor_deflection = XENO_ARMOR_TIER_2 evasion = XENO_EVASION_NONE @@ -59,7 +58,7 @@ if(hive.living_xeno_queen.hivenumber == hive.hivenumber) continue for(var/mob/living/carbon/xenomorph/queen/Q in GLOB.living_xeno_list) - if(Q.hivenumber == hive.hivenumber && !is_admin_level(Q.z)) + if(Q.hivenumber == hive.hivenumber && !should_block_game_interaction(Q)) hive.living_xeno_queen = Q xeno_message(SPAN_XENOANNOUNCE("A new Queen has risen to lead the Hive! Rejoice!"),3,hive.hivenumber) continue outer_loop @@ -103,6 +102,7 @@ COMSIG_XENO_STOP_OVERWATCH, COMSIG_XENO_STOP_OVERWATCH_XENO ), PROC_REF(stop_watching)) + RegisterSignal(Q, COMSIG_MOB_REAL_NAME_CHANGED, PROC_REF(on_name_changed)) RegisterSignal(src, COMSIG_MOVABLE_TURF_ENTER, PROC_REF(turf_weed_only)) // Default color @@ -158,6 +158,10 @@ X.reset_view() return +/mob/hologram/queen/proc/on_name_changed(mob/parent, old_name, new_name) + SIGNAL_HANDLER + name = "[initial(src.name)] ([new_name])" + /mob/hologram/queen/proc/turf_weed_only(mob/self, turf/crossing_turf) SIGNAL_HANDLER @@ -264,8 +268,6 @@ drag_delay = 6 //pulling a big dead xeno is hard tier = 0 //Queen doesn't count towards population limit. hive_pos = XENO_QUEEN - crystal_max = XENO_CRYSTAL_MEDIUM - crystal_stored = XENO_CRYSTAL_MEDIUM small_explosives_stun = FALSE pull_speed = 3 //screech/neurodragging is cancer, at the very absolute least get some runner to do it for teamwork @@ -292,7 +294,7 @@ /datum/action/xeno_action/onclick/regurgitate, /datum/action/xeno_action/watch_xeno, /datum/action/xeno_action/activable/tail_stab, - /datum/action/xeno_action/activable/place_construction/queen_macro, //normally fifth macro but not as important for queen + /datum/action/xeno_action/activable/place_construction/not_primary, //normally fifth macro but not as important for queen /datum/action/xeno_action/activable/corrosive_acid, /datum/action/xeno_action/onclick/emit_pheromones, /datum/action/xeno_action/onclick/queen_word, @@ -325,7 +327,7 @@ /datum/action/xeno_action/onclick/regurgitate, /datum/action/xeno_action/watch_xeno, /datum/action/xeno_action/activable/tail_stab, - /datum/action/xeno_action/activable/place_construction/queen_macro, //normally fifth macro but not as important for queen + /datum/action/xeno_action/activable/place_construction/not_primary, //normally fifth macro but not as important for queen /datum/action/xeno_action/activable/corrosive_acid, /datum/action/xeno_action/onclick/emit_pheromones, /datum/action/xeno_action/onclick/queen_word, @@ -394,7 +396,7 @@ /mob/living/carbon/xenomorph/queen/Initialize() . = ..() SStracking.set_leader("hive_[hivenumber]", src) - if(!is_admin_level(z))//so admins can safely spawn Queens in Thunderdome for tests. + if(!should_block_game_interaction(src))//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) @@ -500,7 +502,7 @@ if(hive && hive.living_xeno_queen == src) var/mob/living/carbon/xenomorph/queen/next_queen = null for(var/mob/living/carbon/xenomorph/queen/queen in hive.totalXenos) - if(!is_admin_level(queen.z) && queen != src && !QDELETED(queen)) + if(!should_block_game_interaction(queen) && queen != src && !QDELETED(queen)) next_queen = queen break hive.set_living_xeno_queen(next_queen) // either null or a queen @@ -792,13 +794,24 @@ return TRUE /mob/living/carbon/xenomorph/queen/death(cause, gibbed) - if(hive.living_xeno_queen == src) + if(src == hive?.living_xeno_queen) hive.xeno_queen_timer = world.time + XENO_QUEEN_DEATH_DELAY - hive.banished_ckeys = list() // Reset the banished ckey list + + // Reset the banished ckey list + if(length(hive.banished_ckeys)) + for(var/mob/living/carbon/xenomorph/target_xeno in hive.totalXenos) + if(!target_xeno.ckey) + continue + for(var/mob_name in hive.banished_ckeys) + if(target_xeno.ckey == hive.banished_ckeys[mob_name]) + target_xeno.banished = FALSE + target_xeno.hud_update_banished() + target_xeno.lock_evolve = FALSE + hive.banished_ckeys = list() + icon = queen_standing_icon return ..() - /mob/living/carbon/xenomorph/queen/proc/mount_ovipositor() if(ovipositor) return //sanity check @@ -820,7 +833,7 @@ // These already have their placement locked in: /datum/action/xeno_action/onclick/regurgitate, /datum/action/xeno_action/watch_xeno, - /datum/action/xeno_action/activable/place_construction/queen_macro, + /datum/action/xeno_action/activable/place_construction/not_primary, /datum/action/xeno_action/onclick/emit_pheromones, /datum/action/xeno_action/onclick/queen_word, /datum/action/xeno_action/onclick/psychic_whisper, diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm b/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm index e4f1d183f601..6d19a1b8feec 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm @@ -110,5 +110,5 @@ if (rav_shield && ((rav_shield.last_damage_taken + shield_decay_time) < world.time)) QDEL_NULL(rav_shield) - to_chat(bound_xeno, SPAN_XENODANGER("You feel your shield decay!")) + to_chat(bound_xeno, SPAN_XENODANGER("We feel our shield decay!")) bound_xeno.overlay_shields() diff --git a/code/modules/mob/living/carbon/xenomorph/castes/caste_datum.dm b/code/modules/mob/living/carbon/xenomorph/castes/caste_datum.dm index 63d6146afb14..cfaedf013a44 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/caste_datum.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/caste_datum.dm @@ -16,8 +16,6 @@ var/plasma_max = 10 var/plasma_gain = 5 - var/crystal_max = 0 - var/max_health = XENO_UNIVERSAL_HPMULT * 100 ///Are they allowed to evolve (and have their evolution progress group) var/evolution_allowed = 1 diff --git a/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm b/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm index 8a1908efb230..f050a0dcfe8a 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm @@ -7,7 +7,6 @@ max_health = XENO_HEALTH_LESSER_DRONE plasma_gain = XENO_PLASMA_GAIN_TIER_7 plasma_max = XENO_PLASMA_TIER_3 - crystal_max = XENO_CRYSTAL_LOW xeno_explosion_resistance = XENO_NO_EXPLOSIVE_ARMOR armor_deflection = XENO_NO_ARMOR evasion = XENO_EVASION_LOW diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index e372b03e68d9..624c9df25f3e 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -313,4 +313,4 @@ fire.set_on_fire(src) //Deals an extra proc of fire when you're crossing it. 30 damage per tile crossed, plus 15 per Process(). next_move_slowdown = next_move_slowdown + (SLOWDOWN_AMT_GREENFIRE * resist_modifier) if(resist_modifier > 0) - to_chat(src, SPAN_DANGER("You feel pieces of your exoskeleton fusing with the viscous fluid below and tearing off as you struggle to move through the flames!")) + to_chat(src, SPAN_DANGER("We feel pieces of our exoskeleton fusing with the viscous fluid below and tearing off as we struggle to move through the flames!")) diff --git a/code/modules/mob/living/carbon/xenomorph/death.dm b/code/modules/mob/living/carbon/xenomorph/death.dm index ea1e674a1faf..503ca11a7631 100644 --- a/code/modules/mob/living/carbon/xenomorph/death.dm +++ b/code/modules/mob/living/carbon/xenomorph/death.dm @@ -26,7 +26,7 @@ hud_used.alien_plasma_display.icon_state = "power_display_empty" update_icons() - if(!is_admin_level(z)) //so xeno players don't get death messages from admin tests + if(!should_block_game_interaction(src)) //so xeno players don't get death messages from admin tests if(isqueen(src)) var/mob/living/carbon/xenomorph/queen/XQ = src playsound(loc, 'sound/voice/alien_queen_died.ogg', 75, 0) diff --git a/code/modules/mob/living/carbon/xenomorph/egg_item.dm b/code/modules/mob/living/carbon/xenomorph/egg_item.dm index e4cc7bd39fe0..6f00ae1798e9 100644 --- a/code/modules/mob/living/carbon/xenomorph/egg_item.dm +++ b/code/modules/mob/living/carbon/xenomorph/egg_item.dm @@ -25,6 +25,17 @@ set_hive_data(src, hivenumber) . = ..() + if(hivenumber == XENO_HIVE_NORMAL) + RegisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING, PROC_REF(forsaken_handling)) + +/obj/item/xeno_egg/proc/forsaken_handling() + SIGNAL_HANDLER + if(is_ground_level(z)) + hivenumber = XENO_HIVE_FORSAKEN + set_hive_data(src, XENO_HIVE_FORSAKEN) + + UnregisterSignal(SSdcs, COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + /obj/item/xeno_egg/get_examine_text(mob/user) . = ..() if(isxeno(user)) diff --git a/code/modules/mob/living/carbon/xenomorph/hive_status.dm b/code/modules/mob/living/carbon/xenomorph/hive_status.dm index c7326937c4cd..3c8eb51a8155 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_status.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_status.dm @@ -45,7 +45,6 @@ var/isSlotOpen = TRUE //Set true for starting alerts only after the hive has reached its full potential var/allowed_nest_distance = 15 //How far away do we allow nests from an ovied Queen. Default 15 tiles. var/obj/effect/alien/resin/special/pylon/core/hive_location = null //Set to ref every time a core is built, for defining the hive location - var/crystal_stored = 0 //How much stockpiled material is stored for the hive to use. var/datum/mutator_set/hive_mutators/mutators = new var/tier_slot_multiplier = 1 @@ -207,7 +206,7 @@ // Can only have one queen. if(isqueen(X)) - if(!living_xeno_queen && !is_admin_level(X.z)) // Don't consider xenos in admin level + if(!living_xeno_queen && !should_block_game_interaction(X)) // Don't consider xenos in admin level set_living_xeno_queen(X) X.hivenumber = hivenumber @@ -219,7 +218,7 @@ X.hud_update() var/area/A = get_area(X) - if(!is_admin_level(X.z) || (A.flags_atom & AREA_ALLOW_XENO_JOIN)) + if(!should_block_game_interaction(X) || (A.flags_atom & AREA_ALLOW_XENO_JOIN)) totalXenos += X if(X.tier == 2) tier_2_xenos += X @@ -242,7 +241,7 @@ if(living_xeno_queen == xeno) var/mob/living/carbon/xenomorph/queen/next_queen = null for(var/mob/living/carbon/xenomorph/queen/queen in totalXenos) - if(!is_admin_level(queen.z) && queen != src && !QDELETED(queen)) + if(!should_block_game_interaction(queen) && queen != src && !QDELETED(queen)) next_queen = queen break @@ -265,7 +264,7 @@ tier_3_xenos -= xeno // Only handle free slots if the xeno is not in tdome - if(!is_admin_level(xeno.z)) + if(!should_block_game_interaction(xeno)) var/selected_caste = GLOB.xeno_datum_list[xeno.caste_type]?.type if(used_slots[selected_caste]) used_slots[selected_caste]-- @@ -409,7 +408,7 @@ for(var/mob/living/carbon/xenomorph/X in totalXenos) //don't show xenos in the thunderdome when admins test stuff. - if(is_admin_level(X.z)) + if(should_block_game_interaction(X)) var/area/A = get_area(X) if(!(A.flags_atom & AREA_ALLOW_XENO_JOIN)) continue @@ -423,28 +422,27 @@ // The idea is that we sort this list, and use it as a "key" for all the other information (especially the nicknumber) // in the hive status UI. That way we can minimize the amount of sorts performed by only calling this when xenos are created/disposed /datum/hive_status/proc/get_xeno_keys() - var/list/xenos[totalXenos.len] + var/list/xenos = list() - var/index = 1 - var/useless_slots = 0 for(var/mob/living/carbon/xenomorph/X in totalXenos) - if(is_admin_level(X.z)) + if(should_block_game_interaction(X)) var/area/A = get_area(X) if(!(A.flags_atom & AREA_ALLOW_XENO_JOIN)) - useless_slots++ continue - // Insert without doing list merging - xenos[index++] = list( + if(!(X in GLOB.living_xeno_list)) + continue + + // This looks weird, but in DM adding List A to List B actually adds each item in List B to List A, not List B itself. + // Having a nested list like this sort of tricks it into adding the list instead. + // In this case this results in an array of different 'xeno' dictionaries, rather than just a dictionary. + xenos += list(list( "nicknumber" = X.nicknumber, "tier" = X.tier, // This one is only important for sorting "is_leader" = (IS_XENO_LEADER(X)), "is_queen" = istype(X.caste, /datum/caste_datum/queen), "caste_type" = X.caste_type - ) - - // Clear nulls from the xenos list - xenos.len -= useless_slots + )) // Make it all nice and fancy by sorting the list before returning it var/list/sorted_keys = sort_xeno_keys(xenos) @@ -510,7 +508,7 @@ var/list/xenos = list() for(var/mob/living/carbon/xenomorph/X in totalXenos) - if(is_admin_level(X.z)) + if(should_block_game_interaction(X)) var/area/A = get_area(X) if(!(A.flags_atom & AREA_ALLOW_XENO_JOIN)) continue @@ -541,7 +539,7 @@ var/list/xenos = list() for(var/mob/living/carbon/xenomorph/X in totalXenos) - if(is_admin_level(X.z)) + if(should_block_game_interaction(X)) var/area/A = get_area(X) if(!(A.flags_atom & AREA_ALLOW_XENO_JOIN)) continue @@ -1225,10 +1223,10 @@ if(!target_hive.living_xeno_queen && !target_hive.allow_no_queen_actions) return if(allies[faction]) - xeno_message(SPAN_XENOANNOUNCE("You sense that [name] [living_xeno_queen ? "Queen " : ""]set up an alliance with us!"), 3, target_hive.hivenumber) + xeno_message(SPAN_XENOANNOUNCE("We sense that [name] [living_xeno_queen ? "Queen " : ""]set up an alliance with us!"), 3, target_hive.hivenumber) return - xeno_message(SPAN_XENOANNOUNCE("You sense that [name] [living_xeno_queen ? "Queen " : ""]broke the alliance with us!"), 3, target_hive.hivenumber) + xeno_message(SPAN_XENOANNOUNCE("We sense that [name] [living_xeno_queen ? "Queen " : ""]broke the alliance with us!"), 3, target_hive.hivenumber) if(target_hive.allies[name]) //autobreak alliance on betrayal target_hive.change_stance(name, FALSE) @@ -1255,14 +1253,14 @@ /datum/hive_status/corrupted/proc/give_defection_choice(mob/living/carbon/xenomorph/xeno, faction) if(tgui_alert(xeno, "Your Queen has broken the alliance with the [faction]. The device inside your carapace begins to suppress your connection with the Hive. Do you remove it and stay loyal to her?", "Alliance broken!", list("Stay loyal", "Obey the talls"), 10 SECONDS) == "Obey the talls") if(!xeno.iff_tag) - to_chat(xeno, SPAN_XENOWARNING("It's too late now. The device is gone and your service to the Queen continues.")) + to_chat(xeno, SPAN_XENOWARNING("It's too late now. The device is gone and our service to the Queen continues.")) return defectors += xeno xeno.set_hive_and_update(XENO_HIVE_RENEGADE) to_chat(xeno, SPAN_XENOANNOUNCE("You lost the connection with your Hive. Now you have no Queen, only your masters.")) - to_chat(xeno, SPAN_NOTICE("Your instincts have changed, you seem compelled to protect [english_list(xeno.iff_tag.faction_groups, "no one")].")) + to_chat(xeno, SPAN_NOTICE("Our instincts have changed, we seem compelled to protect [english_list(xeno.iff_tag.faction_groups, "no one")].")) return - xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("You rip out [xeno.iff_tag]! For the Hive!")) + xeno.visible_message(SPAN_XENOWARNING("[xeno] rips out [xeno.iff_tag]!"), SPAN_XENOWARNING("We rip out [xeno.iff_tag]! For the Hive!")) xeno.adjustBruteLoss(50) xeno.iff_tag.forceMove(get_turf(xeno)) xeno.iff_tag = null diff --git a/code/modules/mob/living/carbon/xenomorph/hive_status_ui.dm b/code/modules/mob/living/carbon/xenomorph/hive_status_ui.dm index 4fe1be51bfff..4e71b9a2202f 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_status_ui.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_status_ui.dm @@ -123,6 +123,10 @@ if(isobserver(user)) return UI_INTERACTIVE + // If the Queen died or is otherwise missing. + if(!assoc_hive.living_xeno_queen) + return UI_CLOSE + /datum/hive_status_ui/ui_data(mob/user) . = list() .["total_xenos"] = total_xenos @@ -131,7 +135,9 @@ .["xeno_keys"] = xeno_keys .["xeno_info"] = xeno_info .["xeno_vitals"] = xeno_vitals - .["queen_location"] = get_area_name(assoc_hive.living_xeno_queen) + .["queen_location"] = null + if(assoc_hive.living_xeno_queen) + .["queen_location"] = get_area_name(assoc_hive.living_xeno_queen) .["hive_location"] = hive_location .["burrowed_larva"] = burrowed_larva .["evilution_level"] = evilution_level @@ -175,7 +181,7 @@ var/mob/living/carbon/xenomorph/xenoTarget = locate(params["target_ref"]) in GLOB.living_xeno_list var/mob/living/carbon/xenomorph/xenoSrc = ui.user - if(QDELETED(xenoTarget) || xenoTarget.stat == DEAD || is_admin_level(xenoTarget.z)) + if(QDELETED(xenoTarget) || xenoTarget.stat == DEAD || should_block_game_interaction(xenoTarget)) return if(xenoSrc.stat == DEAD) @@ -188,7 +194,7 @@ var/mob/living/carbon/xenomorph/xenoTarget = locate(params["target_ref"]) in GLOB.living_xeno_list var/mob/living/carbon/xenomorph/xenoSrc = ui.user - if(QDELETED(xenoTarget) || xenoTarget.stat == DEAD || is_admin_level(xenoTarget.z)) + if(QDELETED(xenoTarget) || xenoTarget.stat == DEAD || should_block_game_interaction(xenoTarget)) return if(xenoSrc.stat == DEAD) @@ -201,7 +207,7 @@ var/mob/living/carbon/xenomorph/xenoTarget = locate(params["target_ref"]) in GLOB.living_xeno_list var/mob/living/carbon/xenomorph/xenoSrc = ui.user - if(QDELETED(xenoTarget) || xenoTarget.stat == DEAD || is_admin_level(xenoTarget.z)) + if(QDELETED(xenoTarget) || xenoTarget.stat == DEAD || should_block_game_interaction(xenoTarget)) return if(xenoSrc.stat == DEAD) diff --git a/code/modules/mob/living/carbon/xenomorph/mark_menu.dm b/code/modules/mob/living/carbon/xenomorph/mark_menu.dm index 5f7c1f8bc8c8..dd63f8a4fa70 100644 --- a/code/modules/mob/living/carbon/xenomorph/mark_menu.dm +++ b/code/modules/mob/living/carbon/xenomorph/mark_menu.dm @@ -180,7 +180,7 @@ var/list/possible_xenos = list() possible_xenos |= FunkTownOhyea for(var/mob/living/carbon/xenomorph/T in GLOB.living_xeno_list) - if (T != X && !is_admin_level(T.z) && X.hivenumber == T.hivenumber) + if (T != X && !should_block_game_interaction(T) && X.hivenumber == T.hivenumber) possible_xenos += T var/mob/living/carbon/xenomorph/selected_xeno = tgui_input_list(X, "Target", "Watch which xenomorph?", possible_xenos, theme="hive_status") @@ -195,7 +195,7 @@ . = TRUE update_all_data() return - if (!selected_xeno || QDELETED(selected_xeno) || selected_xeno.stat == DEAD || is_admin_level(selected_xeno.z) || !X.check_state(1)) + if (!selected_xeno || QDELETED(selected_xeno) || selected_xeno.stat == DEAD || should_block_game_interaction(selected_xeno) || !X.check_state(1)) return else selected_xeno.stop_tracking_resin_mark(FALSE, TRUE) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm index 3b321ca259c9..10cbc29f51b0 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm @@ -102,7 +102,7 @@ plasma_use_per_tick = 15 action_start_message = "You start forming eggs." - action_end_message = "You don't have enough plasma to support forming eggs." + action_end_message = "We don't have enough plasma to support forming eggs." var/egg_generation_progress = 0 ability_primacy = XENO_PRIMARY_ACTION_3 diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm index 9015c0bc84ad..86f50b47e080 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm @@ -9,11 +9,16 @@ /datum/action/xeno_action/activable/secrete_resin, /datum/action/xeno_action/onclick/choose_resin, /datum/action/xeno_action/activable/transfer_plasma, + /datum/action/xeno_action/activable/place_construction, // so it doesn't use fifth macro + /datum/action/xeno_action/onclick/plant_weeds, // so it doesn't break order ) mutator_actions_to_add = list( + /datum/action/xeno_action/activable/place_construction/not_primary, // so it doesn't use fifth macro + /datum/action/xeno_action/onclick/plant_weeds, // so it doesn't break order /datum/action/xeno_action/onclick/plant_resin_fruit, // Second macro. Resin fruits belong to Gardener, but Healer has a minor variant. /datum/action/xeno_action/activable/apply_salve, //Third macro, heal over time ability. /datum/action/xeno_action/activable/transfer_plasma/healer, //Fourth macro, an improved plasma transfer. + /datum/action/xeno_action/activable/healer_sacrifice, //Fifth macro, the ultimate ability to sacrifice yourself ) keystone = TRUE behavior_delegate_type = /datum/behavior_delegate/drone_healer @@ -137,8 +142,10 @@ to_chat(target_xeno, SPAN_XENOWARNING("[src] covers our wounds with a regenerative resin salve. We feel reinvigorated!")) to_chat(src, SPAN_XENOWARNING("We regurgitate our vital fluids and some plasma to create a regenerative resin salve and apply it to [target_xeno]'s wounds. We feel weakened...")) playsound(src, "alien_drool", 25) - var/datum/behavior_delegate/drone_healer/healer_delegate = src.behavior_delegate + var/datum/behavior_delegate/drone_healer/healer_delegate = behavior_delegate healer_delegate.salve_applied_recently = TRUE + if(target_xeno.mutation_type != DRONE_HEALER && !isfacehugger(target_xeno)) // no cheap grinding + healer_delegate.modify_transferred(amount * damage_taken_mod) update_icons() addtimer(CALLBACK(healer_delegate, /datum/behavior_delegate/drone_healer/proc/un_salve), 10 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE) @@ -148,6 +155,9 @@ var/salve_applied_recently = FALSE var/mutable_appearance/salve_applied_icon + var/transferred_amount = 0 + var/required_transferred_amount = 7500 + /datum/behavior_delegate/drone_healer/on_update_icons() if(!salve_applied_icon) salve_applied_icon = mutable_appearance('icons/mob/xenos/drone_strain_overlays.dmi',"Healer Drone Walking") @@ -173,3 +183,122 @@ /datum/behavior_delegate/drone_healer/proc/un_salve() salve_applied_recently = FALSE bound_xeno.update_icons() + +/* + SACRIFICE +*/ + +/datum/behavior_delegate/drone_healer/proc/modify_transferred(amount) + transferred_amount += amount + +/datum/behavior_delegate/drone_healer/append_to_stat() + . = list() + . += "Transferred health amount: [transferred_amount]/[required_transferred_amount]" + if(transferred_amount >= required_transferred_amount) + . += "Sacrifice will grant you new life." + +/datum/behavior_delegate/drone_healer/on_life() + if(!bound_xeno) + return + if(bound_xeno.stat == DEAD) + return + var/image/holder = bound_xeno.hud_list[PLASMA_HUD] + holder.overlays.Cut() + var/percentage_transferred = min(round((transferred_amount / required_transferred_amount) * 100, 10), 100) + if(percentage_transferred) + holder.overlays += image('icons/mob/hud/hud.dmi', "xenoenergy[percentage_transferred]") + +/datum/behavior_delegate/drone_healer/handle_death(mob/M) + var/image/holder = bound_xeno.hud_list[PLASMA_HUD] + holder.overlays.Cut() + +/datum/action/xeno_action/activable/healer_sacrifice + name = "Sacrifice" + action_icon_state = "screech" + ability_name = "sacrifice" + var/max_range = 1 + var/transfer_mod = 0.75 // only transfers 75% of current healer's health + macro_path = /datum/action/xeno_action/verb/verb_healer_sacrifice + action_type = XENO_ACTION_CLICK + ability_primacy = XENO_PRIMARY_ACTION_5 + +/datum/action/xeno_action/verb/verb_healer_sacrifice() + set category = "Alien" + set name = "Sacrifice" + set hidden = TRUE + var/action_name = "Sacrifice" + handle_xeno_macro(src, action_name) + +/datum/action/xeno_action/activable/healer_sacrifice/use_ability(atom/atom) + var/mob/living/carbon/xenomorph/xeno = owner + var/mob/living/carbon/xenomorph/target = atom + + if(!istype(target)) + return + + if(target == xeno) + to_chat(xeno, "We can't heal ourself!") + return + + if(isfacehugger(target) || islesserdrone(target)) + to_chat(xeno, "It would be a waste...") + return + + if(!xeno.check_state()) + return + + if(!xeno.can_not_harm(target)) //so we can heal only allies + to_chat(xeno, SPAN_WARNING("[target] is an enemy of our hive!")) + return + + if(target.stat == DEAD) + to_chat(xeno, SPAN_WARNING("[target] is already dead!")) + return + + if(target.health >= target.maxHealth) + to_chat(xeno, SPAN_WARNING("[target] is already at max health!")) + return + + if(!isturf(xeno.loc)) + to_chat(xeno, SPAN_WARNING("We cannot transfer health from here!")) + return + + if(get_dist(xeno, target) > max_range) + to_chat(xeno, SPAN_WARNING("We need to be closer to [target].")) + return + + xeno.say(";MY LIFE FOR THE QUEEN!!!") + + target.gain_health(xeno.health * transfer_mod) + target.updatehealth() + + target.xeno_jitter(1 SECONDS) + target.flick_heal_overlay(3 SECONDS, "#44253d") + + target.visible_message(SPAN_XENONOTICE("[xeno] explodes in a deluge of regenerative resin salve, covering [target] in it!")) + xeno_message(SPAN_XENOANNOUNCE("[xeno] sacrifices itself to heal [target]!"), 2, target.hive.hivenumber) + + var/datum/behavior_delegate/drone_healer/behavior_delegate = xeno.behavior_delegate + if(istype(behavior_delegate) && behavior_delegate.transferred_amount >= behavior_delegate.required_transferred_amount && xeno.client && xeno.hive) + var/datum/hive_status/hive_status = xeno.hive + var/turf/spawning_turf = get_turf(xeno) + if(!hive_status.hive_location) + addtimer(CALLBACK(xeno.hive, TYPE_PROC_REF(/datum/hive_status, respawn_on_turf), xeno.client, spawning_turf), 0.5 SECONDS) + else + addtimer(CALLBACK(xeno.hive, TYPE_PROC_REF(/datum/hive_status, free_respawn), xeno.client), 5 SECONDS) + + xeno.gib(create_cause_data("sacrificing itself", src)) + +/datum/action/xeno_action/activable/healer_sacrifice/action_activate() + ..() + var/mob/living/carbon/xenomorph/xeno = owner + if(xeno.selected_ability != src) + return + var/datum/behavior_delegate/drone_healer/behavior_delegate = xeno.behavior_delegate + if(!istype(behavior_delegate)) + return + if(behavior_delegate.transferred_amount < behavior_delegate.required_transferred_amount) + to_chat(xeno, SPAN_HIGHDANGER("Warning: [name] is a last measure skill. Using it will kill us.")) + else + to_chat(xeno, SPAN_HIGHDANGER("Warning: [name] is a last measure skill. Using it will kill us, but new life will be granted for our hard work for the hive.")) + diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm index 3200fd0da4a1..3653209b78f2 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm @@ -90,9 +90,9 @@ var/obj/structure/mineral_door/resin/resin_door = target_atom resin_door.TryToSwitchState(owner) if(resin_door.state) - to_chat(owner, SPAN_XENONOTICE("You focus your connection to the resin and remotely close the resin door.")) + to_chat(owner, SPAN_XENONOTICE("We focus our connection to the resin and remotely close the resin door.")) else - to_chat(owner, SPAN_XENONOTICE("You focus your connection to the resin and remotely open the resin door.")) + to_chat(owner, SPAN_XENONOTICE("We focus our connection to the resin and remotely open the resin door.")) return // since actions are instanced per hivelord, and only one construction can be made at a time, tweaking the datum on the fly here is fine. you're going to have to figure something out if these conditions change, though @@ -111,7 +111,7 @@ var/datum/resin_construction/resing_construction = GLOB.resin_constructions_list[hivelord.selected_resin] target_turf.visible_message(SPAN_XENONOTICE("The weeds begin pulsating wildly and secrete resin in the shape of \a [resing_construction.construction_name]!"), null, 5) - to_chat(owner, SPAN_XENONOTICE("You focus your plasma into the weeds below you and force the weeds to secrete resin in the shape of \a [resing_construction.construction_name].")) + to_chat(owner, SPAN_XENONOTICE("We focus our plasma into the weeds below us and force the weeds to secrete resin in the shape of \a [resing_construction.construction_name].")) playsound(target_turf, "alien_resin_build", 25) return TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/vanguard.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/vanguard.dm index 8e6fbd203805..d5ca8c4d6aad 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/vanguard.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/vanguard.dm @@ -98,7 +98,7 @@ bound_xeno.explosivearmor_modifier += 1.5*XENO_EXPOSIVEARMOR_MOD_VERY_LARGE bound_xeno.recalculate_armor() new_shield.explosive_armor_amount = 1.5*XENO_EXPOSIVEARMOR_MOD_VERY_LARGE - to_chat(praetorian, SPAN_XENOHIGHDANGER("You feel your defensive shell regenerate! It will block one hit!")) + to_chat(praetorian, SPAN_XENOHIGHDANGER("We feel our defensive shell regenerate! It will block one hit!")) var/datum/action/xeno_action/activable/cleave/caction = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/activable/cleave) if (istype(caction)) diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm index 7b048bdf2f58..65795634a27c 100644 --- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm +++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm @@ -90,7 +90,6 @@ update_inv_r_hand() update_inv_l_hand() update_inv_back() - update_inv_resource() update_icons() /* CRUTCH ZONE - Update icons when relevant status happen - Ideally do this properly and for everything, then kill update_icons() someday */ @@ -191,12 +190,6 @@ if(dir == NORTH && (back.flags_item & ITEM_OVERRIDE_NORTHFACE)) backpack_icon_holder.layer = -X_BACK_FRONT_LAYER -/mob/living/carbon/xenomorph/proc/update_inv_resource() - remove_overlay(X_RESOURCE_LAYER) - if(crystal_stored) - overlays_standing[X_RESOURCE_LAYER] = image("icon" = icon, "icon_state" = "[caste_type]_resources", "layer" =-X_RESOURCE_LAYER) - apply_overlay(X_RESOURCE_LAYER) - /mob/living/carbon/xenomorph/update_inv_legcuffed() remove_overlay(X_LEGCUFF_LAYER) if(legcuffed) @@ -308,7 +301,6 @@ return var/health_threshold - wound_icon_holder.layer = layer + 0.01 health_threshold = max(CEILING((health * 4) / (maxHealth), 1), 0) //From 0 to 4, in 25% chunks if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) @@ -323,10 +315,9 @@ else wound_icon_holder.icon_state = handle_special_wound_states(health_threshold) - ///Used to display the xeno wounds/backpacks without rapidly switching overlays /atom/movable/vis_obj - vis_flags = VIS_INHERIT_ID|VIS_INHERIT_DIR + vis_flags = VIS_INHERIT_ID|VIS_INHERIT_DIR|VIS_INHERIT_LAYER|VIS_INHERIT_PLANE appearance_flags = RESET_COLOR /atom/movable/vis_obj/xeno_wounds diff --git a/code/modules/mob/living/living_verbs.dm b/code/modules/mob/living/living_verbs.dm index 3a97725a6fc4..1d51e43fd71d 100644 --- a/code/modules/mob/living/living_verbs.dm +++ b/code/modules/mob/living/living_verbs.dm @@ -170,25 +170,16 @@ return //breaking out of handcuffs & putting out fires - if(!is_mob_incapacitated(TRUE)) + if(mobility_flags & MOBILITY_MOVE) if(on_fire) resist_fire() - - var/on_acid = FALSE - for(var/datum/effects/acid/A in effects_list) - on_acid = TRUE - break - if(on_acid) + if(locate(/datum/effects/acid) in effects_list) resist_acid() + if(last_special <= world.time) + resist_restraints() SEND_SIGNAL(src, COMSIG_MOB_RESISTED) - if(!iscarbon(src)) - return - var/mob/living/carbon/C = src - if((C.handcuffed || C.legcuffed) && (C.mobility_flags & MOBILITY_MOVE) && (C.last_special <= world.time)) - resist_restraints() - /mob/living/proc/resist_buckle() buckled.manual_unbuckle(src) diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm index 7ecaab1c3e79..abb044d474e8 100644 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm @@ -1,5 +1,3 @@ -#define BORG_CAMERA_BUFFER 5 - //UPDATE TRIGGERS, when the chunk (and the surrounding chunks) should update. // TURFS @@ -66,10 +64,9 @@ if(src.camera && src.camera.network.len) if(!updating) updating = 1 - spawn(BORG_CAMERA_BUFFER) - if(oldLoc != src.loc) - GLOB.cameranet.updatePortableCamera(src.camera) - updating = 0 + if(oldLoc != src.loc) + GLOB.cameranet.updatePortableCamera(src.camera) + updating = 0 /mob/living/carbon/human/var/updating = 0 @@ -83,10 +80,9 @@ if (updating) continue updating = TRUE - spawn(BORG_CAMERA_BUFFER) - if (oldLoc != loc) - GLOB.cameranet.updatePortableCamera(H.camera) - updating = FALSE + if (oldLoc != loc) + GLOB.cameranet.updatePortableCamera(H.camera) + updating = FALSE // CAMERA @@ -114,4 +110,3 @@ GLOB.cameranet.removeCamera(src) . = ..() -//#undef BORG_CAMERA_BUFFER diff --git a/code/modules/mob/living/silicon/decoy/decoy.dm b/code/modules/mob/living/silicon/decoy/decoy.dm index bc7271554352..3c2d65bd4180 100644 --- a/code/modules/mob/living/silicon/decoy/decoy.dm +++ b/code/modules/mob/living/silicon/decoy/decoy.dm @@ -47,6 +47,9 @@ /mob/living/silicon/decoy/death(cause, gibbed, deathmessage = "sparks up and falls silent...") if(stat == DEAD) return FALSE + + //ARES sends out last messages + ares_final_words() icon_state = "hydra-off" var/datum/cause_data/cause_data = create_cause_data("rapid unscheduled disassembly", src, src) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), loc, -1, 0, 8, 12, TRUE, FALSE, 0, cause_data), 2 SECONDS) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 2ed1ee5e126c..5785197fdcd6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -463,6 +463,7 @@ /mob/proc/swap_hand() hand = !hand + SEND_SIGNAL(src, COMSIG_MOB_SWAPPED_HAND) //attempt to pull/grab something. Returns true upon success. /mob/proc/start_pulling(atom/movable/AM, lunge, no_msg) @@ -989,6 +990,7 @@ note dizziness decrements automatically in the mob's Life() proc. /// Adds this list to the output to the stat browser /mob/proc/get_status_tab_items() . = list() + SEND_SIGNAL(src, COMSIG_MOB_GET_STATUS_TAB_ITEMS, .) /mob/proc/get_role_name() return @@ -1056,3 +1058,14 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/update_stat() return + +/// Send src back to the lobby as a `/mob/new_player()` +/mob/proc/send_to_lobby() + var/mob/new_player/new_player = new + + if(!mind) + mind_initialize() + + mind.transfer_to(new_player) + + qdel(src) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f0e5bc48a855..f7f062295778 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -174,7 +174,7 @@ mouse_drag_pointer = MOUSE_ACTIVE_POINTER - var/status_flags = CANKNOCKDOWN|CANPUSH|STATUS_FLAGS_DEBILITATE //bitflags defining which status effects can be inflicted (replaces canweaken, canstun, etc) + var/status_flags = DEFAULT_MOB_STATUS_FLAGS //bitflags defining which status effects can be inflicted (replaces canweaken, canstun, etc) var/area/lastarea = null var/obj/control_object //Used by admins to possess objects. All mobs should have this var diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index e918a00b0984..b9c5dd12a8aa 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -87,6 +87,10 @@ ADD_TRAIT(victim, TRAIT_FLOORED, CHOKEHOLD_TRAIT) /obj/item/grab/proc/progress_passive(mob/living/carbon/human/user, mob/living/victim) + if(SEND_SIGNAL(victim, COMSIG_MOB_AGGRESSIVELY_GRABBED, user) & COMSIG_MOB_AGGRESIVE_GRAB_CANCEL) + to_chat(user, SPAN_WARNING("You can't grab [victim] aggressively!")) + return + user.grab_level = GRAB_AGGRESSIVE playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) user.visible_message(SPAN_WARNING("[user] has grabbed [victim] aggressively!"), null, null, 5) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 6abe12eee9b1..4f9244126c36 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -131,6 +131,72 @@ GLOBAL_LIST_INIT(limb_types_by_name, list( index++ return output_message +/** + * Summary: proc that parses an html input string and scrambles the non-html string contents. + * + * Arguments: + * * message - an html string value to be parsed and modified. + * + * Return: + * returns the parsed and modified html output with the text content being partially scrambled with asteriks + */ +/proc/stars_decode_html(message) + if(!length(message)) + return + + // boolean value to know if the current indexed element needs to be scrambled. + var/parsing_message = FALSE + + // boolean values to know if we are currently inside a double or single quotation. + var/in_single_quote = FALSE + var/in_double_quote = FALSE + + // string of what tag we're currently in + var/current_tag = "" + var/escaped_tag = FALSE + + // string that will be scrambled + var/current_string_to_scramble = "" + + // output string after parse + var/output_message = "" + for(var/character_index in 1 to length(message)) + var/current_char = message[character_index] + + // Apparent edge case safety, we only want to check the < and > on the edges of the tag. + if(!parsing_message) + if(current_char == "'") + in_single_quote = !in_single_quote + if(current_char == "\"") + in_double_quote = !in_double_quote + if(in_single_quote || in_double_quote) + output_message += current_char + continue + + if(current_char == ">") + parsing_message = TRUE + output_message += current_char + current_tag += current_char + if(findtext(current_tag, "") == 1 || findtext(current_tag, "[key_name(character, 1, 1, 0)]. IP: [character.lastKnownIP], CID: [character.computer_id]") - if(client.player_data && client.player_data.playtime_loaded && ((round(client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1)) <= 5)) + if(client.player_data && client.player_data.playtime_loaded && ((round(client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1)) <= CONFIG_GET(number/notify_new_player_age))) msg_sea("NEW PLAYER: [key_name(character, 0, 1, 0)] only has [(round(client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1))] hours as a human. Current role: [get_actual_job_name(character)] - Current location: [get_area(character)]") character.client.init_verbs() @@ -370,30 +395,8 @@ new_character.lastarea = get_area(loc) - client.prefs.copy_all_to(new_character, job, is_late_join) - - if (client.prefs.be_random_body) - var/datum/preferences/TP = new() - TP.randomize_appearance(new_character) - - if(mind) - mind_initialize() - mind.active = 0 //we wish to transfer the key manually - mind.original = new_character - mind.transfer_to(new_character) //won't transfer key since the mind is not active - mind.setup_human_stats() - - new_character.job = job - new_character.name = real_name - new_character.voice = real_name - - // Update the character icons - // This is done in set_species when the mob is created as well, but - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, regenerate_icons)) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_body), 1, 0) - INVOKE_ASYNC(new_character, TYPE_PROC_REF(/mob/living/carbon/human, update_hair)) + setup_human(new_character, src, is_late_join) - new_character.key = key //Manually transfer the key to log them in new_character.client?.change_view(GLOB.world_view_size) return new_character diff --git a/code/modules/organs/limbs.dm b/code/modules/organs/limbs.dm index 8df96650ac50..949104c5d673 100644 --- a/code/modules/organs/limbs.dm +++ b/code/modules/organs/limbs.dm @@ -547,6 +547,7 @@ This function completely restores a damaged organ to perfect condition. /obj/limb/proc/remove_all_bleeding(external = FALSE, internal = FALSE) + SEND_SIGNAL(src, COMSIG_LIMB_STOP_BLEEDING, external, internal) if(external) for(var/datum/effects/bleeding/external/B in bleeding_effects_list) qdel(B) @@ -954,7 +955,13 @@ This function completely restores a damaged organ to perfect condition. // OK so maybe your limb just flew off, but if it was attached to a pair of cuffs then hooray! Freedom! release_restraints() - if(vital) owner.death(cause) + if(vital) + var/mob/caused_mob + if(istype(cause, /mob)) + caused_mob = cause + if(!istype(cause, /datum/cause_data)) + cause = create_cause_data("lost vital limb", caused_mob) + owner.death(cause) /* HELPERS diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index b572b5d9e87b..8220f60e77ed 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -75,26 +75,25 @@ /obj/item/paper/get_examine_text(mob/user) . = ..() - if(in_range(user, src) || istype(user, /mob/dead/observer)) + if(in_range(user, src) || isobserver(user)) if(!(istype(user, /mob/dead/observer) || istype(user, /mob/living/carbon/human) || isRemoteControlling(user))) // Show scrambled paper if they aren't a ghost, human, or silicone. - if(photo_list) - for(var/photo in photo_list) - user << browse_rsc(photo_list[photo], photo) - show_browser(user, "[stars(info)][stamps]", name, name, "size=650x700") - onclose(user, name) + read_paper(user,scramble = TRUE) else read_paper(user) else . += SPAN_NOTICE("It is too far away.") -/obj/item/paper/proc/read_paper(mob/user) +/obj/item/paper/proc/read_paper(mob/user, scramble = FALSE) var/datum/asset/asset_datum = get_asset_datum(/datum/asset/simple/paper) asset_datum.send(user) if(photo_list) for(var/photo in photo_list) user << browse_rsc(photo_list[photo], photo) - show_browser(user, "[info][stamps]", name, name, "size=650x700") + var/paper_info = info + if(scramble) + paper_info = stars_decode_html(info) + show_browser(user, "[paper_info][stamps]", name, name, "size=650x700") onclose(user, name) /obj/item/paper/verb/rename() diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index cebb4ad613b0..40d88f684791 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -46,7 +46,7 @@ ..() /obj/item/photo/get_examine_text(mob/user) - if(in_range(user, src)) + if(in_range(user, src) || isobserver(user)) show(user) return list(desc) else diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index c41a57f53527..3a444e1ad1fc 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -843,6 +843,7 @@ User can be passed as null, (a gun reloading itself for instance), so we need to to_chat(user, SPAN_WARNING("Your reload was interrupted!")) return replace_magazine(user, magazine) + SEND_SIGNAL(user, COMSIG_MOB_RELOADED_GUN, src) else current_mag = magazine magazine.forceMove(src) @@ -1048,6 +1049,7 @@ and you're good to go. user.swap_hand() unload(user, TRUE, drop_to_ground) // We want to quickly autoeject the magazine. This proc does the rest based on magazine type. User can be passed as null. playsound(src, empty_sound, 25, 1) + SEND_SIGNAL(user, COMSIG_MOB_GUN_EMPTY, src) else // Just fired a chambered bullet with no magazine in the gun update_icon() diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 33d28527c8a1..0f3fde8f3c9b 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -342,6 +342,10 @@ Defined in conflicts.dm of the #defines folder. throw_range = 7 pry_delay = 1 SECONDS +/obj/item/attachable/bayonet/van_bandolier + name = "\improper Fairbairn-Sykes fighting knife" + desc = "This isn't for dressing game or performing camp chores. It's almost certainly not an original. Almost." + /obj/item/attachable/bayonet/co2/update_icon() icon_state = "co2_knife[filled ? "-f" : ""]" attach_icon = "co2_bayonet[filled ? "-f" : ""]_a" @@ -1582,7 +1586,7 @@ Defined in conflicts.dm of the #defines folder. scoper.clear_fullscreen("vulture") scoper.client.remove_from_screen(scope_element) scoper.see_in_dark -= darkness_view - scoper.lighting_alpha = 127 + scoper.lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE scoper.sync_lighting_plane_alpha() QDEL_NULL(scope_element) recalculate_scope_pos() diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 18fb0bf44cd8..282edcab9fd6 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -621,7 +621,7 @@ burn_damage = 0 if(!burn_damage) - to_chat(M, SPAN_DANGER("You step over the flames.")) + to_chat(M, SPAN_DANGER("[isxeno(M) ? "We" : "You"] step over the flames.")) return M.last_damage_data = weapon_cause_data @@ -632,7 +632,7 @@ if(FIRE_VARIANT_TYPE_B) if(isxeno(M)) var/mob/living/carbon/xenomorph/X = M - X.armor_deflection?(variant_burn_msg=" You feel the flames weakening your exoskeleton!"):(variant_burn_msg=" You feel the flaming chemicals eating into your body!") + X.armor_deflection?(variant_burn_msg=" We feel the flames weakening our exoskeleton!"):(variant_burn_msg=" You feel the flaming chemicals eating into your body!") to_chat(M, SPAN_DANGER("You are burned![variant_burn_msg?"[variant_burn_msg]":""]")) M.updatehealth() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index ef265e0b8095..ee9caa61d7a7 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -96,7 +96,10 @@ starting = null permutated = null path = null + vis_source = null + process_start_turf = null weapon_cause_data = null + bullet_traits = null firer = null QDEL_NULL(bound_beam) SSprojectiles.stop_projectile(src) @@ -243,20 +246,9 @@ vis_source_pixel_x = process_start_pixel_x vis_source_pixel_y = process_start_pixel_y - angle = 0 // Stolen from Get_Angle() basically var/dx = p_x + aim_turf.x * 32 - source_turf.x * 32 // todo account for firer offsets var/dy = p_y + aim_turf.y * 32 - source_turf.y * 32 - if(!dy) - if(dx >= 0) - angle = 90 - else - angle = 280 - else - angle = arctan(dx/dy) - if(dy < 0) - angle += 180 - else if(dx < 0) - angle += 360 + angle = delta_to_angle(dx, dy) /obj/projectile/process(delta_time) . = PROC_RETURN_SLEEP @@ -298,7 +290,7 @@ //Change the bullet angle to its visual path - var/vis_angle = get_pixel_angle(x = pixel_x_target - pixel_x_source, y = pixel_y_target - pixel_y_source) //naming vars because the proc takes y then x and that's WEIRD + var/vis_angle = delta_to_angle(pixel_x_target - pixel_x_source, pixel_y_target - pixel_y_source) var/matrix/rotate = matrix() rotate.Turn(vis_angle) apply_transform(rotate) @@ -1235,9 +1227,10 @@ return if(COOLDOWN_FINISHED(src, shot_cooldown)) visible_message(SPAN_DANGER("[src] is hit by the [P.name] in the [parse_zone(P.def_zone)]!"), \ - SPAN_HIGHDANGER("You are hit by the [P.name] in the [parse_zone(P.def_zone)]!"), null, 4, CHAT_TYPE_TAKING_HIT) + SPAN_HIGHDANGER("[isxeno(src) ? "We" : "You"] are hit by the [P.name] in the [parse_zone(P.def_zone)]!"), null, 4, CHAT_TYPE_TAKING_HIT) COOLDOWN_START(src, shot_cooldown, 1 SECONDS) + last_damage_data = P.weapon_cause_data if(P.firer && ismob(P.firer)) var/mob/firingMob = P.firer diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 6d36765146ed..4e3f3a91449d 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -152,6 +152,9 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) handle_processing(M, mods, delta_time) holder.remove_reagent(id, custom_metabolism * delta_time) + if(!holder) + return FALSE + return TRUE //Pre-processing diff --git a/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm b/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm index e0d0a80cadc2..51db188826b8 100644 --- a/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm +++ b/code/modules/reagents/chemistry_machinery/reagent_analyzer.dm @@ -29,6 +29,9 @@ updateUsrDialog() if(!do_after(user, 1 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) return + if(!sample) + to_chat(user, SPAN_WARNING("Someone else removed the sample. Make up your mind!")) + return processing = TRUE if(sample.reagents.total_volume < 30 || sample.reagents.reagent_list.len > 1) icon_state = "reagent_analyzer_error" diff --git a/code/modules/reagents/chemistry_reagents/drink.dm b/code/modules/reagents/chemistry_reagents/drink.dm index 9739687dec20..3a49429d664e 100644 --- a/code/modules/reagents/chemistry_reagents/drink.dm +++ b/code/modules/reagents/chemistry_reagents/drink.dm @@ -163,8 +163,10 @@ /datum/reagent/drink/milk/on_mob_life(mob/living/M) . = ..() - if(!.) return - if(M.getBruteLoss() && prob(20)) M.heal_limb_damage(1,0) + if(!.) + return + if(M.getBruteLoss() && prob(20)) + M.heal_limb_damage(1,0) holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM) holder.remove_reagent("hotsauce", 10*REAGENTS_METABOLISM) diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index 6301a4c5ea5b..86c0c86abfc2 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -211,21 +211,31 @@ /obj/structure/machinery/computer/shuttle/dropship/flight/attack_alien(mob/living/carbon/xenomorph/xeno) - if(!is_ground_level(z)) - to_chat(xeno, SPAN_NOTICE("Lights flash from the terminal but we can't comprehend their meaning.")) - playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, 1) - return + var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttleId) + // If the attacking xeno isn't the queen. if(xeno.hive_pos != XENO_QUEEN) - to_chat(xeno, SPAN_NOTICE("Lights flash from the terminal but we can't comprehend their meaning.")) - playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, 1) - return + // If the 'about to launch' alarm is playing, a xeno can whack the computer to stop it. + if(dropship.playing_launch_announcement_alarm) + stop_playing_launch_announcement_alarm() + xeno.animation_attack_on(src) + to_chat(xeno, SPAN_XENONOTICE("We slash at [src], silencing its squawking!")) + playsound(loc, 'sound/machines/terminal_shutdown.ogg', 20) + else + to_chat(xeno, SPAN_NOTICE("Lights flash from the terminal but we can't comprehend their meaning.")) + playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, TRUE) + return XENO_NONCOMBAT_ACTION + + if(!is_ground_level(z)) + // "you" rather than "we" for this one since non-queen castes will have returned above. + to_chat(xeno, SPAN_NOTICE("Lights flash from the terminal but you can't comprehend their meaning.")) + playsound(loc, 'sound/machines/terminal_error.ogg', KEYBOARD_SOUND_VOLUME, TRUE) + return XENO_NONCOMBAT_ACTION if(is_remote) groundside_alien_action(xeno) return - var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttleId) if(dropship.is_hijacked) return @@ -239,6 +249,7 @@ addtimer(CALLBACK(GLOB.almayer_orbital_cannon, TYPE_PROC_REF(/obj/structure/orbital_cannon, enable)), 10 MINUTES, TIMER_UNIQUE) if(!GLOB.resin_lz_allowed) set_lz_resin_allowed(TRUE) + stop_playing_launch_announcement_alarm() to_chat(xeno, SPAN_XENONOTICE("You override the doors.")) xeno_message(SPAN_XENOANNOUNCE("The doors of the metal bird have been overridden! Rejoice!"), 3, xeno.hivenumber) @@ -287,9 +298,6 @@ hijack.fire() GLOB.alt_ctrl_disabled = TRUE - dropship.alarm_sound_loop.stop() - dropship.playing_launch_announcement_alarm = FALSE - marine_announcement("Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.", "Dropship Alert", 'sound/AI/hijack.ogg', logging = ARES_LOG_SECURITY) log_ares_flight("Unknown", "Unscheduled dropship departure detected from operational area. Hijack likely. Shutting down autopilot.") @@ -411,7 +419,7 @@ update_equipment(is_optimised, FALSE) var/list/local_data = ui_data(user) var/found = FALSE - playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) + playsound(loc, get_sfx("terminal_button"), 5, 1) for(var/destination in local_data["destinations"]) if(destination["id"] == dock_id) found = TRUE diff --git a/code/modules/shuttle/dropship_hijack.dm b/code/modules/shuttle/dropship_hijack.dm index c87dff348b3c..c01445be5b5b 100644 --- a/code/modules/shuttle/dropship_hijack.dm +++ b/code/modules/shuttle/dropship_hijack.dm @@ -51,6 +51,7 @@ // Break the ultra-reinforced windows. // Break the briefing windows. SEND_GLOBAL_SIGNAL(COMSIG_GLOB_HIJACK_IMPACTED) + RegisterSignal(SSdcs, COMSIG_GLOB_HIJACK_LANDED, PROC_REF(finish_landing)) // Sleep while the explosions do their job var/explosion_alive = TRUE @@ -62,6 +63,7 @@ break sleep(10) +/datum/dropship_hijack/almayer/proc/finish_landing() SShijack.announce_status_on_crash() SSticker.hijack_ocurred() @@ -210,7 +212,7 @@ turfs += get_area_turfs(/area/almayer/squads/req) if("Lower deck Aftship") turfs += get_area_turfs(/area/almayer/living/cryo_cells) - turfs += get_area_turfs(/area/almayer/engineering/engineering_workshop) + turfs += get_area_turfs(/area/almayer/engineering/lower/workshop) else CRASH("Crash site [ship_section] unknown.") return pick(turfs) diff --git a/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm b/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm index 1f0a8fd502cf..c2c6b818b37b 100644 --- a/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm +++ b/code/modules/shuttle/shuttles/crashable/escape_shuttle.dm @@ -73,6 +73,8 @@ for(var/mob/living/occupant in interior_area) occupant_count++ for(var/obj/structure/machinery/cryopod/evacuation/cryotube in interior_area) + if(cryotube.occupant) + occupant_count++ cryos += list(cryotube) if (occupant_count > max_capacity) playsound(src,'sound/effects/escape_pod_warmup.ogg', 50, 1) diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm index ee91c9b9e5d4..f741df301bbb 100644 --- a/code/modules/shuttle/shuttles/dropship.dm +++ b/code/modules/shuttle/shuttles/dropship.dm @@ -30,6 +30,7 @@ var/automated_delay var/automated_timer + /obj/docking_port/mobile/marine_dropship/Initialize(mapload) . = ..() door_control = new() @@ -43,15 +44,28 @@ if("aft_door") door_control.add_door(air, "aft") + RegisterSignal(src, COMSIG_DROPSHIP_ADD_EQUIPMENT, PROC_REF(add_equipment)) + RegisterSignal(src, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, PROC_REF(remove_equipment)) + /obj/docking_port/mobile/marine_dropship/Destroy(force) . = ..() qdel(door_control) + UnregisterSignal(src, COMSIG_DROPSHIP_ADD_EQUIPMENT) + UnregisterSignal(src, COMSIG_DROPSHIP_REMOVE_EQUIPMENT) /obj/docking_port/mobile/marine_dropship/proc/send_for_flyby() in_flyby = TRUE var/obj/docking_port/stationary/dockedAt = get_docked() SSshuttle.moveShuttle(src.id, dockedAt.id, TRUE) +/obj/docking_port/mobile/marine_dropship/proc/add_equipment(obj/docking_port/mobile/marine_dropship/dropship, obj/structure/dropship_equipment/equipment) + SIGNAL_HANDLER + equipments += equipment + +/obj/docking_port/mobile/marine_dropship/proc/remove_equipment(obj/docking_port/mobile/marine_dropship/dropship, obj/structure/dropship_equipment/equipment) + SIGNAL_HANDLER + equipments -= equipment + /obj/docking_port/mobile/marine_dropship/proc/get_door_data() return door_control.get_data() @@ -107,10 +121,12 @@ /obj/docking_port/mobile/marine_dropship/alamo name = "Alamo" id = DROPSHIP_ALAMO + preferred_direction = SOUTH /obj/docking_port/mobile/marine_dropship/normandy name = "Normandy" id = DROPSHIP_NORMANDY + preferred_direction = SOUTH /obj/docking_port/mobile/marine_dropship/check() . = ..() @@ -284,6 +300,7 @@ affected_mob.apply_effect(3, WEAKEN) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_GROUNDSIDE_FORSAKEN_HANDLING) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_HIJACK_LANDED) /datum/map_template/shuttle/alamo name = "Alamo" diff --git a/code/modules/vehicles/hardpoints/hardpoint.dm b/code/modules/vehicles/hardpoints/hardpoint.dm index acdefca18fd2..21e3e4b29f89 100644 --- a/code/modules/vehicles/hardpoints/hardpoint.dm +++ b/code/modules/vehicles/hardpoints/hardpoint.dm @@ -688,7 +688,7 @@ if(muzzle_turf == target_turf) return FALSE - var/angle_diff = SIMPLIFY_DEGREES(dir2angle(dir) - get_angle(muzzle_turf, target_turf)) + var/angle_diff = SIMPLIFY_DEGREES(dir2angle(dir) - Get_Angle(muzzle_turf, target_turf)) if(angle_diff < -180) angle_diff += 360 else if(angle_diff > 180) diff --git a/code/span_macros.dm b/code/span_macros.dm index 77e57f2077a0..b6a0e79a956b 100644 --- a/code/span_macros.dm +++ b/code/span_macros.dm @@ -106,3 +106,4 @@ #define SPAN_MAROON(X) "[X]" #define SPAN_STAFF_IC(X) "[X]" +#define SPAN_BIGNOTICE(X) "[X]" diff --git a/colonialmarines.dme b/colonialmarines.dme index 64f1338244b4..814674c57f06 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -78,6 +78,7 @@ #include "code\__DEFINES\MC.dm" #include "code\__DEFINES\minimap.dm" #include "code\__DEFINES\misc.dm" +#include "code\__DEFINES\mob.dm" #include "code\__DEFINES\mob_hud.dm" #include "code\__DEFINES\mobs.dm" #include "code\__DEFINES\mode.dm" @@ -111,6 +112,7 @@ #include "code\__DEFINES\tgui.dm" #include "code\__DEFINES\traits.dm" #include "code\__DEFINES\turf_flags.dm" +#include "code\__DEFINES\tutorial.dm" #include "code\__DEFINES\unit_tests.dm" #include "code\__DEFINES\urls.dm" #include "code\__DEFINES\vehicle.dm" @@ -403,6 +405,7 @@ #include "code\datums\components\rename.dm" #include "code\datums\components\speed_modifier.dm" #include "code\datums\components\toxin_buildup.dm" +#include "code\datums\components\tutorial_status.dm" #include "code\datums\components\weed_damage_reduction.dm" #include "code\datums\components\weed_food.dm" #include "code\datums\components\autofire\_automated_fire.dm" @@ -663,6 +666,15 @@ #include "code\datums\supply_packs\spec_ammo.dm" #include "code\datums\supply_packs\vehicle_ammo.dm" #include "code\datums\supply_packs\weapons.dm" +#include "code\datums\tutorial\_tutorial.dm" +#include "code\datums\tutorial\_tutorial_menu.dm" +#include "code\datums\tutorial\tutorial_example.dm" +#include "code\datums\tutorial\marine\_marine.dm" +#include "code\datums\tutorial\marine\basic_marine.dm" +#include "code\datums\tutorial\marine\medical_basic.dm" +#include "code\datums\tutorial\ss13\_ss13.dm" +#include "code\datums\tutorial\ss13\basic_ss13.dm" +#include "code\datums\tutorial\ss13\intents.dm" #include "code\datums\weather\weather_event.dm" #include "code\datums\weather\weather_map_holder.dm" #include "code\datums\weather\weather_events\big_red.dm" @@ -723,6 +735,7 @@ #include "code\game\area\techtree.dm" #include "code\game\area\varadero.dm" #include "code\game\area\WhiskeyOutpost.dm" +#include "code\game\camera_manager\camera_manager.dm" #include "code\game\cas_manager\datums\cas_fire_envelope.dm" #include "code\game\cas_manager\datums\cas_fire_mission.dm" #include "code\game\cas_manager\datums\cas_iff_group.dm" @@ -971,6 +984,7 @@ #include "code\game\machinery\vending\vendor_types\squad_prep\squad_smartgunner.dm" #include "code\game\machinery\vending\vendor_types\squad_prep\squad_specialist.dm" #include "code\game\machinery\vending\vendor_types\squad_prep\squad_tl.dm" +#include "code\game\machinery\vending\vendor_types\squad_prep\tutorial.dm" #include "code\game\objects\empulse.dm" #include "code\game\objects\explosion.dm" #include "code\game\objects\explosion_recursive.dm" diff --git a/html/changelogs/AutoChangeLog-pr-4842.yml b/html/changelogs/AutoChangeLog-pr-4842.yml deleted file mode 100644 index 6c1c16a996b3..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4842.yml +++ /dev/null @@ -1,12 +0,0 @@ -author: "fira" -delete-after: True -changes: - - rscadd: "Added Buckled, Handcuffed and Legcuffed screen alerts" - - code_imp: "Ported /tg/ status effects backend, modified with timers to let effects end at appropriate time" - - code_imp: "Stun, Knockdown and Knockout now use the new effects backend" - - balance: "Due to backend change, all KO/KD/Stuns may behave differently timing wise. This is of course subject to adjustments." - - balance: "Endurance is now set at 8% effect duration reduction per level above 1. However it now compounds with species bonus. Feel free to adjust." - - balance: "Knockdowns are not inherently incapacitating anymore and many sources of it have been updated to also stun to make up for it." - - bugfix: "KO/KD/Stuns do not artificially and randomly ''stack'' due to incorrect timer offset calculation anymore." - - bugfix: "Stuns now correctly apply Stun reduction values instead of Knockdown reductions." - - bugfix: "Crawling can now be interrupted by a normal move, if you are fit enough to do so." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5113.yml b/html/changelogs/AutoChangeLog-pr-5113.yml new file mode 100644 index 000000000000..dfb69d789488 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5113.yml @@ -0,0 +1,6 @@ +author: "Steelpoint" +delete-after: True +changes: + - mapadd: "Shivas Snowball is back in rotation." + - maptweak: "The south east landing zone on Shivas has been relocated to the south west, the dig site in the south west has been similarly relocated." + - maptweak: "Comms towers on Shivas have been placed in more consistent locations near each other, instead of some of them being on the opposite sides of the map from each other." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5272.yml b/html/changelogs/AutoChangeLog-pr-5272.yml new file mode 100644 index 000000000000..735ae141913d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5272.yml @@ -0,0 +1,5 @@ +author: "poltava, ihatethisengine" +delete-after: True +changes: + - rscadd: "added intel chestrig" + - imageadd: "added sprites for intel chestrig" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5355.yml b/html/changelogs/AutoChangeLog-pr-5355.yml new file mode 100644 index 000000000000..26922c12d4f6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5355.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - bugfix: "Fixed custom xeno ERTs sending a distress beacon announcement when it shouldn't." \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index 4a882e76a8d1..6f487820ae46 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -374,3 +374,218 @@ - bugfix: Escape-pod stasis bays no longer accept corpses. stalkerino: - balance: fixes the balance of the game by making hair gradient trait free +2023-12-20: + Birdtalon, Fira: + - bugfix: Fixes hive UI crash upon pylon giving new larva. + Contrabang: + - bugfix: Matches now do burn damage instead of brute, when you accidently burn + your own hand. + InsaneRed: + - spellcheck: Converted more "YOU" to "WE" for xenomorphs. + LTNTS: + - qol: makes suspect nardo gray + fira: + - rscadd: Added Buckled, Handcuffed and Legcuffed screen alerts + - code_imp: Ported /tg/ status effects backend, modified with timers to let effects + end at appropriate time + - code_imp: Stun, Knockdown and Knockout now use the new effects backend + - balance: Due to backend change, all KO/KD/Stuns may behave differently timing + wise. This is of course subject to adjustments. + - balance: Endurance is now set at 8% effect duration reduction per level above + 1. However it now compounds with species bonus. Feel free to adjust. + - balance: Knockdowns are not inherently incapacitating anymore and many sources + of it have been updated to also stun to make up for it. + - bugfix: KO/KD/Stuns do not artificially and randomly ''stack'' due to incorrect + timer offset calculation anymore. + - bugfix: Stuns now correctly apply Stun reduction values instead of Knockdown reductions. + - bugfix: Crawling can now be interrupted by a normal move, if you are fit enough + to do so. + realforest2001: + - maptweak: Various doors around the Almayer will now close their opposites for + better security. +2023-12-21: + Birdtalon: + - bugfix: Lurker can tail jab over ledges and window frames. + Drathek: + - imageadd: Update weeded warrior sprites to be compatible with knight strain sprite +2023-12-22: + Ben10083: + - rscdel: ' Working Joes can no longer drink' + Cthulhu80: + - ui: tacmap ui tweaks + Doubleumc: + - bugfix: Fixed security tuner not dispalying direction to room's APC + - refactor: Refactored code handling angles + InsaneRed: + - code_imp: Converts xenomorph cooldowns into SECONDS + SabreML: + - bugfix: Fixed being able to remove multiple stacks of fire by spamming resist. + Steelpoint: + - rscadd: Factions are now properly separated in the observe menu as a ghost. + cuberound: + - bugfix: bad DS doorgun placement + fira: + - bugfix: Fix Xmas helmets getting overriden by map camouflage. + realforest2001: + - bugfix: Hijack should no longer end the round immediately. + - rscadd: Ghosts can now toggle hearing listening devices or not. This is dependant + on hearing radios and will not function to allow hearing devices without also + hearing radios. +2023-12-23: + BadAtThisGame302: + - balance: rebalanced goon skillset to include construction 1 + - spellcheck: fixed Liason area typos to Liaison + - spellcheck: fixed the ICC Liason to ICC Liaison typo + fira: + - bugfix: Fixed X-mas barricade wiring not applying properly. + private-tristan: + - balance: xenos can now acid all window frames. +2023-12-24: + BadAtThisGame302: + - rscadd: Added a windbreaker to the Flight Control Operator surv. + - rscadd: Added W-Y Flight Control access to the Flight Control Operator surv. + - bugfix: fixed the Flight Control Operator path. + Cthulhu80: + - rscadd: human mobs now scream whenever they get lunged at by a warrior. + - soundadd: added a new scream sound and put it into the existing scream list. + Drathek: + - bugfix: Fix crusher charge and tumble abilities going over unwired cades + Huffie56: + - bugfix: removed an extra light in bravo cryo room(to do just saw it) + - maptweak: added more areas (stern_point_defense, Lower Deck Stern Hull, Upper + Deck port Hallway Upper Deck starboard Hallway) + SabreML: + - rscdel: Removed the green overlay from camera consoles. + - rscadd: Allowed Xenomorphs to turn off the dropship's launch alarm by hitting + the nav computer. + - spellcheck: Made the `xenoboldnotice` span class bold rather than italic. + cuberound: + - bugfix: DS doorgun no longer drops the gun when destroyed + ihatethisengine: + - balance: "New healer drone ability \u2014 sacrifice. Healer drone can instantly\ + \ transfer 75% of its current health, but for the great cost of the healer\u2019\ + s own life." +2023-12-25: + InsaneRed: + - balance: Tweaks down the buffed root of vanguard down to 1.8 from 2.5 +2023-12-26: + Ben10083: + - rscadd: If ARES is destroyed, systems such as bioscan also shut down, this will + be expanded in the future + - rscadd: ARES plays an announcement when destroyed + - code_imp: Procs to check for APOLLO processor and if ARES is alive added + - refactor: ARES subsystems modified to utilize new procs + - admin: Prompt to force a Marine Bioscan only shows when ARES is unable to perform + the bioscan. + Drathek: + - bugfix: Fix queen death not fully readmitting any banished xenos + - bugfix: Fixed resisting acid + SabreML: + - code_imp: Made the Tech Tree subsystem initialise faster. + Steelpoint: + - rscadd: The Executive Officer now has a personal weapons vendor. It includes the + ability to acquire a full suite of combat and support gear, giving the XO more + agency in customizing their loadout. + - rscadd: Adds a new set of belts to the Executive Officer's uniform vendor. + mullenpaul: + - ui: tgui dropship weapons console + - refactor: added MFD panel + - refactor: creates datum component to manage camera code + - qol: CAS weapons operator can see camera in UI + - rscadd: CAS can offset in X and Y coordinates + - refactor: CAS can offset in different direction to attack vector + realforest2001: + - bugfix: Yautja bracer lock can now properly unlock thrall bracers. +2023-12-27: + Birdtalon: + - rscdel: Removed old crystal code from xenos + - code_imp: Renames still used vars from crystal to plasma + - code_imp: Removes crystal define in place of plasma string + Drathek: + - bugfix: Fix xeno wounds layering over weeds when merged with the weeds + InsaneRed: + - spellcheck: More WE/YOU fixes for xenomorph side. + - bugfix: Spitter's charge spit abiltiy now properly adds and removes the 5 armor + like its supposed to initially. + SabreML: + - bugfix: Fixed the Queen Eye still showing as "Immature" after the Queen ages. + - bugfix: Fixed carriers being unable to reduce their 'reserved facehuggers' number. + - bugfix: Fixed being able to vend infinite alcohol. + - bugfix: Fixed the death message from GAU-21 and Laser Cannon strikes saying that + the player was killed by the ammo crate. + cuberound: + - balance: launchbay price 400 -> 200 + - balance: DS installed sentrygun price lowered to 200 + realforest2001: + - code_imp: Added a new span class that combines bold and big. + - code_imp: Tweaked the way prayer sends notifications to be more efficient. + - admin: Moved the prayer notification sound to a toggle preference, combined with + ARES Interface notifications. +2023-12-28: + InsaneRed: + - bugfix: Synths are no longer immune to lunges / dragging while in 'critical state' + since they dont go into crit. + SabreML: + - bugfix: Fixed inserting/removing an item from shoes sometimes acting weirdly. + - refactor: Refactored shoe item storage. + fira: + - bugfix: Fixed XRF Scanner bricking if people were adding and removing vials at + same time. +2023-12-29: + sleepynecrons: + - imageadd: new sprites for predalien, predlarva and weeded corpse + - imageadd: added predalien wound overlays +2023-12-30: + Birdtalon: + - bugfix: Runtime in inventory.dm + Cthulhu80: + - bugfix: fixes immobilized mobs being able to buckle themselves + InsaneRed: + - qol: '"View Playtime" is now under the "Records" section under OOC' + - qol: '"Remove Your Splints" is now under the "IC" section.' + SabreML: + - bugfix: Fixed the CAS laser cannon only setting fire to a single tile, rather + a 7x7 range. + - qol: Made the designation of a tunnel display in chat when a player enters it. + - bugfix: Fixed the pyro spec's fuel pack sometimes giving weird failure messages + when trying to switch fuel. + Zonespace27: + - rscadd: Added a tutorial system for various roles (and just general information), + find it in the lobby screen. + cuberound: + - bugfix: m56d can not longer shoot backwards when facing north + mullenpaul: + - refactor: tgui js components now jsx +2023-12-31: + AnonHault: + - spellcheck: fixed a typo + BeagleGaming1: + - qol: Adds the ability to hide your action buttons + Birdtalon: + - bugfix: Fixes a runtime on decapping one's self. + - bugfix: Runtime with milk and possibly other reagent's on_mob_life() + - bugfix: Fixes runtime calling post_attack() on a mob which has already been qdeleted + via gibbing. + - code_imp: Refactors some code to new throw_carbon proc + Cthulhu80: + - bugfix: Fixes movement delay stacking on weeds + - bugfix: Fixes evac pods launching with more than the occupant limit + Huffie56: + - qol: creating a new section called engineering supplies for the rifleman and the + team leader. + - balance: added standard binocular to the rifleman vendor at a cost of 5. + - balance: added Range Finder and Laser Designator binoculars to Team leader at + a cost of 10 and 20. + - balance: added ES-11 Mobile Fuel Canister and ME3 hand welder to Team leader and + rifleman for 5 each. + InsaneRed: + - balance: Properly tweaks predator stun resist back to what it should have been. + SabreML: + - bugfix: Fixed the Hive Status window showing an error message when the Queen dies. + - qol: Added a 'Time Since Death' counter to the status tab for ghosts. + blackdragonTOW: + - rscadd: Max CL Headset radio keys from 3 to 5. (+2 increase) + cuberound: + - balance: gives trucker engineer level construction skill + mullenpaul: + - refactor: sentry laptop now uses camera manager component diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml new file mode 100644 index 000000000000..e0f97ef9e4b3 --- /dev/null +++ b/html/changelogs/archive/2024-01.yml @@ -0,0 +1,34 @@ +2024-01-01: + Cthulhu80: + - bugfix: fixes the associated examine text being displayed for different hud types + even when removed. + - balance: slightly increases zombie infection rate in dead mobs + - refactor: refactored some zombie code. + - bugfix: Fixes mobs being able to understand other languages while in crit. + - bugfix: fixes users getting stuck inside of the simulator + - bugfix: fixes xenos being able to view raw html on paper. + - bugfix: Fixes photos not being viewable from any distance as an observer + - bugfix: Fixes permanent lighting buff after using the vulture sniper rifle. + Drathek: + - bugfix: Fix handling of sentry_computer deletion + InsaneRed: + - spellcheck: Changed hit alerts to We instead of You on the xeno side. + Private Tristan: + - bugfix: Eggs are properly converted to Forsaken hive on evac + fira: + - bugfix: Fixed Nuke failing to detonate under specific circumstances. It may involve + a little rodent. + - bugfix: Nuke explosion will now kill mobs on its actual explosion rather than + at the start of the cinematic sequence. + mullenpaul: + - bugfix: properly sorted team lead position in squad info page +2024-01-02: + Cthulhu80: + - bugfix: Fixes voting message not formatting correctly. + SabreML: + - bugfix: Fixed screen alert tooltips ('Buckled' indicator and stuff) getting stuck + open. + Zonespace27: + - rscadd: The Three-World Empire will now occasionally respond to distress beacons. + cuberound: + - balance: m56d can not be placed within five tiles of another one diff --git a/icons/misc/tutorial.dmi b/icons/misc/tutorial.dmi new file mode 100644 index 000000000000..d4a4e65963ba Binary files /dev/null and b/icons/misc/tutorial.dmi differ diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi index 5e3d1e030661..4758f430a498 100644 Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ diff --git a/icons/mob/xenos/predalien.dmi b/icons/mob/xenos/predalien.dmi index 1e3ec5caf806..c6162729b516 100644 Binary files a/icons/mob/xenos/predalien.dmi and b/icons/mob/xenos/predalien.dmi differ diff --git a/icons/mob/xenos/predalien_larva.dmi b/icons/mob/xenos/predalien_larva.dmi index 82786f273980..41eb31a2c809 100644 Binary files a/icons/mob/xenos/predalien_larva.dmi and b/icons/mob/xenos/predalien_larva.dmi differ diff --git a/icons/mob/xenos/weeds_64x64.dmi b/icons/mob/xenos/weeds_64x64.dmi index 43d92fc4a8ac..53c971cfe97c 100644 Binary files a/icons/mob/xenos/weeds_64x64.dmi and b/icons/mob/xenos/weeds_64x64.dmi differ diff --git a/icons/mob/xenos/wounds.dmi b/icons/mob/xenos/wounds.dmi index bf7d573b73a9..730e367f43ae 100644 Binary files a/icons/mob/xenos/wounds.dmi and b/icons/mob/xenos/wounds.dmi differ diff --git a/icons/obj/items/clothing/backpacks.dmi b/icons/obj/items/clothing/backpacks.dmi index 4119b32a09cf..fa03f0434fb5 100644 Binary files a/icons/obj/items/clothing/backpacks.dmi and b/icons/obj/items/clothing/backpacks.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 8b525fd568d6..c8bf32b00b40 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ diff --git a/map_config/maps.txt b/map_config/maps.txt index ba0bd17a89c7..885b1e76faad 100644 --- a/map_config/maps.txt +++ b/map_config/maps.txt @@ -44,8 +44,6 @@ map ice_colony_v2 endmap map shivas_snowball - voteweight 0 - disabled endmap map kutjevo diff --git a/maps/corsat.json b/maps/corsat.json index 31df51cb5cb8..87a41e840d61 100644 --- a/maps/corsat.json +++ b/maps/corsat.json @@ -13,7 +13,7 @@ "/datum/equipment_preset/survivor/goon", "/datum/equipment_preset/survivor/doctor/corsat", "/datum/equipment_preset/survivor/security/corsat", - "/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat", + "/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/corsat", "/datum/equipment_preset/survivor/engineer/corsat", "/datum/equipment_preset/survivor/clf", "/datum/equipment_preset/survivor/civilian" diff --git a/maps/desert_dam.json b/maps/desert_dam.json index b4e535e893d6..6df419583cd3 100644 --- a/maps/desert_dam.json +++ b/maps/desert_dam.json @@ -7,7 +7,7 @@ "/datum/equipment_preset/survivor/doctor/trijent", "/datum/equipment_preset/survivor/roughneck", "/datum/equipment_preset/survivor/chaplain/trijent", - "/datum/equipment_preset/survivor/interstellar_commerce_commission_liason", + "/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison", "/datum/equipment_preset/survivor/colonial_marshal", "/datum/equipment_preset/survivor/engineer/trijent", "/datum/equipment_preset/survivor/engineer/trijent/hydro", diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm index b37d42f1a55f..ab98e02cb6e4 100644 --- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm +++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm @@ -31053,7 +31053,7 @@ }, /area/fiorina/station/park) "sRv" = ( -/obj/item/clothing/shoes/marine/upp_knife, +/obj/item/clothing/shoes/marine/upp/knife, /turf/open/floor/prison, /area/fiorina/station/lowsec) "sRE" = ( diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index 60847e12bae1..b43c34586c5c 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -17,10 +17,6 @@ /obj/structure/girder, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/medseceng) -"aaf" = ( -/obj/item/lightstick/planted, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/cp_s_research) "aag" = ( /obj/structure/bed/chair{ dir = 4 @@ -113,29 +109,20 @@ /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_lz2) "aat" = ( -/obj/structure/ice/thin/single{ - opacity = 1; - unacidable = 0 +/obj/item/tool/shovel/snow{ + pixel_y = 8 }, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) +/obj/item/tool/shovel/snow, +/obj/structure/surface/rack, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "aau" = ( /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "aav" = ( -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) -"aaw" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large2" - }, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) +/area/shiva/exterior/telecomm/lz1_north) "aax" = ( /obj/structure/prop/ice_colony/surveying_device{ layer = 3.01; @@ -176,10 +163,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/right_spiders) -"aaE" = ( -/mob/living/simple_animal/hostile/giant_spider/nurse, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaF" = ( /obj/structure/platform/strata{ dir = 4 @@ -226,10 +209,6 @@ /obj/item/tool/pickaxe/drill, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_colony_grounds) -"aaL" = ( -/obj/effect/spider/cocoon, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaM" = ( /obj/structure/platform/strata{ dir = 4 @@ -247,10 +226,6 @@ /obj/item/explosive/plastic, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_colony_grounds) -"aaP" = ( -/mob/living/simple_animal/hostile/giant_spider/hunter, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaQ" = ( /obj/effect/spider/stickyweb, /obj/item/clothing/head/helmet/marine/sof, @@ -272,12 +247,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_lz2) -"aaU" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large3" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "aaV" = ( /obj/effect/spider/stickyweb, /obj/effect/spider/cocoon{ @@ -301,7 +270,7 @@ "aaZ" = ( /obj/structure/fence, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/warehouse/caves) +/area/shiva/interior/caves/research_caves) "aba" = ( /obj/item/device/flashlight/lamp/tripod/grey, /turf/open/auto_turf/snow/layer3, @@ -455,7 +424,7 @@ /area/shiva/exterior/cp_lz2) "abv" = ( /obj/structure/prop/ice_colony/surveying_device, -/turf/open/auto_turf/ice/layer1, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "abw" = ( /obj/item/lightstick/red/spoke/planted{ @@ -493,20 +462,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"abC" = ( -/mob/living/simple_animal/hostile/giant_spider/nurse, -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) -"abD" = ( -/obj/effect/spider/cocoon, -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "abE" = ( /obj/effect/landmark/hunter_primary, /turf/open/auto_turf/ice/layer1, @@ -521,11 +476,6 @@ /obj/effect/landmark/hunter_secondary, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"abI" = ( -/obj/effect/spider/stickyweb, -/obj/item/device/flashlight/lamp/tripod/grey, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "abJ" = ( /turf/open/shuttle/elevator/grating, /area/shiva/interior/colony/research_hab) @@ -535,11 +485,6 @@ }, /turf/open/auto_turf/ice/layer2, /area/shiva/interior/caves/right_spiders) -"abL" = ( -/obj/effect/spider/cocoon, -/obj/effect/spider/stickyweb, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "abM" = ( /turf/closed/shuttle/elevator{ dir = 1 @@ -549,25 +494,6 @@ /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/right_spiders) -"abO" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large3" - }, -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) -"abP" = ( -/obj/structure/prop/ice_colony/surveying_device{ - dir = 4 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) -"abQ" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "abR" = ( /obj/structure/flora/grass/tallgrass/ice, /obj/structure/flora/bush/ausbushes/lavendergrass, @@ -579,12 +505,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"abT" = ( -/obj/structure/tunnel{ - id = "north_research_tunnel" - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "abU" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 1 @@ -631,7 +551,7 @@ "abZ" = ( /obj/item/lightstick/planted, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "aca" = ( /obj/item/tank/oxygen, /obj/item/tank/oxygen, @@ -649,17 +569,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/research_hab) -"acc" = ( -/obj/item/tool/shovel/spade{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) -"acd" = ( -/obj/structure/machinery/space_heater, -/turf/open/auto_turf/ice/layer1, -/area/shiva/exterior/research_alley) "ace" = ( /turf/closed/shuttle/elevator/gears, /area/shiva/interior/colony/central) @@ -809,16 +718,6 @@ "acL" = ( /turf/closed/shuttle/elevator/arrivals, /area/shiva/interior/colony/central) -"acM" = ( -/mob/living/simple_animal/hostile/retaliate/clown{ - desc = "Uh oh, looks like Gonzo got blocked by a cave-in. How is he gonna get out of this one?"; - health = 10000; - move_to_delay = 2; - name = "Gonzo the Magnificent"; - rapid = 1 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/oob/dev_room) "acN" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/colony{ name = "\improper Underground Security Interrogation"; @@ -826,12 +725,6 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) -"acO" = ( -/obj/effect/decal/hefa_cult_decals/d96{ - desc = "Original map by Infernus, remapped by Triiodine." - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/oob/dev_room) "acP" = ( /obj/effect/landmark/xeno_spawn, /turf/open/auto_turf/ice/layer1, @@ -1553,7 +1446,7 @@ "agy" = ( /obj/item/lightstick/planted, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "agz" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor{ @@ -1700,13 +1593,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"ahB" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva, -/area/shiva/interior/colony/research_hab) "ahC" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassbb_2" @@ -2115,9 +2001,8 @@ /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) "ajy" = ( -/obj/structure/machinery/colony_floodlight, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/turf/open/floor/shiva, +/area/shiva/interior/caves/cp_camp) "ajD" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -2230,7 +2115,7 @@ "akf" = ( /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "akh" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/shiva{ @@ -2261,6 +2146,7 @@ /obj/structure/barricade/snow{ dir = 4 }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard/fortbiceps) "akr" = ( @@ -2741,16 +2627,6 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) -"ano" = ( -/obj/structure/closet/toolcloset, -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/aerodrome) "anq" = ( /obj/structure/toilet, /turf/open/floor/plating, @@ -3526,10 +3402,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_lz2) -"asC" = ( -/obj/structure/fence, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "asE" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 5 @@ -3705,10 +3577,6 @@ }, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/cp_camp) -"atJ" = ( -/obj/structure/flora/tree/dead/tree_3, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "atK" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer1, @@ -3959,6 +3827,10 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) +"awP" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "awY" = ( /obj/structure/flora/grass/tallgrass/ice, /obj/structure/flora/bush/ausbushes/lavendergrass{ @@ -4230,6 +4102,10 @@ icon_state = "yellowcorners" }, /area/shiva/interior/garage) +"ayz" = ( +/obj/structure/fence, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "ayB" = ( /obj/structure/surface/table, /obj/item/device/flashlight, @@ -4253,12 +4129,6 @@ /obj/item/clothing/shoes/snow, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_lz2) -"ayJ" = ( -/obj/structure/prop/invuln/ice_prefab/standalone{ - icon_state = "white" - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "ayK" = ( /obj/structure/prop/invuln/ice_prefab, /turf/open/auto_turf/snow/layer0, @@ -5179,10 +5049,6 @@ icon_state = "floor3" }, /area/shiva/interior/bar) -"aHz" = ( -/obj/structure/flora/tree/dead/tree_1, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "aHB" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassbb_1" @@ -5219,19 +5085,12 @@ /obj/item/weapon/wirerod, /turf/open/shuttle/elevator/grating, /area/shiva/interior/aerodrome) -"aIO" = ( -/turf/closed/wall/shiva/prefabricated/red, -/area/shiva/interior/oob) "aJc" = ( /obj/structure/largecrate/random/mini/med, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/shiva/interior/valley_huts/no2) -"aJd" = ( -/obj/structure/surface/table/reinforced/prison, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "aJe" = ( /obj/effect/spawner/random/toolbox, /obj/effect/landmark/crap_item, @@ -5296,12 +5155,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"aJR" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassgb_2" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "aJU" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -5312,9 +5165,6 @@ /obj/structure/prop/invuln/ice_prefab/standalone/trim{ icon_state = "pink_trim" }, -/obj/structure/machinery/portable_atmospherics/powered/scrubber{ - icon_state = "psiphon:1" - }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/valley) "aKn" = ( @@ -5323,18 +5173,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/valley) -"aKo" = ( -/obj/structure/surface/rack, -/obj/item/ammo_rcd{ - pixel_x = -4 - }, -/obj/item/ammo_rcd{ - pixel_x = 4 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/caves/cp_camp) "aKp" = ( /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/snow/layer3, @@ -5346,33 +5184,12 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) -"aKr" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/bar) "aKv" = ( /obj/item/stack/folding_barricade, /turf/open/floor/shiva{ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) -"aKA" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/bar) -"aKD" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/bar) "aKJ" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; @@ -5392,15 +5209,6 @@ }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"aKP" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/lz1_valley) "aKQ" = ( /obj/structure/machinery/computer/cameras, /obj/structure/surface/table/reinforced/prison, @@ -5498,24 +5306,11 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard/cp_bar) -"aMk" = ( -/obj/effect/decal/cleanable/blood{ - dir = 4; - icon_state = "gib6" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/junkyard/cp_bar) "aMl" = ( /obj/effect/landmark/corpsespawner/engineer, /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) -"aMn" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/lz1_valley) "aMs" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -5550,16 +5345,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) -"aMy" = ( -/obj/structure/machinery/space_heater, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "aMz" = ( /obj/structure/machinery/smartfridge{ density = 0; @@ -5648,13 +5433,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"aMZ" = ( -/obj/structure/machinery/power/port_gen/pacman, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) "aNb" = ( /obj/structure/safe, /obj/item/spacecash/c1000{ @@ -5785,27 +5563,11 @@ /obj/structure/machinery/colony_floodlight, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_colony_grounds) -"aOk" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim{ - icon_state = "pink_trim" - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/valley) -"aOl" = ( -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - dir = 1 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/valley) "aOo" = ( /obj/item/dogtag, /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/bar) -"aOp" = ( -/obj/item/tool/shovel/snow, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/valley) "aOu" = ( /turf/closed/wall/shiva/ice, /area/shiva/interior/caves/medseceng_caves) @@ -5924,15 +5686,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/central) -"aPX" = ( -/obj/structure/prop/invuln/ice_prefab/trim{ - dir = 4 - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - dir = 1 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "aQb" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/shiva{ @@ -5946,19 +5699,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"aQh" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 2.99; - pixel_x = -13; - pixel_y = 28 - }, -/obj/structure/largecrate/random/mini/small_case/b, -/obj/structure/largecrate/random/mini/small_case{ - pixel_x = 14; - pixel_y = -3 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aQi" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/auto_turf/snow/layer2, @@ -6020,20 +5760,6 @@ /obj/item/stool, /turf/open/floor/shiva, /area/shiva/interior/bar) -"aRo" = ( -/obj/structure/largecrate/random/mini/med{ - pixel_x = -7; - pixel_y = 9 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) -"aRp" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim{ - icon_state = "pink_trim" - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aRs" = ( /obj/structure/closet/radiation, /obj/structure/machinery/light/double{ @@ -6120,25 +5846,6 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/shiva, /area/shiva/interior/aerodrome) -"aSC" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 3.1; - pixel_x = -13; - pixel_y = 25 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) -"aSF" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 8; - pixel_y = -8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) -"aSG" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aSI" = ( /obj/structure/closet/radiation, /turf/open/floor/shiva{ @@ -6185,7 +5892,7 @@ name = "\improper Anti-Freeze Lounge" }, /turf/open/floor/plating, -/area/shiva/interior/bar) +/area/shiva/exterior/cp_s_research) "aSX" = ( /obj/structure/largecrate/random/mini/ammo, /turf/open/floor/plating, @@ -6232,52 +5939,10 @@ /obj/effect/spawner/random/tool, /turf/open/floor/shiva, /area/shiva/interior/aerodrome) -"aTr" = ( -/obj/item/tool/shovel/snow{ - pixel_y = 8 - }, -/obj/item/tool/shovel/snow, -/obj/structure/surface/rack, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) -"aTt" = ( -/obj/item/lightstick/red/variant/planted{ - pixel_x = 11; - pixel_y = 11 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) -"aTw" = ( -/obj/structure/prop/ice_colony/soil_net, -/obj/item/tool/shovel/spade{ - layer = 2.99; - pixel_x = -9; - pixel_y = -11 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "aTE" = ( /obj/structure/largecrate/random/barrel, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) -"aTH" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 9; - pixel_y = 8 - }, -/obj/structure/largecrate/random/case, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) -"aTL" = ( -/obj/structure/largecrate/random/case{ - pixel_y = 11 - }, -/obj/structure/largecrate/random/mini/chest/b{ - pixel_x = -4; - pixel_y = -5 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) "aTO" = ( /obj/item/stack/rods, /turf/open/asphalt/cement, @@ -6377,21 +6042,6 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) -"aUP" = ( -/obj/structure/surface/rack, -/obj/item/stack/cable_coil/blue, -/obj/item/stack/cable_coil/orange{ - pixel_y = 6 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) -"aUQ" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 12; - pixel_y = 25 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) "aUS" = ( /obj/structure/machinery/disposal, /turf/open/floor/shiva{ @@ -6582,13 +6232,6 @@ icon_state = "floor7" }, /area/shiva/interior/aerodrome) -"aVW" = ( -/obj/item/lightstick/red/variant/planted{ - pixel_x = -7; - pixel_y = -5 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "aWb" = ( /obj/structure/foamed_metal, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, @@ -6650,16 +6293,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"aWG" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -11; - pixel_y = 20 - }, -/obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/junkyard) "aWH" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 4 @@ -6817,28 +6450,6 @@ opacity = 0 }, /area/shiva/interior/aerodrome) -"aYf" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/bed/chair/dropship/passenger{ - dir = 4 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) -"aYg" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/bed/chair/dropship/passenger{ - dir = 8 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) "aYx" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_3" @@ -6848,10 +6459,6 @@ /obj/structure/window_frame/shiva, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"aYF" = ( -/obj/item/stack/rods, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "aYU" = ( /obj/structure/machinery/computer/arcade, /turf/open/floor/shiva{ @@ -6955,9 +6562,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/bar) -"bax" = ( -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "baN" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/tool/pen/blue{ @@ -7024,12 +6628,6 @@ /obj/item/stack/rods, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"bbt" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/valley) "bbw" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -7039,12 +6637,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/deck) -"bbF" = ( -/obj/structure/platform/strata{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "bbG" = ( /obj/structure/ice/thin/indestructible{ dir = 4; @@ -7102,33 +6694,11 @@ }, /turf/open/gm/river, /area/shiva/interior/warehouse/caves) -"bdk" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 4 - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) "bdT" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile2" }, /area/shiva/interior/colony/medseceng) -"bea" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 8 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shiva/interior/aerodrome) "ben" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/telecomm/lz1_north) @@ -7187,10 +6757,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"bfB" = ( -/obj/effect/spawner/random/tool, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/valley) "bfL" = ( /obj/structure/largecrate/random/mini/wooden, /turf/open/auto_turf/snow/layer2, @@ -7226,7 +6792,7 @@ icon_state = "snowgrassall_1" }, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "bhI" = ( /turf/open/floor/shiva{ dir = 6; @@ -7282,6 +6848,10 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/central) +"bkK" = ( +/obj/structure/inflatable/popped, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "bkP" = ( /obj/effect/spider/cocoon{ icon_state = "cocoon_large2" @@ -7300,6 +6870,10 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) +"bme" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/valley) "bmg" = ( /obj/structure/machinery/space_heater, /turf/open/auto_turf/snow/layer2, @@ -7339,12 +6913,6 @@ /obj/structure/bed/chair, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) -"boz" = ( -/obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "boA" = ( /obj/item/tool/crowbar, /turf/open/auto_turf/snow/layer1, @@ -7357,12 +6925,6 @@ /obj/docking_port/stationary/marine_dropship/lz1, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) -"boS" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassbb_3" - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/cp_s_research) "boT" = ( /obj/structure/largecrate/random/mini/wooden{ pixel_y = 6 @@ -7617,10 +7179,14 @@ /obj/structure/largecrate/random/barrel, /turf/open/floor/plating, /area/shiva/interior/colony/central) -"bBT" = ( -/obj/structure/inflatable/popped, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) +"bCr" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/shuttle/dropship/flight/lz1, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/lz1_valley) "bDx" = ( /obj/item/reagent_container/food/drinks/flask/vacuumflask, /turf/open/floor/shiva, @@ -7660,16 +7226,6 @@ }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"bGk" = ( -/obj/item/stack/rods, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) -"bGx" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "bGU" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 9 @@ -7868,16 +7424,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"bQX" = ( -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - pixel_y = 21 - }, -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - pixel_x = -7; - pixel_y = 13 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "bQZ" = ( /turf/closed/wall/shiva/prefabricated/reinforced/hull, /area/shiva/interior/caves/s_lz2) @@ -7890,7 +7436,7 @@ "bRU" = ( /obj/structure/flora/tree/dead/tree_5, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "bSB" = ( /obj/structure/prop/invuln{ desc = "big pile energy."; @@ -8046,6 +7592,16 @@ icon_state = "red" }, /area/shiva/interior/colony/central) +"bYV" = ( +/obj/structure/machinery/disposal, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/aerodrome) "bZZ" = ( /obj/effect/landmark/objective_landmark/far, /turf/open/floor/shiva{ @@ -8088,6 +7644,10 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) +"cbG" = ( +/obj/effect/spawner/random/tool, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "cbW" = ( /obj/structure/largecrate/random/mini/med, /turf/open/floor/plating, @@ -8105,6 +7665,13 @@ /obj/structure/prop/invuln/ice_prefab/standalone, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"ccT" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "cdh" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer2, @@ -8169,6 +7736,13 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"cid" = ( +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) "cio" = ( /turf/open/floor/shiva{ icon_state = "floor3" @@ -8212,9 +7786,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"clK" = ( -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/left_spiders) "cnb" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/telecomm/lz2_northeast) @@ -8272,6 +7843,13 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) +"cps" = ( +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "cpC" = ( /obj/item/lightstick/red/variant/planted, /turf/open/auto_turf/snow/layer1, @@ -8398,10 +7976,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) -"cyW" = ( -/obj/structure/girder, -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/cp_camp) "czf" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassall_1" @@ -8440,10 +8014,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"cBs" = ( -/obj/structure/machinery/cell_charger, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "cBB" = ( /obj/item/clothing/shoes/snow, /obj/structure/surface/rack, @@ -8482,16 +8052,6 @@ /obj/structure/machinery/vending/cigarette, /turf/open/floor/shiva, /area/shiva/interior/bar) -"cBU" = ( -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/research_caves) -"cBX" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -16; - pixel_y = -3 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "cCI" = ( /turf/open/floor/shiva{ dir = 8; @@ -8516,10 +8076,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"cEV" = ( -/obj/structure/inflatable, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "cFa" = ( /obj/structure/machinery/light/double{ dir = 4; @@ -8593,10 +8149,26 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) +"cIs" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = 12; + pixel_y = 28 + }, +/turf/closed/wall/shiva/ice, +/area/shiva/interior/caves/cp_camp) "cIV" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) +/area/shiva/interior/warehouse/caves) +"cIZ" = ( +/obj/structure/surface/rack, +/obj/item/stack/cable_coil/blue, +/obj/item/stack/cable_coil/orange{ + pixel_y = 6 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "cJy" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ @@ -8791,6 +8363,13 @@ icon_state = "bluecorners" }, /area/shiva/interior/colony/central) +"cTU" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/lz1_valley) "cTY" = ( /obj/item/ammo_magazine/flamer_tank, /turf/open/floor/shiva{ @@ -8869,6 +8448,15 @@ /obj/structure/prop/ice_colony/surveying_device, /turf/open/auto_turf/snow/layer2, /area/shiva/interior/caves/cp_camp) +"cXU" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) "cYa" = ( /turf/open/floor/shiva{ dir = 8; @@ -8964,11 +8552,19 @@ "daD" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) +"dbv" = ( +/obj/structure/largecrate/random/case, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "dbH" = ( /turf/closed/shuttle/ert{ icon_state = "stan1" }, /area/shiva/interior/aerodrome) +"dbO" = ( +/obj/structure/prop/invuln/ice_prefab/standalone, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "dbQ" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -8977,6 +8573,17 @@ icon_state = "wredfull" }, /area/shiva/interior/colony/medseceng) +"dcn" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = -13; + pixel_y = 28 + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "dcu" = ( /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer2, @@ -8996,12 +8603,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"ddA" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassbb_1" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "dex" = ( /obj/structure/machinery/photocopier, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -9038,10 +8639,6 @@ /obj/vehicle/train/cargo/engine, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard/cp_bar) -"dhx" = ( -/obj/item/device/binoculars/civ, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) "diL" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -9130,6 +8727,11 @@ /obj/structure/window/reinforced, /turf/open/floor/wood, /area/shiva/interior/colony/central) +"dnj" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/snow, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "dnv" = ( /obj/structure/prop/invuln/minecart_tracks/bumper{ dir = 5 @@ -9188,6 +8790,11 @@ /obj/item/device/flashlight/lamp, /turf/open/floor/carpet, /area/shiva/interior/colony/central) +"dro" = ( +/obj/structure/platform/strata, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "drx" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -9308,7 +8915,7 @@ "dyt" = ( /obj/vehicle/train/cargo/trolley, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "dze" = ( /obj/effect/decal/warning_stripes{ icon_state = "W-corner" @@ -9361,14 +8968,10 @@ icon_state = "stan2" }, /area/shiva/interior/aerodrome) -"dCY" = ( -/obj/structure/ice/thin/single{ - opacity = 1; - unacidable = 0 - }, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +"dDj" = ( +/obj/item/tool/shovel/snow, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "dDo" = ( /obj/structure/machinery/landinglight/ds1/spoke, /turf/open/floor/shiva{ @@ -9397,12 +9000,6 @@ dir = 1 }, /area/shiva/interior/colony/central) -"dHr" = ( -/obj/structure/flora/bush/snow{ - icon_state = "snowgrassall_3" - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "dIF" = ( /obj/structure/machinery/photocopier, /turf/open/floor/shiva{ @@ -9534,13 +9131,8 @@ }, /area/shiva/interior/colony/n_admin) "dRb" = ( -/turf/closed/wall/shiva/ice, -/area/shiva/interior/caves/left_spiders) -"dRi" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 10 - }, -/turf/open/auto_turf/ice/layer1, +/obj/structure/fence, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "dTj" = ( /obj/structure/machinery/space_heater, @@ -9703,12 +9295,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"eaB" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/lz1_valley) "ebK" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer2, @@ -9732,9 +9318,15 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) +"ecx" = ( +/obj/structure/largecrate/random, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/caves/cp_camp) "ecz" = ( /obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "ecZ" = ( /turf/open/floor/shiva{ @@ -9784,10 +9376,8 @@ }, /turf/open/floor/wood, /area/shiva/interior/colony/botany) -"ehe" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-entrance" - }, +"ehO" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/shiva/prefabricated/blue, /area/shiva/interior/colony/research_hab) "ehV" = ( @@ -9825,6 +9415,13 @@ /obj/structure/largecrate/random/case/double, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"elf" = ( +/obj/item/reagent_container/glass/bucket{ + pixel_x = 8; + pixel_y = -8 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "eln" = ( /obj/structure/surface/table, /obj/item/book/manual/engineering_guide{ @@ -9877,9 +9474,6 @@ /obj/structure/prop/invuln/ice_prefab, /turf/open/auto_turf/ice/layer0, /area/shiva/exterior/cp_lz2) -"enh" = ( -/turf/open/auto_turf/ice/layer1, -/area/shiva/exterior/research_alley) "eni" = ( /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) @@ -10142,13 +9736,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"eGe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "eGq" = ( /obj/structure/platform/strata, /obj/structure/platform/strata{ @@ -10235,17 +9822,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"eKp" = ( -/obj/item/reagent_container/glass/bucket{ - pixel_x = 8; - pixel_y = -8 - }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = -2; - pixel_y = -8 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "eKY" = ( /obj/structure/closet/radiation, /obj/effect/landmark/crap_item, @@ -10263,11 +9839,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"eMx" = ( -/obj/structure/surface/rack, -/obj/item/tool/lighter/zippo, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "eNr" = ( /obj/structure/bed, /obj/effect/landmark/corpsespawner/prisoner, @@ -10353,11 +9924,14 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"eSc" = ( -/obj/structure/surface/rack, -/obj/item/tool/pickaxe/plasmacutter, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) +"eSf" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = 12; + pixel_y = 28 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "eSt" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/shiva{ @@ -10379,6 +9953,12 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_colony_grounds) +"eUn" = ( +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "eUT" = ( /turf/closed/wall/shiva/prefabricated/white, /area/shiva/exterior/cp_lz2) @@ -10409,6 +9989,10 @@ icon_state = "snow_mat" }, /area/shiva/exterior/cp_lz2) +"eWl" = ( +/obj/structure/inflatable/popped, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "eWn" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/shiva{ @@ -10433,6 +10017,10 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_lz2) +"eXQ" = ( +/obj/structure/inflatable/popped, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "eYH" = ( /turf/closed/wall/shiva/prefabricated/reinforced/hull, /area/shiva/exterior/cp_lz2) @@ -10465,17 +10053,6 @@ /obj/effect/landmark/ert_spawns/groundside_xeno, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/medseceng_caves) -"faR" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 8; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 5; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "faT" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 8; @@ -10483,20 +10060,6 @@ }, /turf/open/auto_turf/ice/layer0, /area/shiva/exterior/cp_lz2) -"faW" = ( -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - dir = 1 - }, -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - dir = 1; - pixel_y = 5 - }, -/obj/structure/prop/ice_colony/poly_kevlon_roll{ - dir = 1; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "fbf" = ( /obj/effect/decal/cleanable/blood/oil/streak, /obj/effect/decal/cleanable/dirt, @@ -10510,6 +10073,11 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) +"fbS" = ( +/obj/structure/flora/grass/tallgrass/ice/corner, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "fcq" = ( /obj/structure/closet/coffin, /obj/effect/landmark/objective_landmark/close, @@ -10633,9 +10201,6 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/medseceng) -"fjv" = ( -/turf/open/auto_turf/snow/layer4, -/area/shiva/interior/caves/research_caves) "fjI" = ( /obj/structure/surface/table, /obj/item/storage/firstaid/o2, @@ -10718,13 +10283,20 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/wood, /area/shiva/interior/colony/botany) +"fmo" = ( +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "fnw" = ( /obj/structure/stairs/perspective/ice{ dir = 1; icon_state = "p_stair_full" }, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/lz1_valley) +/area/shiva/interior/caves/research_caves) "fnx" = ( /turf/open/floor/shiva{ dir = 8; @@ -10753,13 +10325,13 @@ icon_state = "floor7" }, /area/shiva/interior/aerodrome) -"fqb" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 12; - pixel_y = 25 +"fpF" = ( +/obj/structure/stairs/perspective/ice{ + dir = 8; + icon_state = "p_stair_sn_full_cap" }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) +/area/shiva/interior/warehouse/caves) "fqJ" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -10859,7 +10431,7 @@ "fxy" = ( /obj/item/lightstick/variant/planted, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "fxJ" = ( /obj/structure/surface/table, /obj/item/clipboard{ @@ -10920,6 +10492,10 @@ icon_state = "greenfull" }, /area/shiva/interior/colony/n_admin) +"fBA" = ( +/obj/structure/machinery/space_heater, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "fBJ" = ( /obj/structure/surface/table/woodentable, /obj/item/paper_bin, @@ -10945,6 +10521,10 @@ dir = 1 }, /area/shiva/interior/colony/botany) +"fDH" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/junkyard) "fEf" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -11044,7 +10624,7 @@ "fHx" = ( /obj/vehicle/train/cargo/engine, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "fHH" = ( /obj/item/stack/sheet/metal, /turf/open/floor/shiva{ @@ -11148,6 +10728,21 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"fLk" = ( +/obj/item/clothing/shoes/snow, +/obj/structure/surface/rack, +/obj/item/clothing/shoes/snow, +/obj/item/clothing/suit/storage/snow_suit, +/obj/item/clothing/suit/storage/snow_suit, +/obj/item/tank/emergency_oxygen/engi, +/obj/effect/decal/strata_decals/grime/grime3{ + dir = 8 + }, +/obj/item/clothing/mask/rebreather, +/obj/item/tank/emergency_oxygen/engi, +/obj/item/clothing/mask/rebreather, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/colony/research_hab) "fLz" = ( /obj/structure/machinery/landinglight/ds2{ dir = 4 @@ -11192,10 +10787,25 @@ /obj/structure/bed/chair/office/dark, /turf/open/floor/carpet, /area/shiva/interior/colony/medseceng) +"fNf" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/platform/strata{ + dir = 1 + }, +/turf/open/gm/river, +/area/shiva/interior/warehouse/caves) "fNE" = ( /obj/structure/window/framed/shiva, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"fOa" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -11 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "fOE" = ( /obj/item/ammo_magazine/rifle/boltaction, /turf/open/floor/shiva{ @@ -11261,23 +10871,32 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) -"fSR" = ( -/turf/open/floor/shiva, -/area/shiva/interior/caves/research_caves) "fTX" = ( /obj/structure/machinery/space_heater, /turf/open/floor/shiva{ dir = 1 }, /area/shiva/interior/bar) +"fUP" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "bluefull" + }, +/area/shiva/interior/aerodrome) "fUZ" = ( /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard/cp_bar) -"fVl" = ( -/obj/structure/largecrate/random, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +"fVq" = ( +/obj/structure/prop/invuln/ice_prefab/standalone{ + icon_state = "pink" + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "fVw" = ( /obj/structure/prop/ice_colony/dense/planter_box/hydro{ density = 0 @@ -11316,14 +10935,33 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"fXp" = ( +/obj/structure/prop/invuln{ + desc = "The mounting points are ground down from heavy use. They'll need some maintenance work before they can be used again."; + icon = 'icons/obj/structures/props/almayer_props.dmi'; + icon_state = "equip_base"; + name = "shuttle attachment point" + }, +/obj/effect/landmark/objective_landmark/close, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/shuttle{ + icon_state = "floor7" + }, +/area/shiva/interior/aerodrome) +"fXr" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "fXB" = ( /obj/structure/largecrate/random/case/double, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"fXQ" = ( -/obj/structure/largecrate/random/case, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "fXX" = ( /turf/open/floor/plating, /area/shiva/interior/caves/research_caves) @@ -11465,29 +11103,11 @@ /obj/item/stack/rods, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/warehouse) -"ggv" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 5; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 6; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "ggC" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 11 }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "ggL" = ( /obj/structure/inflatable/popped, @@ -11524,6 +11144,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"gik" = ( +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/aerodrome) "giH" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/colony, /turf/open/floor/plating, @@ -11596,6 +11219,9 @@ dir = 8 }, /area/shiva/interior/colony/central) +"goe" = ( +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/aerodrome) "goh" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" @@ -11620,6 +11246,13 @@ /obj/structure/machinery/space_heater, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"gpj" = ( +/obj/item/lightstick/red/variant/planted{ + pixel_x = -7; + pixel_y = -5 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "gpn" = ( /obj/structure/largecrate/random/case, /turf/open/floor/shiva{ @@ -11629,6 +11262,17 @@ "gpz" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/research_caves) +"gpF" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "bluefull" + }, +/area/shiva/interior/aerodrome) "gpS" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassbb_3" @@ -11674,6 +11318,16 @@ dir = 1 }, /area/shiva/interior/caves/s_lz2) +"grk" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "gso" = ( /obj/structure/platform/strata, /turf/open/gm/river, @@ -11739,12 +11393,16 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"guH" = ( +/obj/structure/prop/ice_colony/surveying_device, +/turf/open/auto_turf/ice/layer0, +/area/shiva/exterior/cp_s_research) "gva" = ( /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, /obj/item/lightstick/planted, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "gvz" = ( /turf/open/floor{ @@ -11757,12 +11415,6 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/interior/colony/medseceng) -"gvY" = ( -/obj/structure/prop/ice_colony/surveying_device{ - dir = 1 - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "gwq" = ( /obj/structure/bed/chair/comfy/blue, /turf/open/floor/shiva{ @@ -11887,6 +11539,12 @@ }, /turf/closed/wall/shiva/ice, /area/shiva/interior/caves/cp_camp) +"gEn" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber{ + icon_state = "psiphon:1" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "gFb" = ( /obj/structure/surface/table, /obj/structure/window{ @@ -11991,28 +11649,19 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"gJk" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "gJo" = ( /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/junkyard/cp_bar) +"gJF" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "gJI" = ( /obj/structure/surface/rack, /obj/item/stack/cable_coil, /obj/item/tool/crowbar, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"gKf" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva, -/area/shiva/interior/bar) "gKE" = ( /obj/structure/surface/table, /obj/item/stock_parts/matter_bin{ @@ -12128,6 +11777,16 @@ dir = 10 }, /area/shiva/interior/aerodrome) +"gQK" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "gQL" = ( /obj/structure/closet/cabinet, /obj/item/clothing/under/darkred, @@ -12257,6 +11916,10 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"gXu" = ( +/obj/structure/largecrate/random/barrel/green, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "gXS" = ( /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/medseceng) @@ -12283,6 +11946,14 @@ /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/cp_colony_grounds) +"gZi" = ( +/obj/structure/closet/toolcloset, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) +"gZk" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "gZG" = ( /obj/structure/machinery/door/airlock/almayer/medical/colony{ dir = 2; @@ -12308,6 +11979,13 @@ /obj/structure/platform/strata, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/oob/dev_room) +"hbp" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/junkyard) "hbu" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/snacks/flour{ @@ -12325,7 +12003,7 @@ /area/shiva/interior/warehouse/caves) "hbD" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 10 + dir = 6 }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) @@ -12341,6 +12019,16 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"hfw" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/research_hab) "hfN" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ @@ -12362,6 +12050,18 @@ /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/interior/telecomm/lz1_biceps) +"hhT" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/lz1_valley) +"hic" = ( +/obj/structure/platform_decoration/strata{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/lz1_valley) "hif" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -12377,6 +12077,13 @@ /obj/structure/machinery/disposal, /turf/open/floor/wood, /area/shiva/interior/colony/central) +"hip" = ( +/obj/structure/platform/strata, +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/gm/river, +/area/shiva/interior/warehouse/caves) "hju" = ( /turf/open/floor/shiva{ dir = 8; @@ -12400,10 +12107,14 @@ }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"hlh" = ( -/obj/item/tool/pickaxe, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) +"hkZ" = ( +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent4"; + pixel_x = -4; + pixel_y = 10 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "hlm" = ( /obj/structure/bed/chair{ dir = 8 @@ -12477,6 +12188,10 @@ "hng" = ( /turf/closed/wall/shiva/ice, /area/shiva/exterior/cp_colony_grounds) +"hnj" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "hnw" = ( /obj/structure/coatrack, /turf/open/floor/wood, @@ -12562,9 +12277,6 @@ icon_state = "wredfull" }, /area/shiva/interior/colony/medseceng) -"hsu" = ( -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) "hsw" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/circuitboard, @@ -12672,6 +12384,15 @@ /obj/structure/flora/tree/dead/tree_2, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_s_research) +"hye" = ( +/obj/structure/prop/ice_colony/flamingo{ + dir = 1 + }, +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/lz1_valley) "hyu" = ( /turf/open/floor/shiva{ icon_state = "bluefull" @@ -12715,6 +12436,10 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"hBn" = ( +/obj/effect/landmark/hunter_secondary, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "hBq" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/interior/caves/cp_camp) @@ -12748,7 +12473,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 8 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "hCt" = ( /obj/structure/machinery/firealarm{ @@ -12826,7 +12551,7 @@ icon_state = "p_stair_sn_full_cap" }, /obj/structure/platform/shiva/catwalk{ - dir = 8 + dir = 4 }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) @@ -12840,6 +12565,18 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/deck) +"hEx" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) +"hEB" = ( +/obj/structure/surface/rack, +/obj/item/tool/lighter/zippo, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "hEE" = ( /obj/structure/barricade/handrail/wire{ dir = 8; @@ -12887,6 +12624,15 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard/fortbiceps) +"hHR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/obj/structure/barricade/metal{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "hHV" = ( /obj/structure/surface/table, /obj/structure/machinery/cell_charger, @@ -12905,12 +12651,6 @@ }, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/lz2_fortress) -"hIn" = ( -/obj/structure/platform_decoration/strata{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "hIu" = ( /obj/structure/surface/rack, /obj/item/device/radio{ @@ -12935,10 +12675,6 @@ /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_colony_grounds) -"hJd" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) "hJH" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony, /turf/open/floor/plating, @@ -13035,10 +12771,6 @@ /obj/structure/machinery/light/double, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"hRF" = ( -/obj/structure/inflatable, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "hRK" = ( /obj/effect/decal/cleanable/blood/drip{ icon_state = "3" @@ -13054,6 +12786,12 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) +"hRY" = ( +/obj/structure/stairs/perspective/ice{ + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/ice/layer0, +/area/shiva/interior/warehouse/caves) "hSa" = ( /obj/effect/landmark/static_comms/net_two, /turf/open/auto_turf/ice/layer1, @@ -13126,6 +12864,13 @@ }, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) +"hUA" = ( +/obj/structure/largecrate/random/secure, +/obj/item/ashtray/bronze{ + pixel_y = 7 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "hUG" = ( /obj/effect/landmark/xeno_hive_spawn, /obj/effect/landmark/ert_spawns/groundside_xeno, @@ -13140,13 +12885,6 @@ }, /turf/open/floor/wood, /area/shiva/interior/colony/medseceng) -"hVr" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "hVs" = ( /obj/structure/surface/table, /obj/item/evidencebag{ @@ -13176,16 +12914,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"hWY" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "multi_tiles" - }, -/area/shiva/interior/colony/research_hab) "hXB" = ( /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/snow/layer2, @@ -13264,6 +12992,16 @@ dir = 1 }, /area/shiva/interior/colony/central) +"ibP" = ( +/obj/structure/closet/toolcloset, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/aerodrome) "icC" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -13291,10 +13029,6 @@ icon_state = "kitchen" }, /area/shiva/interior/bar) -"iel" = ( -/obj/structure/prop/ice_colony/surveying_device, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) "ieo" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -13341,12 +13075,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"ifQ" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-cave-complete" - }, -/turf/closed/wall/shiva/ice, -/area/shiva/interior/oob) "igl" = ( /obj/item/paper_bin, /obj/item/tool/pen/blue, @@ -13406,6 +13134,10 @@ /obj/effect/landmark/corpsespawner/wygoon, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/central) +"ijm" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/warehouse/caves) "ijq" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/shiva{ @@ -13419,6 +13151,13 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) +"ijE" = ( +/obj/structure/platform/strata, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "ijP" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -13466,6 +13205,10 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) +"ilW" = ( +/obj/item/lightstick/planted, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "imk" = ( /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer1, @@ -13692,6 +13435,15 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) +"ivE" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/lz1_valley) "ivS" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/medium, @@ -13853,7 +13605,7 @@ /area/shiva/exterior/cp_lz2) "iDy" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 9 + dir = 4 }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) @@ -13870,7 +13622,7 @@ icon_state = "p_stair_sn_full_cap" }, /obj/structure/platform/shiva/catwalk{ - dir = 4 + dir = 8 }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) @@ -13902,13 +13654,12 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) -"iGn" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 +"iHu" = ( +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 8 }, -/turf/open/floor/shiva, -/area/shiva/interior/bar) +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/lz1_valley) "iHN" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/shiva{ @@ -13942,10 +13693,20 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/research_hab) +"iIg" = ( +/obj/structure/stairs/perspective/ice{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/research_caves) "iIP" = ( /obj/item/device/flashlight/lamp/tripod/grey, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) +"iIR" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "iJr" = ( /obj/effect/decal/cleanable/blood{ icon_state = "gib6" @@ -13969,6 +13730,12 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) +"iKW" = ( +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/lz1_valley) "iLf" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = 12; @@ -14012,6 +13779,15 @@ /obj/effect/decal/cleanable/blood, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/colony/central) +"iOp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S-corner" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/lz1_valley) "iOr" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 9 @@ -14086,13 +13862,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) -"iSp" = ( -/obj/item/tool/screwdriver, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) -"iSG" = ( -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "iTQ" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -14268,12 +14037,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) -"iYu" = ( -/obj/structure/surface/rack, -/obj/item/device/flashlight, -/obj/item/device/t_scanner, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "iYC" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/interior/plastic/alt, @@ -14295,9 +14058,6 @@ dir = 1 }, /area/shiva/interior/garage) -"iZI" = ( -/turf/closed/wall/shiva/prefabricated/blue, -/area/shiva/interior/caves/cp_camp) "iZX" = ( /obj/structure/machinery/power/apc{ dir = 4; @@ -14321,6 +14081,9 @@ /obj/item/lightstick/red/planted, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/valley) +"jaT" = ( +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/warehouse/caves) "jaU" = ( /obj/structure/surface/table, /obj/item/device/whistle, @@ -14363,6 +14126,12 @@ }, /turf/open/floor/carpet, /area/shiva/interior/colony/research_hab) +"jfO" = ( +/obj/effect/spider/stickyweb{ + icon_state = "stickyweb2" + }, +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/caves/cp_camp) "jfS" = ( /obj/effect/landmark/nightmare{ insert_tag = "lz2-south-caves" @@ -14379,6 +14148,12 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) +"jhm" = ( +/obj/structure/platform/shiva/catwalk{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/lz1_valley) "jhq" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile" @@ -14410,11 +14185,6 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) -"jjq" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "jkH" = ( /obj/item/lightstick/red/spoke/planted{ layer = 3.1; @@ -14423,16 +14193,12 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) -"jkM" = ( -/obj/structure/machinery/door_control/brbutton{ - id = "hangar_ice_2"; - pixel_y = 28 - }, -/obj/structure/platform/shiva/catwalk{ - dir = 8 +"jld" = ( +/obj/item/shard{ + icon_state = "medium" }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "jlv" = ( /obj/item/stack/sheet/wood, /obj/effect/decal/cleanable/blood{ @@ -14464,21 +14230,6 @@ "jmW" = ( /turf/open/auto_turf/ice/layer2, /area/shiva/interior/caves/cp_camp) -"jnc" = ( -/obj/structure/prop/invuln{ - desc = "The mounting points are ground down from heavy use. They'll need some maintenance work before they can be used again."; - icon = 'icons/obj/structures/props/almayer_props.dmi'; - icon_state = "equip_base"; - name = "shuttle attachment point" - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/shuttle{ - icon_state = "floor7" - }, -/area/shiva/interior/aerodrome) "jny" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, @@ -14532,7 +14283,7 @@ pixel_x = 15; pixel_y = -3 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "jpE" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, @@ -14541,7 +14292,7 @@ "jqo" = ( /obj/item/lightstick/planted, /obj/effect/decal/cleanable/blood/drip, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "jqx" = ( /obj/structure/platform/strata, @@ -14647,6 +14398,13 @@ icon_state = "warnplate" }, /area/shiva/interior/colony/medseceng) +"jzs" = ( +/obj/structure/largecrate/random/mini/wooden{ + pixel_x = -16; + pixel_y = -1 + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/warehouse/caves) "jAg" = ( /turf/open/floor/shiva{ icon_state = "snow_mat" @@ -14713,7 +14471,7 @@ icon_state = "large"; name = "ice shard" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "jDp" = ( /obj/structure/surface/table/woodentable, @@ -14726,6 +14484,14 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"jDv" = ( +/obj/structure/ice/thin/single{ + opacity = 1; + unacidable = 0 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/valley) "jDB" = ( /obj/item/shard, /turf/open/floor/shiva{ @@ -14833,6 +14599,14 @@ }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) +"jKm" = ( +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "vent5"; + pixel_x = 16; + pixel_y = 10 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "jKN" = ( /obj/structure/fence, /turf/open/auto_turf/snow/layer0, @@ -14877,11 +14651,21 @@ icon_state = "chapel" }, /area/shiva/interior/colony/central) +"jNr" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "jOi" = ( /turf/open/floor/shiva{ icon_state = "floor3" }, /area/shiva/interior/caves/cp_camp) +"jOv" = ( +/obj/structure/surface/rack, +/obj/item/device/flashlight, +/obj/item/device/t_scanner, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "jOA" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/item/weapon/gun/smg/pps43, @@ -14944,12 +14728,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard) -"jQt" = ( -/obj/structure/platform/shiva/catwalk{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/lz1_valley) "jQy" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/colony{ dir = 1; @@ -15037,6 +14815,13 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/medseceng) +"jWh" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "jWL" = ( /obj/structure/machinery/space_heater, /obj/structure/machinery/light/double{ @@ -15052,6 +14837,15 @@ /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"jXM" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/research_hab) "jYO" = ( /obj/item/lightstick/red/spoke/planted{ layer = 3.1; @@ -15160,6 +14954,11 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/medseceng) +"kch" = ( +/obj/structure/surface/rack, +/obj/item/tool/pickaxe/plasmacutter, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "kcB" = ( /obj/structure/machinery/landinglight/ds2/spoke, /obj/structure/machinery/landinglight/ds2/delayone{ @@ -15239,14 +15038,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard) -"kfl" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/structure/machinery/computer/shuttle/dropship/flight/lz1, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_console) "kfW" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/cleanable/dirt, @@ -15345,13 +15136,19 @@ }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"kjU" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 +"kjX" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" }, -/turf/open/floor/wood, -/area/shiva/interior/aerodrome) +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/warehouse/caves) +"klF" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "klN" = ( /obj/effect/spider/stickyweb{ icon_state = "stickyweb2" @@ -15370,6 +15167,13 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/interior/colony/medseceng) +"kmO" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/shiva, +/area/shiva/interior/colony/research_hab) "kng" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/right_spiders) @@ -15412,17 +15216,6 @@ icon_state = "radiator_tile2" }, /area/shiva/interior/colony/central) -"kqE" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 4; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 1; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "kqH" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -15449,12 +15242,6 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) -"krT" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-elevator" - }, -/turf/closed/wall/shiva/prefabricated/orange, -/area/shiva/interior/colony/research_hab) "krU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/largecrate/random/barrel/white, @@ -15556,6 +15343,9 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/lz1_valley) +"kwa" = ( +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "kwc" = ( /obj/structure/bed/chair/comfy/blue, /obj/structure/machinery/light/double{ @@ -15601,6 +15391,10 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) +"kyt" = ( +/obj/item/tool/shovel/snow, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "kyu" = ( /obj/structure/surface/table, /obj/structure/machinery/door/window/eastright{ @@ -15611,15 +15405,6 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) -"kyw" = ( -/obj/structure/barricade/metal{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "kyD" = ( /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/junkyard) @@ -15655,6 +15440,27 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/medseceng) +"kAd" = ( +/obj/structure/closet/radiation, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) +"kAg" = ( +/mob/living/simple_animal/hostile/retaliate/clown{ + desc = "Uh oh, looks like Gonzo got blocked by a cave-in. How is he gonna get out of this one?"; + health = 10000; + move_to_delay = 2; + name = "Gonzo the Magnificent"; + rapid = 1 + }, +/obj/effect/decal/hefa_cult_decals/d96{ + desc = "Original map by Infernus, remapped by Triiodine." + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/oob/dev_room) +"kAm" = ( +/obj/structure/flora/tree/dead/tree_6, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "kAp" = ( /obj/item/stack/sheet/metal/small_stack, /obj/structure/foamed_metal, @@ -15771,13 +15577,6 @@ /obj/effect/landmark/static_comms/net_one, /turf/open/floor/wood, /area/shiva/interior/aerodrome) -"kGO" = ( -/obj/structure/platform/shiva/catwalk{ - dir = 8 - }, -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "kGW" = ( /obj/structure/flora/tree/dead/tree_2, /turf/open/auto_turf/snow/layer2, @@ -15793,13 +15592,13 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) -"kIo" = ( -/obj/structure/platform/shiva/catwalk{ - dir = 4 +"kHG" = ( +/obj/structure/largecrate/random/mini/med, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "floor3" }, -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +/area/shiva/interior/caves/cp_camp) "kIq" = ( /obj/structure/bed/chair, /turf/open/floor/shiva{ @@ -16030,6 +15829,10 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/research_hab) +"kRq" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "kRI" = ( /obj/structure/surface/table, /turf/open/floor/shiva{ @@ -16068,10 +15871,6 @@ }, /turf/open/gm/river, /area/shiva/interior/caves/cp_camp) -"kSW" = ( -/obj/item/circuitboard, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "kTd" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/colony/research_hab) @@ -16109,12 +15908,6 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) -"kVs" = ( -/obj/structure/platform_decoration/strata{ - dir = 1 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) "kVA" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/weapon/twohanded/fireaxe, @@ -16276,11 +16069,8 @@ /turf/open/floor/plating, /area/shiva/interior/colony/central) "leg" = ( -/obj/effect/spider/cocoon{ - icon_state = "cocoon_large1" - }, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/turf/closed/wall/shiva/prefabricated/reinforced/hull, +/area/shiva/exterior/telecomm/lz1_north) "lfe" = ( /obj/structure/prop/ice_colony/soil_net, /turf/open/auto_turf/snow/layer1, @@ -16332,12 +16122,12 @@ /obj/structure/surface/rack, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard/fortbiceps) -"lhu" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "south-spidercave" +"lhP" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "pink_trim" }, -/turf/closed/wall/shiva/ice, -/area/shiva/interior/oob) +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "lip" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 10 @@ -16389,6 +16179,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"llZ" = ( +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/warehouse/caves) "lmt" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/auto_turf/snow/layer0, @@ -16444,7 +16237,7 @@ layer = 2.9 }, /turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "lok" = ( /obj/structure/cargo_container/ferret/left, /turf/open/auto_turf/snow/layer3, @@ -16505,6 +16298,17 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"lqu" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/colony/research_hab) +"lqT" = ( +/obj/effect/spider/stickyweb{ + icon_state = "stickyweb2" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "lqY" = ( /obj/structure/largecrate/random/mini/small_case{ pixel_x = -9; @@ -16552,12 +16356,12 @@ icon_state = "kitchen" }, /area/shiva/interior/colony/central) -"ltJ" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +"ltA" = ( +/obj/structure/surface/rack, +/obj/item/tool/shovel/snow, +/obj/item/storage/belt/utility/full, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "luD" = ( /obj/structure/machinery/space_heater, /turf/open/auto_turf/snow/layer1, @@ -16636,15 +16440,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"lyE" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 4 - }, -/obj/structure/prop/ice_colony/flamingo{ - dir = 1 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) "lzQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "NS-center" @@ -16660,8 +16455,11 @@ /turf/open/floor/plating, /area/shiva/interior/caves/research_caves) "lAN" = ( -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/ice/layer1, +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "lBC" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ @@ -16675,18 +16473,13 @@ /obj/item/tool/pickaxe, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/s_lz2) -"lCe" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 8 - }, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/lz1_valley) -"lCp" = ( -/obj/structure/platform_decoration/shiva/catwalk{ - dir = 4 +"lCg" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/lz1_valley) +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "lDv" = ( /obj/structure/machinery/computer/crew, /turf/open/floor/shiva{ @@ -16750,6 +16543,12 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/caves/cp_camp) +"lGT" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "lGU" = ( /obj/structure/surface/table, /obj/item/storage/fancy/cigarettes/lucky_strikes{ @@ -16846,14 +16645,14 @@ icon_state = "greencorners" }, /area/shiva/interior/colony/botany) +"lLf" = ( +/obj/item/tool/screwdriver, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "lLv" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) -"lLE" = ( -/obj/structure/prop/invuln/ice_prefab/standalone, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "lMO" = ( /obj/structure/barricade/snow{ dir = 8 @@ -16966,6 +16765,9 @@ icon_state = "floor3" }, /area/shiva/interior/valley_huts) +"lRJ" = ( +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/colony/research_hab) "lSz" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/shiva{ @@ -17007,16 +16809,6 @@ icon_state = "snow_mat" }, /area/shiva/interior/colony/botany) -"lUL" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -11; - pixel_y = 25 - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "lUQ" = ( /obj/structure/closet/toolcloset, /obj/effect/landmark/objective_landmark/close, @@ -17046,15 +16838,6 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/colony/central) -"lVJ" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/snow, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) -"lVN" = ( -/obj/structure/closet/radiation, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "lWr" = ( /obj/structure/barricade/handrail/strata, /obj/structure/surface/table, @@ -17063,6 +16846,16 @@ dir = 1 }, /area/shiva/interior/colony/central) +"lWC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -10; + pixel_y = -1 + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "lWL" = ( /obj/effect/spider/cocoon{ icon_state = "cocoon_large3" @@ -17123,6 +16916,13 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"lXQ" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "lYf" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -17232,10 +17032,6 @@ }, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) -"mda" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "mdx" = ( /turf/open/floor/shiva{ dir = 1 @@ -17322,7 +17118,7 @@ "mhs" = ( /obj/effect/spawner/random/powercell, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "mhx" = ( /obj/structure/machinery/light/double, /turf/open/floor/shiva{ @@ -17340,10 +17136,6 @@ "mib" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/medseceng_caves) -"mie" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/research_caves) "miD" = ( /turf/open/floor/shiva{ dir = 4; @@ -17362,6 +17154,13 @@ /obj/structure/largecrate/random/case/small, /turf/open/floor/plating, /area/shiva/interior/colony/central) +"mkC" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "mkK" = ( /obj/structure/surface/table/reinforced/prison, /turf/open/floor/shiva{ @@ -17384,14 +17183,6 @@ dir = 1 }, /area/shiva/interior/colony/deck) -"mmW" = ( -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent5"; - pixel_x = 16; - pixel_y = 10 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "mnD" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile2" @@ -17403,12 +17194,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/interior/colony/medseceng) -"mnZ" = ( -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "moV" = ( /obj/structure/closet/crate/freezer/rations, /obj/item/reagent_container/food/snacks/bigbiteburger, @@ -17426,6 +17211,10 @@ }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) +"mpI" = ( +/obj/structure/fence, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "mqd" = ( /obj/structure/filingcabinet, /obj/item/paper/research_notes, @@ -17477,10 +17266,6 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) -"msh" = ( -/obj/structure/flora/tree/dead/tree_6, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "msu" = ( /obj/structure/closet/bodybag, /obj/effect/landmark/objective_landmark/close, @@ -17519,13 +17304,6 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"muI" = ( -/obj/structure/barricade/handrail/wire{ - dir = 4 - }, -/obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "muN" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/device/flashlight/lamp, @@ -17575,12 +17353,25 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"mxr" = ( +/obj/structure/stairs/perspective/ice{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/junkyard) "myR" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 8 }, /turf/closed/wall/shiva/ice, /area/shiva/interior/caves/s_lz2) +"mzf" = ( +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassbb_3" + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "mzx" = ( /obj/structure/prop/invuln/ice_prefab/standalone/trim, /turf/open/auto_turf/snow/layer2, @@ -17658,6 +17449,15 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/s_admin) +"mCG" = ( +/obj/structure/platform_decoration/strata{ + dir = 4 + }, +/obj/structure/platform_decoration/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "mCQ" = ( /obj/structure/prop/ice_colony/surveying_device/measuring_device{ dir = 1; @@ -17725,6 +17525,15 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"mGk" = ( +/obj/item/tool/shovel/snow, +/obj/item/storage/fancy/cigarettes/arcturian_ace{ + layer = 3.1; + pixel_x = -8; + pixel_y = 23 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "mGn" = ( /obj/structure/machinery/light/double{ dir = 4; @@ -17840,6 +17649,10 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"mKD" = ( +/obj/structure/machinery/cell_charger, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "mKF" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/auto_turf/ice/layer1, @@ -17863,12 +17676,6 @@ icon_state = "floor3" }, /area/shiva/interior/bar) -"mLR" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "mLT" = ( /obj/structure/machinery/alarm{ pixel_y = 24 @@ -17890,6 +17697,19 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) +"mME" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = -13; + pixel_y = 28 + }, +/obj/structure/largecrate/random/mini/small_case/b, +/obj/structure/largecrate/random/mini/small_case{ + pixel_x = 14; + pixel_y = -3 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "mMK" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) @@ -17915,10 +17735,6 @@ }, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/lz1_valley) -"mOT" = ( -/mob/living/simple_animal/hostile/giant_spider/hunter, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) "mOY" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/shiva, @@ -17997,22 +17813,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) -"mTN" = ( -/obj/structure/barricade/handrail/wire{ - dir = 8 - }, -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 4; - pixel_x = -5; - pixel_y = -2 - }, -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 1; - pixel_x = 7; - pixel_y = 16 - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "mUB" = ( /obj/item/lightstick/red/spoke/planted{ layer = 2.99; @@ -18032,15 +17832,6 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) -"mUT" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/colony/research_hab) "mVl" = ( /obj/structure/prop/dam/truck, /turf/open/floor/shiva{ @@ -18187,6 +17978,11 @@ icon_state = "floor3" }, /area/shiva/interior/colony/central) +"ndb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/colony/research_hab) "ndJ" = ( /obj/structure/flora/bush/snow{ icon_state = "snowgrassall_3" @@ -18293,12 +18089,22 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/n_admin) -"nhF" = ( -/obj/structure/prop/ice_colony/surveying_device{ - dir = 4 +"nig" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "pink_trim" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer4, /area/shiva/interior/caves/cp_camp) +"nij" = ( +/obj/item/circuitboard, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) +"niA" = ( +/obj/structure/stairs/perspective/ice{ + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/research_caves) "niL" = ( /obj/structure/platform/strata{ dir = 8 @@ -18311,10 +18117,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"nkH" = ( -/obj/structure/girder, -/turf/open/floor/shiva, -/area/shiva/interior/caves/research_caves) "nlx" = ( /obj/structure/platform/strata, /obj/structure/platform/strata{ @@ -18334,6 +18136,13 @@ dir = 1 }, /area/shiva/exterior/lz2_fortress) +"nmf" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "pink_trim" + }, +/obj/structure/prop/invuln/ice_prefab/roof_greeble, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "nmi" = ( /obj/item/weapon/twohanded/spear, /turf/open/floor/shiva{ @@ -18390,6 +18199,10 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/interior/colony/medseceng) +"npY" = ( +/obj/structure/inflatable, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "nqu" = ( /turf/open/floor/shiva{ dir = 1; @@ -18473,6 +18286,18 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"nvu" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "nvS" = ( /turf/open/floor/shiva{ dir = 8; @@ -18496,6 +18321,17 @@ /obj/structure/machinery/space_heater, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) +"nxt" = ( +/obj/structure/platform_decoration/strata{ + dir = 1 + }, +/obj/item/lightstick/red/variant/planted{ + pixel_x = -7; + pixel_y = -5 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "nxA" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -18504,6 +18340,17 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"nyc" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) +"nyS" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/obj/structure/platform/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "nzf" = ( /obj/structure/surface/table, /obj/structure/noticeboard{ @@ -18524,10 +18371,11 @@ /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) "nzr" = ( -/obj/structure/barricade/handrail/wire{ - dir = 8 +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" }, -/turf/open/auto_turf/ice/layer0, +/turf/open/auto_turf/snow/layer2, /area/shiva/interior/caves/cp_camp) "nzR" = ( /obj/structure/largecrate/random/case/small, @@ -18537,18 +18385,6 @@ /obj/item/tool/crowbar, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) -"nAp" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/desertdam/decals/road_stop{ - icon_state = "road_edge_decal8" - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "purplefull" - }, -/area/shiva/interior/colony/research_hab) "nAs" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/auto_turf/snow/layer1, @@ -18625,6 +18461,16 @@ }, /turf/open/floor/plating, /area/shiva/exterior/lz1_valley) +"nEQ" = ( +/obj/structure/inflatable, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) +"nEU" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "nEZ" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/shiva{ @@ -18667,14 +18513,6 @@ dir = 1 }, /area/shiva/interior/colony/n_admin) -"nHp" = ( -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent4"; - pixel_x = -4; - pixel_y = 10 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "nHt" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -18692,6 +18530,13 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) +"nIA" = ( +/obj/item/lightstick/red/variant/planted, +/obj/structure/platform/shiva/catwalk{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/aerodrome) "nIB" = ( /obj/structure/surface/table, /obj/item/device/taperecorder, @@ -18707,10 +18552,6 @@ }, /turf/open/floor/wood, /area/shiva/interior/bar) -"nJu" = ( -/obj/item/frame/rack, -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/caves/cp_camp) "nKc" = ( /obj/structure/machinery/door/airlock/almayer/medical/colony{ dir = 1; @@ -18783,15 +18624,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"nNl" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) "nNN" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 @@ -18819,13 +18651,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_colony_grounds) -"nOw" = ( -/obj/structure/stairs/perspective/ice{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/lz1_valley) "nOB" = ( /obj/item/stack/sheet/metal, /turf/open/floor/shiva{ @@ -18833,6 +18658,15 @@ icon_state = "purplefull" }, /area/shiva/interior/colony/research_hab) +"nOK" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) "nPb" = ( /obj/structure/prop/ice_colony/soil_net, /obj/structure/platform/strata{ @@ -18870,10 +18704,13 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) -"nRL" = ( -/obj/item/device/flashlight, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) +"nRD" = ( +/obj/structure/stairs/perspective/ice{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/warehouse/caves) "nSI" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -18910,6 +18747,12 @@ }, /turf/open/floor/wood, /area/shiva/interior/aerodrome) +"nUk" = ( +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "nUn" = ( /obj/structure/bed/chair{ dir = 8 @@ -18977,6 +18820,13 @@ "nZA" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/interior/warehouse/caves) +"nZG" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -16; + pixel_y = -3 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "nZM" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, @@ -19034,12 +18884,6 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) -"ocl" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "labs-larder" - }, -/turf/closed/wall/shiva/prefabricated/blue, -/area/shiva/interior/colony/research_hab) "ocv" = ( /obj/item/weapon/ice_axe/red, /turf/open/auto_turf/ice/layer0, @@ -19062,16 +18906,6 @@ }, /turf/open/floor/shiva, /area/shiva/interior/bar) -"ocI" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -10; - pixel_y = -1 - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "odb" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -19101,10 +18935,6 @@ }, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/lz1_valley) -"ofr" = ( -/obj/item/frame/rack, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "ofw" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/junkyard) @@ -19150,6 +18980,12 @@ icon_state = "yellowfull" }, /area/shiva/interior/garage) +"ohd" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 1 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "ohq" = ( /obj/structure/largecrate/random/case, /turf/open/floor/shiva{ @@ -19168,6 +19004,17 @@ /obj/structure/flora/tree/dead/tree_1, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) +"oiL" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 15; + pixel_y = -3 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -16; + pixel_y = -3 + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "oiX" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 10 @@ -19179,6 +19026,13 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/valley) +"okc" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/wood, +/area/shiva/interior/aerodrome) "okz" = ( /obj/effect/decal/cleanable/blood{ layer = 3 @@ -19195,9 +19049,6 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) -"ols" = ( -/turf/closed/wall/shiva/prefabricated/reinforced/hull, -/area/shiva/exterior/valley) "olI" = ( /obj/item/device/pinpointer, /turf/open/floor/shiva{ @@ -19219,10 +19070,6 @@ /obj/item/evidencebag, /turf/open/floor/wood, /area/shiva/interior/colony/medseceng) -"onF" = ( -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "onM" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -19299,6 +19146,10 @@ dir = 1 }, /area/shiva/interior/colony/central) +"ork" = ( +/obj/structure/flora/tree/dead/tree_1, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "ors" = ( /obj/effect/decal/cleanable/dirt, /turf/open/auto_turf/ice/layer1, @@ -19322,6 +19173,16 @@ /obj/structure/prop/ice_colony/dense/ice_tray, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"osV" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 4; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/research_hab) "otA" = ( /obj/structure/machinery/computer/cameras/wooden_tv{ pixel_y = 7 @@ -19377,7 +19238,7 @@ "owr" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "owt" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -19451,14 +19312,6 @@ /obj/structure/largecrate, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/warehouse/caves) -"oCk" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 2.99; - pixel_x = 12; - pixel_y = 28 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/valley) "oCr" = ( /obj/item/shard{ icon_state = "large" @@ -19689,9 +19542,16 @@ "oQl" = ( /turf/closed/wall/shiva/ice, /area/shiva/exterior/valley) +"oQo" = ( +/turf/closed/wall/shiva/prefabricated, +/area/shiva/exterior/cp_s_research) "oRH" = ( /turf/open/auto_turf/snow/layer2, /area/shiva/interior/caves/cp_camp) +"oRK" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/valley) "oSU" = ( /obj/structure/machinery/disposal, /turf/open/floor/shiva{ @@ -19779,6 +19639,7 @@ /obj/structure/platform/strata{ dir = 4 }, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) "oZs" = ( @@ -19841,7 +19702,7 @@ "pct" = ( /obj/effect/spider/stickyweb, /turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "pcC" = ( /obj/item/tool/pen/blue, /obj/structure/surface/table/reinforced/prison, @@ -19869,22 +19730,11 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/largecrate/random/barrel/yellow, /obj/structure/machinery/light/double{ - dir = 4; + dir = 8; pixel_y = -5 }, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"pei" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 15; - pixel_y = -3 - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -16; - pixel_y = -3 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "pey" = ( /obj/structure/platform/strata{ dir = 4 @@ -19897,6 +19747,10 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) +"pff" = ( +/obj/item/stack/rods, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "pfg" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -19986,10 +19840,6 @@ "plM" = ( /turf/open/auto_turf/ice/layer0, /area/shiva/exterior/junkyard) -"plS" = ( -/obj/structure/flora/bush/ausbushes/lavendergrass, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "pmj" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/auto_turf/ice/layer1, @@ -20033,6 +19883,15 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"poz" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/lz1_valley) "ppb" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 9 @@ -20045,6 +19904,12 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"ppS" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "pqe" = ( /turf/closed/wall/shiva/prefabricated/reinforced/hull, /area/shiva/interior/bar) @@ -20076,7 +19941,7 @@ dir = 8 }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/junkyard) +/area/shiva/interior/caves/research_caves) "prU" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -20118,7 +19983,7 @@ icon_state = "p_stair_sn_full_cap" }, /turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/junkyard) +/area/shiva/interior/caves/research_caves) "ptr" = ( /turf/open/floor/shiva{ dir = 8; @@ -20178,10 +20043,6 @@ "pvv" = ( /turf/open/floor/shiva, /area/shiva/interior/aerodrome) -"pvR" = ( -/obj/structure/platform_decoration/strata, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) "pvU" = ( /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/snow/layer2, @@ -20193,10 +20054,10 @@ /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) "pwT" = ( -/turf/open/floor/shiva{ - dir = 1; - icon_state = "snow_mat" +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassall_1" }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "pxi" = ( /obj/structure/closet/secure_closet/engineering_welding, @@ -20226,16 +20087,6 @@ dir = 1 }, /area/shiva/exterior/lz2_fortress) -"pyB" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 10; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "pyI" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -20327,7 +20178,14 @@ icon_state = "p_stair_sn_full_cap" }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/lz1_valley) +/area/shiva/interior/caves/research_caves) +"pCw" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "pCH" = ( /obj/item/tool/shovel, /turf/open/auto_turf/snow/layer3, @@ -20374,10 +20232,6 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) -"pDH" = ( -/obj/structure/platform_decoration/strata, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "pDW" = ( /obj/structure/prop/ice_colony/soil_net, /turf/open/auto_turf/snow/layer1, @@ -20434,11 +20288,6 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/caves/cp_camp) -"pFq" = ( -/obj/structure/surface/rack, -/obj/item/tool/crowbar/red, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) "pFt" = ( /turf/open/floor/shiva{ icon_state = "red" @@ -20468,10 +20317,22 @@ dir = 1 }, /area/shiva/exterior/lz2_fortress) +"pGi" = ( +/obj/structure/prop/ice_colony/ground_wire, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "pGj" = ( /obj/item/weapon/ice_axe/red, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) +"pGt" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "pGL" = ( /obj/structure/platform/strata{ dir = 1 @@ -20506,6 +20367,15 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) +"pIV" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim, +/obj/structure/prop/invuln/ice_prefab/roof_greeble{ + icon_state = "windsock"; + pixel_x = 6; + pixel_y = -1 + }, +/turf/closed/wall/shiva/ice, +/area/shiva/exterior/cp_s_research) "pJp" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/shiva{ @@ -20691,10 +20561,6 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/medseceng) -"pOy" = ( -/obj/structure/inflatable, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "pOI" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/dry_ramen, @@ -20724,10 +20590,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"pPY" = ( -/obj/structure/inflatable/popped, -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "pQt" = ( /obj/item/stack/sheet/metal, /turf/open/floor/shiva{ @@ -20744,6 +20606,13 @@ }, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) +"pRM" = ( +/obj/structure/platform_decoration/strata{ + dir = 1 + }, +/obj/structure/platform_decoration/strata, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "pRU" = ( /obj/item/stack/cable_coil/white, /turf/open/auto_turf/ice/layer1, @@ -20845,16 +20714,18 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"pWp" = ( +/obj/structure/barricade/handrail/wire{ + dir = 4 + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "pWw" = ( /obj/structure/closet/cabinet, /obj/item/clothing/under/colonist, /obj/effect/landmark/good_item, /turf/open/floor/wood, /area/shiva/interior/colony/botany) -"pWY" = ( -/obj/structure/girder, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "pXU" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -16; @@ -20910,6 +20781,18 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) +"qdh" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 4 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) +"qdH" = ( +/turf/closed/wall/shiva/prefabricated/blue, +/area/shiva/exterior/junkyard/cp_bar) "qep" = ( /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_colony_grounds) @@ -20955,18 +20838,13 @@ icon_state = "yellowfull" }, /area/shiva/interior/garage) -"qfI" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/obj/structure/desertdam/decals/road_stop{ - icon_state = "road_edge_decal5" - }, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "purplefull" - }, -/area/shiva/interior/colony/research_hab) +"qfR" = ( +/obj/structure/flora/grass/tallgrass/ice, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/research_caves) +"qfZ" = ( +/turf/closed/wall/shiva/prefabricated/orange, +/area/shiva/interior/caves/research_caves) "qgd" = ( /obj/structure/prop/ice_colony/ground_wire, /turf/open/auto_turf/ice/layer2, @@ -20991,9 +20869,9 @@ dir = 1 }, /area/shiva/interior/colony/central) -"qgD" = ( -/turf/closed/wall/shiva/prefabricated/reinforced/hull, -/area/shiva/interior/colony/research_hab) +"qgP" = ( +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/warehouse/caves) "qhm" = ( /obj/structure/barricade/metal{ dir = 4 @@ -21028,6 +20906,10 @@ icon_state = "floor3" }, /area/shiva/interior/bar) +"qiy" = ( +/obj/structure/barricade/handrail/wire, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/cp_s_research) "qjY" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer0, @@ -21158,6 +21040,13 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) +"qnJ" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva, +/area/shiva/interior/caves/cp_camp) "qof" = ( /obj/item/stack/cable_coil/blue, /obj/structure/airlock_assembly, @@ -21232,9 +21121,12 @@ dir = 1 }, /area/shiva/interior/colony/central) +"qrY" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/exterior/junkyard) "qsN" = ( /obj/structure/machinery/light/double{ - dir = 8; + dir = 4; pixel_y = -5 }, /turf/open/floor/interior/plastic, @@ -21259,17 +21151,6 @@ /obj/item/lightstick/red/variant/planted, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/lz1_valley) -"quO" = ( -/obj/item/tool/shovel/snow, -/obj/item/tool/shovel/snow{ - pixel_y = 8 - }, -/obj/structure/surface/rack, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) "qvr" = ( /obj/structure/machinery/alarm{ dir = 8; @@ -21360,16 +21241,6 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/medseceng) -"qBn" = ( -/obj/structure/prop/invuln/ice_prefab{ - dir = 9 - }, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "vent5"; - pixel_y = 10 - }, -/turf/open/auto_turf/snow/layer3, -/area/shiva/interior/caves/cp_camp) "qBM" = ( /obj/structure/platform/strata{ dir = 8 @@ -21377,12 +21248,6 @@ /obj/structure/platform/strata, /turf/open/gm/river, /area/shiva/interior/caves/cp_camp) -"qBN" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor/shiva{ - icon_state = "radiator_tile" - }, -/area/shiva/interior/caves/cp_camp) "qCa" = ( /obj/structure/bed/chair{ dir = 4 @@ -21415,6 +21280,15 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) +"qCW" = ( +/obj/structure/platform/strata{ + dir = 1 + }, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/interior/caves/research_caves) "qDg" = ( /obj/structure/bed/chair{ dir = 8 @@ -21456,8 +21330,19 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"qEH" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) +"qEK" = ( +/obj/structure/prop/invuln/ice_prefab/standalone{ + icon_state = "white" + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "qEQ" = ( /obj/structure/platform/strata, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard) "qFx" = ( @@ -21478,17 +21363,6 @@ "qIr" = ( /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/interior/warehouse) -"qIu" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 4; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 9; - pixel_y = 10 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "qII" = ( /turf/open/floor/shiva{ dir = 6; @@ -21506,30 +21380,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"qKn" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 4 - }, -/obj/structure/bed/chair{ - dir = 4; - pixel_y = 8 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/shiva{ - dir = 4; - icon_state = "snow_mat" - }, -/area/shiva/interior/caves/cp_camp) -"qKA" = ( -/obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "qLA" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 8 @@ -21556,6 +21406,11 @@ /obj/structure/flora/grass/tallgrass/ice, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) +"qMT" = ( +/obj/structure/surface/rack, +/obj/effect/spawner/random/toolbox, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "qNj" = ( /obj/structure/flora/tree/dead/tree_5, /turf/open/auto_turf/snow/layer2, @@ -21582,9 +21437,6 @@ }, /turf/open/gm/river, /area/shiva/exterior/cp_lz2) -"qNE" = ( -/turf/closed/wall/shiva/ice, -/area/shiva/exterior/research_alley) "qNK" = ( /obj/structure/surface/table, /obj/item/reagent_container/glass/beaker/cryopredmix{ @@ -21617,10 +21469,6 @@ /obj/item/storage/firstaid/rad, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) -"qOP" = ( -/obj/structure/machinery/power/port_gen/pacman, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) "qOZ" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 @@ -21637,17 +21485,6 @@ }, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) -"qPi" = ( -/obj/structure/closet/toolcloset, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) -"qPj" = ( -/obj/structure/platform/strata{ - dir = 4 - }, -/obj/structure/platform/strata, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) "qRb" = ( /obj/structure/barricade/metal/wired, /turf/open/floor/shiva{ @@ -21680,10 +21517,6 @@ /obj/item/stack/sheet/metal, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_colony_grounds) -"qRV" = ( -/obj/structure/platform/strata, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/valley) "qRX" = ( /obj/structure/tunnel{ id = "hydroponics_tunnel" @@ -21782,14 +21615,6 @@ icon_state = "greenfull" }, /area/shiva/interior/colony/n_admin) -"qXC" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 8; - pixel_x = -6; - pixel_y = 13 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "qXS" = ( /turf/open/floor/shiva, /area/shiva/interior/bar) @@ -21885,15 +21710,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/caves/cp_camp) -"rdQ" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim, -/obj/structure/prop/invuln/ice_prefab/roof_greeble{ - icon_state = "windsock"; - pixel_x = 6; - pixel_y = -1 - }, -/turf/closed/wall/shiva/ice, -/area/shiva/exterior/research_alley) "rdS" = ( /obj/effect/decal/cleanable/dirt, /turf/open/asphalt/cement, @@ -21945,10 +21761,6 @@ /obj/structure/platform/strata, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) -"rfv" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "rfU" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 9 @@ -21987,6 +21799,14 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"rib" = ( +/obj/structure/ice/thin/single{ + opacity = 1; + unacidable = 0 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer2, +/area/shiva/exterior/valley) "ril" = ( /obj/structure/closet/secure_closet/freezer/fridge, /turf/open/floor/shiva{ @@ -22019,6 +21839,10 @@ /obj/structure/window/framed/shiva, /turf/open/floor/plating, /area/shiva/interior/garage) +"rkG" = ( +/obj/structure/flora/tree/dead/tree_2, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "rkS" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -13; @@ -22032,6 +21856,15 @@ icon_state = "warnplate" }, /area/shiva/exterior/junkyard/fortbiceps) +"rld" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "rli" = ( /obj/structure/flora/tree/dead/tree_1, /turf/open/auto_turf/snow/layer2, @@ -22048,15 +21881,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/cp_colony_grounds) -"rnO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S-corner" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W-corner" - }, -/turf/open/floor/plating, -/area/shiva/exterior/lz1_valley) "rov" = ( /obj/item/lightstick/red/spoke/planted{ layer = 3.1; @@ -22077,7 +21901,7 @@ unacidable = 0 }, /turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "rpL" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -22091,6 +21915,20 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) +"rqK" = ( +/obj/structure/desertdam/decals/road_stop{ + icon_state = "road_edge_decal5"; + pixel_y = -17 + }, +/turf/closed/wall/shiva/prefabricated/orange, +/area/shiva/interior/colony/research_hab) +"rrj" = ( +/obj/item/lightstick/red/variant/planted{ + pixel_x = -7; + pixel_y = -5 + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/research_caves) "rsa" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, @@ -22122,10 +21960,6 @@ /obj/item/lightstick/red/variant/planted, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) -"rwy" = ( -/obj/structure/inflatable/popped, -/turf/open/auto_turf/snow/layer2, -/area/shiva/exterior/research_alley) "rwQ" = ( /obj/structure/bedsheetbin, /turf/open/floor/shiva{ @@ -22137,17 +21971,6 @@ /obj/structure/bed/chair, /turf/open/floor/interior/plastic/alt, /area/shiva/interior/warehouse) -"rxf" = ( -/obj/structure/largecrate/random/case/double, -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "bluefull" - }, -/area/shiva/interior/aerodrome) "rxF" = ( /obj/structure/prop/invuln/ice_prefab/standalone{ icon_state = "pink" @@ -22181,6 +22004,10 @@ icon_state = "yellow" }, /area/shiva/interior/lz2_habs) +"rzw" = ( +/obj/structure/platform_decoration/strata, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "rzz" = ( /obj/structure/flora/pottedplant, /turf/open/floor/shiva{ @@ -22351,6 +22178,10 @@ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) +"rKq" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/cp_s_research) "rKW" = ( /obj/structure/machinery/computer3/powermonitor, /turf/open/floor/shiva{ @@ -22404,6 +22235,17 @@ icon_state = "purplefull" }, /area/shiva/interior/colony/research_hab) +"rNx" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 8 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shiva/interior/aerodrome) "rNO" = ( /obj/structure/prop/ice_colony/soil_net, /turf/open/auto_turf/snow/layer2, @@ -22430,6 +22272,17 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) +"rPa" = ( +/obj/structure/bed/chair/dropship/passenger{ + dir = 4 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shiva/interior/aerodrome) "rRb" = ( /obj/structure/surface/rack, /obj/item/weapon/ice_axe, @@ -22467,6 +22320,9 @@ /obj/effect/landmark/objective_landmark/science, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) +"rRZ" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/exterior/cp_s_research) "rSr" = ( /obj/structure/bed/chair/office/light, /turf/open/floor/shiva{ @@ -22523,6 +22379,10 @@ icon_state = "yellowfull" }, /area/shiva/interior/lz2_habs) +"rUW" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "rVF" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor/shiva{ @@ -22570,6 +22430,13 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"rWW" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 11; + pixel_y = 20 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "rXn" = ( /turf/closed/shuttle/elevator{ dir = 5 @@ -22591,6 +22458,10 @@ /obj/effect/landmark/railgun_camera_pos, /turf/open/auto_turf/ice/layer1, /area/shiva/exterior/cp_lz2) +"rYj" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/junkyard/cp_bar) "rZj" = ( /obj/structure/surface/table, /obj/structure/machinery/computer/station_alert{ @@ -22661,6 +22532,13 @@ "sax" = ( /turf/closed/wall/shiva/ice, /area/shiva/interior/warehouse/caves) +"saA" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 12; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "sbd" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/shiva{ @@ -22675,6 +22553,12 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"scp" = ( +/obj/structure/platform_decoration/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/lz1_valley) "scN" = ( /obj/structure/surface/table, /obj/item/device/assembly/infra, @@ -22753,6 +22637,12 @@ "sgX" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/telecomm/lz2_northeast) +"shi" = ( +/obj/structure/prop/invuln/ice_prefab/standalone/trim{ + icon_state = "white_trim" + }, +/turf/closed/wall/shiva/ice, +/area/shiva/exterior/cp_s_research) "shx" = ( /obj/structure/ice/thin/single{ opacity = 1; @@ -22827,14 +22717,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"skK" = ( -/obj/structure/prop/ice_colony/surveying_device/measuring_device{ - dir = 8; - pixel_x = -6; - pixel_y = 13 - }, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "slj" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile" @@ -22885,9 +22767,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"snZ" = ( -/turf/closed/wall/shiva/prefabricated/reinforced, -/area/shiva/exterior/valley) "sod" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard/fortbiceps) @@ -22923,6 +22802,13 @@ icon_state = "floor3" }, /area/shiva/interior/colony/deck) +"srJ" = ( +/obj/structure/stairs/perspective/ice{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/research_caves) "ssf" = ( /turf/open/auto_turf/snow/layer3, /area/shiva/interior/colony/central) @@ -22954,18 +22840,15 @@ /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_colony_grounds) "sud" = ( -/turf/open/floor/shiva{ - icon_state = "snow_mat" +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassbb_1" }, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "suD" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/medseceng_caves) -"swn" = ( -/obj/structure/largecrate/random, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "swF" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -22983,7 +22866,7 @@ icon_state = "medium"; name = "ice shard" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "swW" = ( /obj/structure/machinery/space_heater, @@ -23147,10 +23030,24 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"sDd" = ( +/obj/item/lightstick/planted, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) +"sEC" = ( +/obj/structure/flora/grass/tallgrass/ice/corner{ + dir = 10 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "sFj" = ( /obj/structure/largecrate/random/case/double, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) +"sFs" = ( +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/aerodrome) "sFu" = ( /obj/item/tool/mop, /turf/open/floor/wood, @@ -23234,7 +23131,7 @@ /obj/item/shard{ icon_state = "large" }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "sIX" = ( /obj/structure/machinery/constructable_frame{ @@ -23286,6 +23183,13 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/botany) +"sKi" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva, +/area/shiva/interior/aerodrome) "sKH" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = 12 @@ -23393,6 +23297,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"sQX" = ( +/turf/open/auto_turf/ice/layer0, +/area/shiva/exterior/cp_s_research) "sRV" = ( /obj/effect/decal/cleanable/blood{ icon_state = "xgibdown1" @@ -23617,6 +23524,13 @@ icon_state = "green" }, /area/shiva/interior/colony/botany) +"teK" = ( +/obj/structure/stairs/perspective/ice{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/ice/layer2, +/area/shiva/interior/warehouse/caves) "tfd" = ( /turf/open/floor/wood, /area/shiva/interior/colony/central) @@ -23649,16 +23563,6 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) -"thK" = ( -/obj/structure/platform/strata{ - dir = 8 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) -"tig" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/cp_camp) "tiw" = ( /obj/structure/machinery/light, /turf/open/floor/shiva{ @@ -23669,6 +23573,9 @@ /obj/structure/fence, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) +"tjL" = ( +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/aerodrome) "tkb" = ( /obj/structure/surface/table, /obj/item/tool/pen/blue, @@ -23680,15 +23587,13 @@ /obj/structure/largecrate/random/case, /turf/open/asphalt/cement, /area/shiva/interior/warehouse) -"tkB" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 8 +"tkS" = ( +/obj/structure/largecrate/random/mini/med{ + pixel_x = -7; + pixel_y = 9 }, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "tle" = ( /obj/structure/prop/invuln/ice_prefab/standalone, /turf/open/auto_turf/snow/layer2, @@ -23731,6 +23636,10 @@ icon_state = "red" }, /area/shiva/interior/colony/central) +"tmP" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "tmV" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/arrivals, /turf/open/shuttle/elevator/grating, @@ -23781,6 +23690,15 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) +"too" = ( +/obj/structure/prop/ice_colony/soil_net, +/obj/item/tool/shovel/spade{ + layer = 2.99; + pixel_x = -9; + pixel_y = -11 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "toA" = ( /turf/open/floor/shiva{ dir = 1; @@ -23803,6 +23721,10 @@ icon_state = "redfull" }, /area/shiva/interior/colony/research_hab) +"toO" = ( +/obj/item/stack/rods, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "tpg" = ( /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/lz1_valley) @@ -23810,7 +23732,10 @@ /obj/effect/decal/warning_stripes{ icon_state = "NW-out" }, -/obj/effect/decal/cleanable/dirt, +/obj/structure/desertdam/decals/road_stop{ + icon_state = "road_edge_decal5"; + pixel_x = -14 + }, /turf/open/floor/shiva{ dir = 8; icon_state = "purplefull" @@ -23841,15 +23766,6 @@ }, /turf/open/auto_turf/ice/layer0, /area/shiva/interior/caves/cp_camp) -"trw" = ( -/obj/structure/platform/strata{ - dir = 1 - }, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) "trX" = ( /obj/structure/machinery/conveyor, /obj/effect/decal/cleanable/dirt, @@ -23887,13 +23803,6 @@ dir = 1 }, /area/shiva/exterior/cp_colony_grounds) -"tue" = ( -/obj/structure/platform/strata{ - dir = 8 - }, -/obj/structure/platform/strata, -/turf/open/gm/river, -/area/shiva/interior/caves/left_spiders) "tuz" = ( /obj/structure/platform_decoration/strata{ dir = 1 @@ -23959,12 +23868,6 @@ icon_state = "red" }, /area/shiva/interior/colony/medseceng) -"txO" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/caves/cp_camp) "txS" = ( /turf/open/floor/shiva{ icon_state = "multi_tiles" @@ -24182,8 +24085,8 @@ }, /area/shiva/interior/colony/botany) "tJP" = ( -/obj/structure/surface/rack, -/turf/open/auto_turf/ice/layer0, +/obj/structure/flora/tree/dead/tree_4, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "tJS" = ( /obj/structure/blocker/invisible_wall, @@ -24193,6 +24096,10 @@ /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, +/obj/structure/desertdam/decals/road_stop{ + icon_state = "road_edge_decal8"; + pixel_x = -14 + }, /turf/open/floor/shiva{ dir = 8; icon_state = "purplefull" @@ -24235,6 +24142,13 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"tLC" = ( +/obj/item/lightstick/red/variant/planted, +/obj/structure/platform/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/aerodrome) "tLP" = ( /obj/structure/platform/shiva/catwalk{ dir = 1 @@ -24336,6 +24250,10 @@ icon_state = "floor3" }, /area/shiva/interior/valley_huts/no2) +"tPB" = ( +/obj/structure/platform/strata, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "tPJ" = ( /obj/structure/platform/shiva/catwalk, /turf/open/auto_turf/snow/layer1, @@ -24376,10 +24294,6 @@ icon_state = "floor3" }, /area/shiva/interior/colony/botany) -"tRn" = ( -/obj/item/lightstick/red/variant/planted, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "tRq" = ( /obj/structure/filingcabinet{ pixel_x = 8; @@ -24438,7 +24352,7 @@ /area/shiva/interior/colony/research_hab) "tTc" = ( /obj/effect/landmark/monkey_spawn, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "tTd" = ( /obj/structure/prop/ice_colony/dense/planter_box{ @@ -24639,6 +24553,13 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/junkyard) +"ucN" = ( +/obj/structure/flora/grass/tallgrass/ice/corner{ + dir = 6 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "udD" = ( /obj/structure/prop/dam/truck{ dir = 4; @@ -24736,13 +24657,9 @@ /obj/structure/largecrate/random/case/double, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) -"ugD" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva, -/area/shiva/interior/aerodrome) +"ugC" = ( +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/oob) "ugP" = ( /obj/structure/computerframe, /turf/open/floor/shiva{ @@ -24792,18 +24709,15 @@ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) -"uil" = ( -/obj/structure/prop/invuln/ice_prefab/standalone/trim{ - icon_state = "white_trim" - }, -/turf/closed/wall/shiva/ice, -/area/shiva/exterior/research_alley) "uim" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"uir" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/interior/caves/cp_camp) "uiI" = ( /obj/item/reagent_container/food/drinks/cans/beer, /turf/open/auto_turf/snow/layer0, @@ -24882,6 +24796,10 @@ /obj/structure/platform/shiva/catwalk, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/junkyard/fortbiceps) +"ulI" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/caves/cp_camp) "ulZ" = ( /obj/structure/platform/shiva/catwalk, /obj/structure/cable/heavyduty{ @@ -24935,11 +24853,11 @@ /turf/closed/wall/shiva/prefabricated/white, /area/shiva/exterior/cp_lz2) "uoZ" = ( -/obj/effect/spider/stickyweb{ - icon_state = "stickyweb2" +/obj/structure/tunnel{ + id = "south_tcomms_tunnel" }, /turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) +/area/shiva/interior/caves/cp_camp) "upf" = ( /obj/item/tool/pickaxe, /turf/open/auto_turf/snow/layer1, @@ -24961,6 +24879,11 @@ icon_state = "purplefull" }, /area/shiva/interior/lz2_habs) +"upK" = ( +/obj/effect/landmark/corpsespawner/engineer, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "uqb" = ( /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) @@ -25063,6 +24986,12 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/botany) +"uxZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "uyI" = ( /obj/structure/largecrate/random/mini/small_case/c{ pixel_x = 11; @@ -25254,6 +25183,10 @@ /obj/item/stack/sheet/plasteel/medium_stack, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/s_lz2) +"uIE" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/colony/research_hab) "uII" = ( /obj/structure/surface/table, /obj/effect/landmark/corpsespawner/scientist, @@ -25261,6 +25194,13 @@ icon_state = "floor3" }, /area/shiva/interior/colony/research_hab) +"uIO" = ( +/obj/item/lightstick/red/variant/planted{ + pixel_x = 11; + pixel_y = 11 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "uJg" = ( /obj/item/clothing/shoes/snow, /obj/structure/surface/rack, @@ -25367,6 +25307,9 @@ }, /turf/open/gm/river/no_overlay, /area/shiva/interior/caves/cp_camp) +"uLi" = ( +/turf/open/auto_turf/ice/layer0, +/area/shiva/interior/aerodrome) "uLn" = ( /obj/structure/closet/secure_closet/medical1{ req_access_txt = "100" @@ -25408,16 +25351,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/exterior/cp_lz2) -"uMJ" = ( -/obj/structure/machinery/light/double{ - dir = 8; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "bluefull" - }, -/area/shiva/interior/aerodrome) "uNe" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Colony Engineering Locker Room" @@ -25425,14 +25358,6 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/plating, /area/shiva/interior/colony/medseceng) -"uOc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "purplefull" - }, -/area/shiva/interior/colony/research_hab) "uOR" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/shiva{ @@ -25647,13 +25572,6 @@ icon_state = "greenfull" }, /area/shiva/interior/colony/botany) -"uZF" = ( -/obj/structure/barricade/handrail/wire{ - dir = 8 - }, -/obj/structure/barricade/handrail/wire, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "uZJ" = ( /obj/structure/bed/chair{ dir = 8 @@ -25672,10 +25590,6 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/colony/medseceng) -"vaT" = ( -/obj/effect/landmark/hunter_primary, -/turf/open/auto_turf/snow/layer1, -/area/shiva/interior/caves/cp_camp) "vbb" = ( /obj/structure/surface/table/woodentable, /obj/item/device/flashlight/lamp, @@ -25775,6 +25689,7 @@ /area/shiva/interior/colony/central) "veu" = ( /obj/structure/platform_decoration/strata, +/obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard) "vey" = ( @@ -25796,6 +25711,10 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/central) +"vgR" = ( +/obj/structure/platform_decoration/strata, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "vhp" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, @@ -25822,7 +25741,7 @@ "vhM" = ( /obj/structure/flora/tree/dead/tree_4, /turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "vhQ" = ( /obj/structure/machinery/space_heater, /turf/open/floor/shiva{ @@ -25844,13 +25763,6 @@ icon_state = "floor3" }, /area/shiva/interior/bar) -"vjg" = ( -/obj/structure/platform/strata, -/obj/structure/platform/strata{ - dir = 4 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) "vjs" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -25878,6 +25790,10 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) +"vkr" = ( +/obj/item/device/flashlight, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "vkZ" = ( /obj/structure/largecrate/random, /turf/open/floor/shiva{ @@ -25913,10 +25829,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"vnr" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "vnF" = ( /obj/structure/surface/table, /obj/item/device/radio, @@ -25992,6 +25904,10 @@ dir = 1 }, /area/shiva/interior/colony/s_admin) +"vrG" = ( +/obj/structure/largecrate/random/barrel/blue, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "vrM" = ( /obj/effect/decal/warning_stripes{ pixel_y = 32 @@ -26016,7 +25932,7 @@ /area/shiva/interior/caves/s_lz2) "vtz" = ( /obj/effect/decal/cleanable/blood/drip, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "vuj" = ( /obj/structure/bed/roller, @@ -26032,6 +25948,10 @@ dir = 1 }, /area/shiva/interior/colony/central) +"vwn" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/auto_turf/ice/layer1, +/area/shiva/exterior/valley) "vwv" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/scientist, @@ -26039,6 +25959,14 @@ icon_state = "wredfull" }, /area/shiva/interior/colony/medseceng) +"vwx" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "vxb" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -26064,6 +25992,12 @@ icon_state = "floor3" }, /area/shiva/interior/colony/s_admin) +"vym" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "vyM" = ( /obj/structure/bed/roller, /turf/open/floor/plating, @@ -26142,6 +26076,12 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) +"vCe" = ( +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassbb_1" + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/interior/caves/cp_camp) "vCj" = ( /obj/structure/barricade/snow{ dir = 1 @@ -26189,13 +26129,6 @@ /obj/structure/prop/ice_colony/surveying_device, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/junkyard/cp_bar) -"vEN" = ( -/obj/structure/largecrate/random/mini/wooden{ - pixel_x = -16; - pixel_y = -1 - }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/warehouse/caves) "vFi" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating, @@ -26256,16 +26189,6 @@ icon_state = "floor3" }, /area/shiva/interior/valley_huts/no2) -"vIk" = ( -/obj/structure/machinery/disposal, -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/shiva/interior/aerodrome) "vIy" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 4 @@ -26292,6 +26215,9 @@ dir = 1 }, /area/shiva/interior/colony/deck) +"vJu" = ( +/turf/closed/wall/shiva/prefabricated/blue, +/area/shiva/exterior/valley) "vKu" = ( /turf/open/floor/shiva{ dir = 8; @@ -26314,15 +26240,9 @@ }, /area/shiva/interior/colony/botany) "vNN" = ( -/obj/structure/machinery/light/double{ - dir = 4; - pixel_y = -5 - }, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "redfull" - }, -/area/shiva/interior/colony/research_hab) +/obj/structure/fence, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/warehouse/caves) "vOb" = ( /obj/structure/prop/ice_colony/surveying_device{ dir = 4 @@ -26349,6 +26269,9 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) +"vPr" = ( +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/warehouse/caves) "vPK" = ( /obj/structure/platform/strata{ dir = 1 @@ -26508,6 +26431,12 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"vZS" = ( +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/auto_turf/snow/layer4, +/area/shiva/exterior/lz1_valley) "wag" = ( /turf/closed/wall/shiva/prefabricated/reinforced, /area/shiva/interior/colony/n_admin) @@ -26559,6 +26488,12 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"wfH" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -11 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/cp_s_research) "wfL" = ( /obj/structure/machinery/door/airlock/almayer/security/colony{ name = "\improper Underground Security Evidence Storage" @@ -26647,17 +26582,13 @@ dir = 1 }, /area/shiva/interior/lz2_habs) -"wiG" = ( -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 6; - pixel_y = -9 - }, -/obj/structure/prop/invuln/dense/ice_tray{ - dir = 8; - pixel_y = 10 +"wiy" = ( +/obj/structure/barricade/snow{ + dir = 4 }, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/junkyard/fortbiceps) "wiM" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -26782,7 +26713,7 @@ pixel_y = 9 }, /turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/cp_s_research) +/area/shiva/exterior/junkyard) "wtC" = ( /turf/open/floor/shiva{ dir = 6; @@ -26801,14 +26732,14 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/exterior/cp_lz2) -"wuw" = ( -/obj/item/lightstick/red/spoke/planted{ - layer = 3.1; - pixel_x = -13; - pixel_y = 25 +"wvd" = ( +/obj/structure/prop/ice_colony/surveying_device/measuring_device{ + dir = 8; + pixel_x = -6; + pixel_y = 13 }, -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/valley) +/turf/open/auto_turf/ice/layer0, +/area/shiva/exterior/cp_s_research) "wvx" = ( /obj/structure/largecrate/random/case, /turf/open/floor/shiva, @@ -26827,6 +26758,21 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"wwl" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 3.1; + pixel_x = -13; + pixel_y = 25 + }, +/obj/structure/largecrate/random/case{ + pixel_y = 11 + }, +/obj/structure/largecrate/random/mini/chest/b{ + pixel_x = -4; + pixel_y = -5 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "wwp" = ( /obj/effect/landmark/hunter_secondary, /turf/open/auto_turf/snow/layer3, @@ -26839,9 +26785,13 @@ dir = 1 }, /area/shiva/exterior/cp_colony_grounds) -"wwW" = ( -/turf/open/auto_turf/snow/layer1, -/area/shiva/exterior/research_alley) +"wwZ" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "wxs" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/spray/cleaner{ @@ -27049,6 +26999,13 @@ dir = 1 }, /area/shiva/interior/lz2_habs) +"wLM" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/auto_turf/snow/layer0, +/area/shiva/interior/caves/cp_camp) "wMh" = ( /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) @@ -27084,6 +27041,16 @@ /obj/structure/window/framed/shiva, /turf/open/floor/plating/icefloor, /area/shiva/interior/telecomm/lz1_biceps) +"wNB" = ( +/obj/structure/machinery/door_control/brbutton{ + id = "hangar_ice_2"; + pixel_y = 28 + }, +/obj/structure/platform/shiva/catwalk{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/lz1_valley) "wOq" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/shiva{ @@ -27102,9 +27069,10 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) -"wPp" = ( -/turf/closed/wall/shiva/ice, -/area/shiva/interior/colony/research_hab) +"wPs" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/cp_s_research) "wPz" = ( /obj/effect/decal/cleanable/blood/drip{ icon_state = "3" @@ -27132,10 +27100,6 @@ "wRm" = ( /turf/open/floor/plating, /area/shiva/interior/aerodrome) -"wRL" = ( -/obj/structure/prop/ice_colony/soil_net, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/cp_s_research) "wSv" = ( /obj/item/lightstick/red/variant/planted{ pixel_x = -7; @@ -27174,15 +27138,8 @@ }, /area/shiva/interior/colony/research_hab) "wTx" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = 15; - pixel_y = -3 - }, -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -16; - pixel_y = -3 - }, -/turf/open/auto_turf/ice/layer0, +/obj/effect/spawner/random/toolbox, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "wTz" = ( /obj/structure/largecrate/random/mini/chest{ @@ -27239,6 +27196,10 @@ icon_state = "multi_tiles" }, /area/shiva/interior/colony/research_hab) +"wXs" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "wXQ" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/shiva{ @@ -27307,16 +27268,6 @@ icon_state = "bluefull" }, /area/shiva/interior/colony/n_admin) -"xbm" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) -"xbn" = ( -/obj/structure/prop/invuln/ice_prefab/trim{ - dir = 6 - }, -/turf/closed/wall/shiva/ice, -/area/shiva/interior/caves/cp_camp) "xbz" = ( /obj/structure/window/framed/shiva, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -27328,12 +27279,6 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) -"xbT" = ( -/obj/effect/landmark/static_comms/net_one, -/turf/open/floor/shiva{ - icon_state = "yellowfull" - }, -/area/shiva/interior/telecomm/lz1_biceps) "xbZ" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 8 @@ -27342,10 +27287,6 @@ dir = 1 }, /area/shiva/exterior/cp_colony_grounds) -"xct" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/auto_turf/ice/layer1, -/area/shiva/interior/caves/cp_camp) "xcE" = ( /obj/structure/inflatable/popped, /turf/open/floor/shiva{ @@ -27371,7 +27312,7 @@ dir = 4; pixel_y = 10 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer3, /area/shiva/interior/caves/cp_camp) "xeE" = ( /obj/effect/decal/warning_stripes{ @@ -27380,10 +27321,6 @@ /obj/structure/window/reinforced, /turf/open/floor/wood, /area/shiva/interior/colony/central) -"xfZ" = ( -/obj/structure/prop/ice_colony/surveying_device, -/turf/open/auto_turf/ice/layer0, -/area/shiva/interior/caves/cp_camp) "xgc" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/cp_s_research) @@ -27471,13 +27408,6 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) -"xog" = ( -/obj/structure/platform/strata, -/obj/structure/platform/strata{ - dir = 8 - }, -/turf/open/gm/river, -/area/shiva/interior/caves/cp_camp) "xoi" = ( /obj/structure/machinery/light/double{ dir = 1; @@ -27510,9 +27440,6 @@ /obj/structure/foamed_metal, /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/exterior/lz2_fortress) -"xrC" = ( -/turf/open/auto_turf/snow/layer0, -/area/shiva/exterior/research_alley) "xst" = ( /obj/item/lightstick/red/spoke/planted{ layer = 2.99; @@ -27547,6 +27474,10 @@ }, /turf/open/gm/river, /area/shiva/exterior/cp_lz2) +"xun" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/colony/research_hab) "xuz" = ( /obj/structure/machinery/space_heater, /turf/open/auto_turf/ice/layer1, @@ -27555,12 +27486,6 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/lz1_valley) -"xvd" = ( -/obj/structure/surface/rack, -/obj/item/tool/shovel/snow, -/obj/item/storage/belt/utility/full, -/turf/open/auto_turf/snow/layer3, -/area/shiva/exterior/research_alley) "xvf" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/paper_bin, @@ -27613,6 +27538,15 @@ icon_state = "redfull" }, /area/shiva/interior/colony/n_admin) +"xxY" = ( +/obj/item/lightstick/red/spoke/planted{ + layer = 2.99; + pixel_x = 12; + pixel_y = 28 + }, +/obj/structure/largecrate/random/case/double, +/turf/open/auto_turf/snow/layer4, +/area/shiva/interior/caves/cp_camp) "xyd" = ( /obj/structure/prop/invuln/minecart_tracks{ dir = 10 @@ -27697,12 +27631,29 @@ dir = 1 }, /area/shiva/interior/colony/medseceng) +"xCz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W-corner" + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -11; + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/shiva/exterior/junkyard) "xCA" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison{ icon_state = "kitchen" }, /area/shiva/interior/bar) +"xCD" = ( +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib6" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "xCN" = ( /obj/structure/prop/souto_land/pole{ dir = 1 @@ -27777,9 +27728,6 @@ }, /turf/open/auto_turf/snow/layer4, /area/shiva/exterior/cp_lz2) -"xFP" = ( -/turf/open/auto_turf/snow/layer0, -/area/shiva/interior/colony/research_hab) "xFR" = ( /turf/open/floor/shiva{ dir = 8; @@ -27799,6 +27747,9 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) +"xHv" = ( +/turf/open/auto_turf/ice/layer1, +/area/shiva/interior/aerodrome) "xIL" = ( /obj/item/powerloader_clamp, /turf/open/floor/shiva{ @@ -27831,6 +27782,22 @@ icon_state = "yellowfull" }, /area/shiva/interior/colony/research_hab) +"xLy" = ( +/obj/structure/platform/strata, +/obj/structure/platform/strata{ + dir = 8 + }, +/turf/open/gm/river, +/area/shiva/exterior/cp_s_research) +"xMs" = ( +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/obj/structure/prop/ice_colony/ground_wire{ + dir = 4 + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/interior/caves/cp_camp) "xMz" = ( /turf/closed/wall/shiva/ice, /area/shiva/exterior/lz1_valley) @@ -27864,6 +27831,13 @@ }, /turf/open/auto_turf/snow/layer0, /area/shiva/interior/caves/cp_camp) +"xMX" = ( +/obj/effect/spawner/random/toolbox, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/caves/cp_camp) "xNe" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/shiva{ @@ -27871,16 +27845,9 @@ icon_state = "redfull" }, /area/shiva/interior/colony/medseceng) -"xNO" = ( -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/research_alley) "xOb" = ( /turf/open/floor/plating/plating_catwalk/shiva, /area/shiva/interior/bar) -"xOT" = ( -/obj/item/device/flashlight/lamp/tripod/grey, -/turf/open/auto_turf/ice/layer2, -/area/shiva/interior/caves/left_spiders) "xPd" = ( /turf/open/floor/shiva{ icon_state = "radiator_tile2" @@ -27994,12 +27961,6 @@ }, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/caves/cp_camp) -"xWy" = ( -/obj/structure/flora/grass/tallgrass/ice/corner{ - dir = 5 - }, -/turf/open/auto_turf/snow/layer4, -/area/shiva/exterior/junkyard) "xXv" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/trash/plate{ @@ -28024,6 +27985,10 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_colony_grounds) +"xXQ" = ( +/obj/structure/inflatable, +/turf/open/auto_turf/snow/layer0, +/area/shiva/exterior/cp_s_research) "xXV" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/effect/landmark/objective_landmark/close, @@ -28121,6 +28086,10 @@ icon_state = "floor3" }, /area/shiva/interior/lz2_habs) +"yhA" = ( +/obj/structure/fence, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "yhX" = ( /obj/structure/surface/table, /obj/item/tool/wrench{ @@ -28195,6 +28164,12 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/shiva/prefabricated, /area/shiva/interior/colony/medseceng) +"ylF" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/auto_turf/snow/layer1, +/area/shiva/interior/caves/cp_camp) "ylO" = ( /obj/structure/machinery/colony_floodlight_switch{ pixel_y = 32 @@ -28213,7 +28188,7 @@ /obj/structure/prop/ice_colony/ground_wire{ dir = 4 }, -/turf/open/auto_turf/snow/layer0, +/turf/open/auto_turf/snow/layer1, /area/shiva/interior/caves/cp_camp) "ylZ" = ( /obj/structure/machinery/light/double, @@ -28360,22 +28335,22 @@ puZ puZ puZ puZ -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD -qgD +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28505,39 +28480,39 @@ puZ puZ puZ puZ -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -aIO -pxA -pxA -pxA -pxA puZ puZ puZ -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28660,46 +28635,46 @@ puZ puZ puZ puZ -asz -asz -asz -asz -asz -asz puZ -pxA -ueu -mMa -euA -vKu -euA -euA -vKu -rhS -oqQ -oqQ -rhS -ueu -pxA -pxA -pxA -pxA -pxA -sym -ctk -ugP -pxA -pxA -xwi -thc -ckI -dTn -pxA -pxA -rZt -rZt -rZt -pxA +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28820,48 +28795,48 @@ puZ puZ puZ puZ -asz -asz -asz -goj -djO -goj -goj -asz -pxA -pxA -lkX -ffw -uim -vKu -uim -ffw -lkX -vKu -vKu -vKu -vKu -vKu -uLu -pxA -pxA -bJi -bJi -euA -vPR -euA -euA -bJi -euA -euA -vPR -euA -bJi -euA -euA -bJi -rZt -pxA +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -28982,50 +28957,50 @@ puZ puZ puZ puZ -asz -fjd -rZt -djO -kts -wAM -djO -asz -pxA -pxA -ift -smI -hUG -vKu -udJ -euA -ift -pKP -nNN -kZy -pKP -vKu -uLu -pxA -pxA -bJi -rZt -dTU -dTU -dTU -dTU -rZt -dTU -dTU -dTU -dTU -rZt -dTU -rZt -mwF -rZt -pxA -kTd -kTd +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +hFl +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29144,51 +29119,51 @@ puZ puZ puZ puZ -asz -wgp -rZt -goj -qNK -hrb -goj -wnK -rZt -vKu -lkX -ift -sQU -vKu -sQU -ift -lkX -rhS -oqQ -oqQ -lNm -vKu -pxA -pxA -ctk -mwF -chU -bJi -euA -euA -euA -bJi -euA -euA -euA -euA -bJi -bJi -chU -mwF -rZt -twi -kue -kTd -flN +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +jCE +jCE +jCE +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29303,55 +29278,55 @@ puZ puZ puZ puZ +tlB +oRH +tlB +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +jCE +jCE +kAg +jCE +jCE +puZ +puZ puZ puZ puZ -asz -tqs -rZt -goj -rZt -fHM -goj -wnK -rZt -vKu -wnK -rZt -rZt -wnK -rZt -rZt -wnK -vKu -vKu -vKu -vKu -vKu -bqy -pxA -ugP -mwF -chU -mwF -pxA -pxA -pxA -pxA -wnK -vKu -xIL -vKu -wnK -bJi -chU -bJi -rZt -twi -flN -flN -kue -flN puZ puZ puZ @@ -29451,6 +29426,8 @@ puZ puZ puZ puZ +ntJ +ntJ puZ puZ puZ @@ -29461,6 +29438,21 @@ puZ puZ puZ puZ +hBq +tlB +hBq +hBq +oRH +tlB +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29468,52 +29460,35 @@ puZ puZ puZ puZ -asz -asz -rZt -goj -rZt -rZt -goj -wnK -xEB -vKu -wnK -rZt -rZt -eFQ -rZt -rZt -wnK -vKu -vKu -vKu -vKu -vKu -jqT -pxA -ctk -cVy -chU -mwF -pxA -kRV -kVe -wnK -mwF -mwF -yiS -mwF -vKu -mwF -chU -mwF -rZt -flN -flN -flN -kTd -kTd +puZ +puZ +puZ +snN +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +oaP +jCE +jCE +jCE +jCE +jCE +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -29612,6 +29587,9 @@ puZ puZ puZ puZ +wMh +ntJ +ntJ puZ puZ puZ @@ -29621,6 +29599,13 @@ puZ puZ puZ puZ +hBq +tlB +oRH +oRH +oRH +hBq +oRH puZ puZ puZ @@ -29630,68 +29615,58 @@ puZ puZ puZ puZ -asz -iIe -rZt -goj -fHM -rZt -goj -wnK -rZt -vKu -vKu -vKu -vKu -vKu -vKu -vKu -toN -vKu -vKu -dgF -hEE -wnK -pxA -pxA -pxA -wnK -wnK -wnK -pxA -hQO -pve -wnK -flN -wAP -flN -dJS -flN -mwF -chU -mwF -rZt -rZt -wBf -pxA -kTd -kue -flN puZ puZ -"} -(10,1,1) = {" puZ puZ puZ -caS -caS -caS -dsD -gpn -caS -caS -caS +puZ +puZ +puZ +uqb +uqb +uqb +kLM +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +hFl +jLx +iWS +jCE +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(10,1,1) = {" +puZ +puZ +puZ +caS +caS +caS +dsD +gpn +caS +caS +caS aac aac tQN @@ -29773,15 +29748,63 @@ puZ puZ puZ puZ +ntJ +wMh +wMh +wMh puZ puZ puZ -aau -aau -aau puZ puZ puZ +xAS +xAS +hBq +tlB +oRH +oRH +tlB +tlB +oRH +tlB +hBq +puZ +puZ +puZ +puZ +puZ +puZ +slO +slO +slO +puZ +puZ +mev +cQW +rbA +aDM +cko +rLu +rLu +nMR +uqb +uqb +uqb +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +jCE puZ puZ puZ @@ -29789,56 +29812,8 @@ puZ puZ puZ puZ -lhu puZ puZ -asz -bNu -rZt -djO -qCs -pPt -goj -wnK -qyE -wnK -asz -fNE -fNE -fNE -pxA -xvS -xvS -pxA -pxA -iQe -qaF -chU -pxA -pxA -pxA -vKu -vKu -vKu -pxA -lGU -wnK -wnK -aPd -aRz -aXi -bag -flN -mwF -chU -mwF -rZt -flN -flN -pxA -flN -kTd -kue puZ puZ "} @@ -29935,14 +29910,62 @@ puZ puZ puZ puZ +jmW +jmW +jmW +wMh +ntJ +puZ +puZ +puZ +vrG +gXu +xAS +xAS +oRH +hBq +oRH +tlB +oRH +xAS +xAS +oRH +hBq +oRH +puZ +puZ +puZ +puZ +puZ +slO +slO +slO +slO +puZ +lLv +cQW +rbA +uqb +mNs +xMz +slO +ofl +uqb +uqb +aDM +uqb +uqb +uqb +uqb +riV +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ -pct -hsu -hsu -aaP -aau -aau puZ puZ puZ @@ -29950,57 +29973,9 @@ puZ puZ puZ puZ -clK puZ puZ puZ -asz -iqt -rZt -goj -axa -hVs -djO -dBB -rZt -rZt -fNE -sdF -biM -biM -fNE -rZt -vKu -pxA -pxA -rZt -hEE -chU -gFb -sfM -oHF -wnK -wnK -wnK -pxA -lYG -wnK -wnK -aPe -aSJ -aXn -bah -flN -mwF -chU -mwF -flN -rZt -rZt -flN -flN -kTd -kue puZ puZ "} @@ -30097,72 +30072,72 @@ puZ puZ puZ puZ +wMh +wMh +wMh +jmW +ntJ +puZ +puZ +xAS +xAS +xAS +xAS +aFO +xAS +oRH +nmf +dcn +fVq +wwl +gpj +tlB +oRH +hBq +puZ +puZ +puZ +puZ +slO +slO +slO +poz +hhT +puZ +bCr +cTU +iOp +qza +mNs +slO +slO +ofl +uqb +xvb +kGW +aDM +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ -pct -hsu -aav -clK -uoZ -aau puZ puZ puZ -aav -clK -aav -clK -aav puZ puZ puZ -asz -asz -asz -goj -goj -djO -goj -wnK -rZt -rZt -fNE -nPH -biM -biM -fNE -chU -wnK -vFX -pxA -iQe -qaF -chU -kyu -drx -rZt -chU -rZt -chU -fNE -mHU -pDp -wnK -aQm -aXc -aXI -bbG -flN -mwF -chU -mwF -rZt -flN -rZt -flN -flN -flN -kue puZ puZ "} @@ -30259,72 +30234,72 @@ puZ puZ puZ puZ -puZ -aaw -hsu +wMh +wMh +wMh uoZ -clK -clK -aav -clK -aav -aav -rpE -clK -aav -aaP -aav -clK -dCY -asz -asz -asz -asz -asz -wnK -wnK -wnK -wnK -wnK -rZt -rZt -asz -wTm -biM -biM -fNE -chU -vKu -vQm -pxA -rZt -iQe -wnK -gFb -nMk -chU -rZt -chU -rZt -fNE -mWE -pDu -wnK -flN -flN -flN -flN -flN -mwF -chU -fww -sNX -dAt -flN -pxA -flN -flN -kue +ntJ +puZ +puZ +gEn +xAS +xAS +xAS +aFO +hBq +oRH +tlB +xxY +eHY +saA +oRH +lfe +oRH +oRH +puZ +puZ +puZ +puZ +vZS +vZS +niL +hic +aDM +uqb +uqb +uqb +uqb +mfa +jqx +slO +ivE +oqH +uqb +aDM +kLM +kLM +xvb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ "} @@ -30421,72 +30396,72 @@ puZ puZ puZ puZ +wMh +jmW +wMh +wMh +wMh +puZ +puZ +gEn +tlB +oRH +aFO +aFO +aFO +hBq +hBq +xAS +oRH +xAS +oRH +oRH +oRH +xAS +xAS +kvQ +uqb +aDM +uqb +uqb +uqb +uqb +uqb +uqb +qza +kLM +hXX +kLM +mOv +niL +hic +kLM +uqb +uqb +aDM +xvb +uqb +uqb +uqb +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ -aaw -hsu -clK -aau -aau -clK -aav -hsu -aav -rpE -clK -aav -clK -aav -clK -dCY -asz -wFB -eSt -wFB -dTU -rZt -gAV -rZt -dTU -asz -asz -asz -asz -asz -goj -goj -fNE -chU -wnK -pxA -pxA -pxA -pxA -pxA -pxA -mcw -rZt -chU -rZt -chU -pxA -pxA -pxA -wnK -mwF -mwF -mwF -mwF -vKu -mwF -chU -uOR -rZt -acP -flN -pxA -flN -flN -kue puZ puZ "} @@ -30582,73 +30557,73 @@ puZ puZ puZ puZ +wMh +jmW +jmW +wMh +puZ +puZ +puZ +puZ +lhP +dcn +fVq +vwx +aFO +dDj +aFO +aFO +aFO +aFO +aFO +xAS +oRH +oRH +xAS +xAS +kvQ +iOu +kLM +kLM +kLM +kLM +kLM +uqb +uqb +uqb +uqb +kLM +iQq +uqb +uqb +kLM +kLM +kLM +uqb +uqb +uqb +uqb +kLM +uqb +kLM +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ -aaU -uoZ -aav -aau -dRb -dRb -aau -clK -clK -aau -dRb -dRb -dRb -dRb -aaL -abL -dCY -asz -gha -uuN -sNX -rZt -chU -gAV -chU -rZt -asz -dnH -jft -ghS -asz -goj -goj -pxA -rZH -vKu -ghU -pxA -vQm -vFX -pxA -pxA -wnK -wnK -wnK -wnK -wnK -pxA -rZt -vKu -vKu -wnK -vKu -wnK -vKu -wnK -bJi -chU -fww -gaJ -dAt -rZt -rZt -flN -flN -kTd puZ puZ "} @@ -30743,74 +30718,74 @@ puZ puZ puZ puZ +wMh +wMh +wMh +wMh +puZ +puZ +puZ +puZ +puZ +xAS +eSf +xAS +hEx +aFO +aFO +aFO +aFO +elf +too +xAS +oRH +aFO +aFO +xAS +aFO +iQq +iQq +iQq +iQq +uqb +uqb +uqb +uqb +kLM +kLM +iQq +gCx +uqb +uqb +qkI +iQq +kLM +kLM +kLM +kLM +gCx +kLM +uqb +uqb +aDM +upf +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ -clK -aav -clK -aav -tkB -tue -dRb -clK -hsu -aav -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -asz -wFB -eSt -wFB -dTU -rZt -gAV -rZt -txX -kRj -qOZ -cEj -qOZ -goj -fwv -goj -bXo -chU -kQJ -vKu -wnK -vKu -wnK -vKu -kap -rZt -crF -crF -crF -wnK -vKu -wnK -chU -rZt -chU -rZt -chU -rZt -chU -rZt -chU -mwF -byr -rZt -rZt -flN -flN -kTd -kue puZ puZ "} @@ -30905,74 +30880,74 @@ puZ puZ puZ puZ -clK -aav -hsu -aau -clK -trw -qPj -abL -clK -aav -aaL -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -asz -rZt -byr -rZt -rZt -chU -gAV -chU -iaK -feA -biM -biM -biM -uuv -yhX -goj -pxA -rZt -dTU -hWY -dTU -dTU -dTU -rZt -kap -rZt -crF -crF -crF -wnK -vKu -wnK -chU -rZt -chU -rZt -chU -rZt -chU -rZt -chU -mwF -bgC -flN -flN -rZt -flN -kTd -flN +wMh +lqT +wMh +puZ +puZ +puZ +puZ +puZ +puZ +xAS +xAS +aFO +aFO +aFO +aFO +xAS +xAS +oRH +uIO +oRH +oRH +xAS +tlB +xAS +xAS +kvQ +oUu +uqb +kLM +kLM +uqb +iQq +gCx +kLM +uqb +kLM +iQq +iQq +kLM +kLM +kLM +kLM +kLM +iQq +iQq +kLM +kLM +kLM +uqb +uqb +uqb +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ "} @@ -31066,86 +31041,86 @@ puZ puZ puZ puZ -hsu +jmW pct -clK -clK -aav -clK -aaw -abL -clK -aav -hsu -abD -tkB -tue -dRb -dRb -dRb -dRb -dRb -dRb -asz -eaa -rZt -rZt -rZt -chU -gAV -chU -iaK -kTI -biM -xtI -qOd -goj -wnK -goj -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -pxA -wnK -wnK -wnK -wnK -wnK -pxA -rZt -vKu -vKu -wnK -vKu -wnK -vKu -wnK -bJi -chU -fww -sNX -dAt -flN -rZt -flN -kTd -puZ -puZ -puZ -"} -(19,1,1) = {" -puZ -puZ -puZ -caS -caS -mFm -mFm +wMh +pcY +pcY +pcY +pcY +pcY +pcY +oRH +xAS +aFO +aFO +aFO +aFO +xAS +oRH +tkS +xAS +aFO +oRH +xAS +oRH +xAS +xAS +xAS +kvQ +uqb +dgG +kLM +kLM +kLM +kLM +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +gCx +kLM +kLM +uqb +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(19,1,1) = {" +puZ +puZ +puZ +caS +caS +mFm +mFm mFm mFm mhP @@ -31227,75 +31202,75 @@ puZ puZ puZ puZ -clK -uoZ -hsu -aau -aaP -clK -aau -aau -clK -aaE +wMh +jfO +jmW aau -hsu -uoZ -trw -qPj -dRb -dRb -dRb -dRb -dRb -dRb -asz -rZt -bgC -rZt -rZt -chU -gAV -chU -rZt -asz -biM -biM -biM -goj -lpA -uWA -pxA -tNP -lFp -jcv -fqJ -cSn -pxA -pxA -pxA -rZH -rZt -chU -rZt -rZt -pxA -pxA -pxA -wnK -mwF -mwF -mwF -mwF -vKu -mwF -chU -uOR -uuN -acP -flN -pxA -flN -kTd +ntJ +ntJ +wMh +wMh +wMh +oRH +xAS +aFO +aFO +aFO +oRH +xAS +eUn +tlB +xAS +aFO +xAS +xAS +oRH +oRH +rzw +nUk +xMz +xMz +uqb +uqb +kLM +kLM +gCx +iQq +iQq +cQW +cQW +cQW +iQq +iQq +iQq +gGH +iQq +iQq +cQW +cQW +cQW +cQW +kLM +iQq +iQq +iQq +kLM +uqb +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -31389,75 +31364,75 @@ puZ puZ puZ puZ -aav -clK -abC -clK -aau -aav -hsu -clK -clK -aau -clK -pct -hsu -aaL -dRb -dRb -dRb -dRb -aau -aau -dRb -asz -dAt -sNX -dAt -rZt -chU -gAV -chU -rZt -bXo -biM -biM -biM -goj -xJA -goj -bXo -vKu -soj -wnK -wnK -cSn -pxA -pxA -pxA -wnK -wnK -wnK -wnK -wnK -pxA -kRV -pEv -wnK -flN -flN -flN -flN -flN -mwF -chU -fww -sNX -dAt -rZt -pxA -kTd -flN +lqT +wMh +lqT +wMh +wMh +jmW +jmW +wMh +oRH +oRH +xAS +aFO +aFO +xAS +xAS +tlB +nig +mME +fVq +fXr +oRH +oRH +xAS +kRq +aFc +wMh +xMz +xMz +aDM +uqb +kLM +kLM +gGH +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +cQW +cQW +cQW +cQW +kLM +gGH +cQW +iQq +kLM +uqb +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -31551,74 +31526,74 @@ puZ puZ puZ puZ -aav -clK -aav -clK -aav -dRb -dRb -abI -clK -aau -aau -clK -aav -abD -dRb -dRb -aav -aav -hsu -clK -dRb -asz -gha -rZt -sNX -rZt -chU -gAV -chU -rZt -asz -wqc -tOq -hXQ -asz -goj -goj -pxA -vKu -wnK -wnK -cSn -pxA -pxA -sIX -chU -rZt -chU -rZt -wnK -pxA -pxA -nmT -pve -wnK -aPd -aRz -aXi -bag -flN -mwF -chU -mwF -flN -wBf -pxA -pxA -kTd +lqT +wMh +lqT +wMh +wMh +wMh +wMh +wMh +oRH +hBq +xAS +aFO +xAS +xAS +hBq +xAS +pcY +cIs +hBq +pCw +xAS +oRH +xAS +xAS +mfc +xMz +xMz +aDM +uqb +uqb +kLM +iQq +iQq +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +cQW +iQq +kLM +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -31712,78 +31687,78 @@ puZ puZ puZ puZ -aav -hsu -aav -aav -clK -dRb -dRb -tkB -tue -xOT -aau -clK -aav -hsu -hsu -abD -rpE -hsu -hsu -uoZ -clK +lqT +jmW +lqT +lqT +wMh +abH +wMh +oRH +oRH +hBq +xAS +aFO +aFO +xAS +xAS +oRH +pcY +pcY +pcY +pcY +pcY aat -asz -dAt -sNX -dAt -rZt -chU -gAV -chU -asz -asz -asz -asz -asz -asz -asz -asz -pxA -vdS -wnK -vKu -pxA -pxA -ahu -wnK -wnK -wnK -wnK -mUT -uYt -amu -pxA -nrr -wnK -wnK -aPe -act -acA -bah -flN -mwF -chU -bJi -rZt -flN -flN -rZt -flN +oRH +oRH +xAS +oRH +xMz +xMz +aDM +uqb +kLM +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +kLM +kLM +aDM +aDM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ -ifQ puZ "} (23,1,1) = {" @@ -31874,75 +31849,75 @@ puZ puZ puZ puZ -uoZ -aav -clK -aaL -abD -dRb -dRb -trw -qPj -abD -hsu -aau -clK -aau -clK -uoZ -rpE -aav -aav -clK -aav -aat -asz -asz -asz -asz -asz -chU -gAV -chU -adS -aea -ptr -aew -aew -aex -asz -asz -lXy -nxA -vKu -vKu -bUe -rZt -chU -rZt -chU -dwQ -wnK -pxA -amu -amu -pxA -nzf -wnK -wnK -aQm -aXc -aXI -bbG -flN -mwF -chU -bJi -bJi -wBf -flN -kTd -kTd +jfO +lqT +wMh +wMh +wMh +oRH +oRH +oRH +tlB +tlB +xAS +aFO +aFO +xAS +oRH +oRH +pcY +pcY +pcY +pcY +pcY +pcY +cIZ +tlB +xAS +oRH +xMz +xMz +kLM +uqb +kLM +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +iQq +kLM +kLM +uqb +kLM +uqb +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32037,73 +32012,73 @@ puZ puZ puZ rpE -rpE -rpE -dRb -dRb -dRb -dRb -dRb +jmW +jmW +pcY +pcY +xAS +oRH +oRH +tlB +xAS +tlB +xAS +xAS +oRH +xAS +oRH +pcY +pcY +pcY +pcY +pcY +pcY +yhA dRb -abO -aav -hsu -aaE -aav -aau -clK -rpE -aav -aaP -aav -clK -aat -aat -aat -aat +tlB dRb -asz -chU -gAV -chU -adT -rZt -rZt -rZt -rZt -mRU -aex -asz -nVn -iCJ -pxA -pxA -pxA -wnK -wnK -wnK -wnK -mUT -wnK -amu -jrg -jrg -pxA -nHH -pDp -wnK -flN -flN -flN -flN -flN -mwF -rZt -rZt -mwF -pxA -kTd -kTd +yhA +xMz +uqb +kLM +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +boD +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +iQq +iQq +iQq +iQq +kLM +lMO +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32193,78 +32168,78 @@ tlB puZ wMh wMh -aFO -fuz -aFO -dJl -fuz -aFO +tlB +vym +tlB +sDd +vym +xAS wMh abB -dRb -dRb -dRb -dRb -dRb -dRb -tkB -tue -aav -hsu -clK -clK -aav -rpE -clK -aav -clK -aav -clK -clK -clK -clK -dRb -asz -chU -gAV -chU -adV -rZt -rZt -rZt -rZt -rZt -mOu -asz -asz -asz -asz -asz -rZt -flN -rZt -rZt -dwQ -pxA -amu -amu -jrg -jrg -pxA -mWE -pJA -wnK -mwF -mwF -mwF -mwF -vKu -bJi -bJi -chU -mwF -pxA -flN +pcY +pcY +xAS +xAS +tlB +xAS +tlB +xAS +tlB +oRH +ben +vpD +vpD +pcY +pcY +pcY +pcY +pcY +pcY +pcY +tlB +xAS +tlB +tlB +xMz +uqb +uqb +kLM +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +iQq +iQq +kLM +kLM +ath +aDM +kLM +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32355,102 +32330,102 @@ tlB tlB oRH oRH -elN +pGi jmW -tPs -elN +ohd +pGi jmW -tPs +nEU abv wMh -dRb -dRb -dRb -dRb -dRb -dRb -trw -qPj -clK -uoZ -clK -aav -clK -rpE -aav -clK -uoZ -mOT -uoZ -aav -dRb -dRb -dRb -asz -rZH -gAV -chU -adW -aeb -rZt -miD -miD -adi -aCB -asz -asz -asz -asz -wnK -wnK -wnK -wnK -dwQ -flN -jrg -jrg -jrg -jrg -jrg -pxA -pxA -pxA -wnK -wnK -vKu -wnK -vNN -wnK -rZt -mwF -chU -mwF -pxA -puZ -puZ -puZ -puZ -puZ -puZ -puZ -"} -(27,1,1) = {" -puZ -puZ -puZ -caS -caS -mFm -mFm -mFm -mFm -mhP -jLc -mFm -mFm -aar -mFm -gkY +pcY +aFO +aFO +wMh +uir +uir +wMh +xAS +oRH +oRH +vpD +vpD +qFx +pcY +pcY +pcY +pcY +pcY +pcY +tlB +xAS +aFO +xAS +tlB +xMz +uqb +uqb +uqb +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +iQq +kLM +kLM +lNg +uqb +kLM +kLM +vNN +kAw +kAw +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(27,1,1) = {" +puZ +puZ +puZ +caS +caS +mFm +mFm +mFm +mFm +mhP +jLc +mFm +mFm +aar +mFm +gkY gkY gkY gkY @@ -32514,80 +32489,80 @@ oRH oRH jVi oRH -xAS -aFO -aFO -vtz -pMV +tlB +tlB +tlB +rUW +xMs jqo -aFO -pMV -aFO +tlB +rld +tlB +xAS +wMh +wMh aFO wMh +jOi +ecx +uir +uir wMh -dRb -dRb -dRb -dRb -dRb -dRb -dRb -uoZ -clK -aav -clK -aav -dRb +hBq +xAS +vpD +vpD +vpD +ccu leg -uoZ -hsu -pct -dRb -dRb -dRb -dRb -dRb -asz -chU -gAV -chU -asz -asz -aed -asz -asz -aez -mRU -aeQ -asz -asz -rZt -flN -rZt -dwQ -flN -flN -amu -bJj -jrg -jrg -jrg -jrg -jrg -jrg -pxA -wnK -wnK -pxA -pxA -pxA -pxA -pxA -mwF -chU -mwF -pxA +pcY +pcY +pcY +pcY +rkG +xAS +aFO +xAS +tlB +xMz +aDM +uqb +uqb +kLM +iQq +iQq +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +cQW +iQq +kLM +kLM +wgM +kLM +ath +iQq +vNN +cwZ +kAw +puZ +puZ +puZ +puZ puZ puZ puZ @@ -32676,80 +32651,80 @@ jmW tlB oRH xAS -aFO +tlB vtz -aFO -aFO +xAS +tlB mCQ pPK eFI -aFO +tlB vtz gva -aFO +xAS wMh eFI wMh -dRb -dRb -dRb -dRb -dRb -hsu -aav -aav -dRb -dRb -dRb -aaw -aav +jOi +jOi +xMX +uir +wMh +wMh +wMh aav -dRb -dRb -lSU -lSU -lSU -lSU -lSU -chU -gAV -rZt -dTU -dTU -dTU -rZt -fNE -aeC -rZt -aeR -asz -wnK -dwQ -wnK -wnK -wnK -dwQ -bJj -bJj -jrg -jrg -bJj -osE -jrg -jrg -jrg -pxA -wnK -wnK -pxA -pxA -pxA -pxA -pxA -vKu -vKu -vKu -pxA +ben +vpD +vpD +vpD +pcY +pcY +pcY +pcY +tlB +tlB +xAS +tlB +xAS +xMz +aDM +uqb +uqb +uqb +kLM +gGH +iQq +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +cQW +kLM +cQW +cQW +cQW +cQW +kLM +gGH +cQW +kLM +uqb +lNg +erj +kLM +tcp +iQq +vNN +cwZ +kAw +kAw +hrk +puZ +puZ puZ puZ puZ @@ -32837,81 +32812,81 @@ pcY jmW wMh oRH -aFO -aFO -oRH -oRH +tlB +tlB +xAS +xAS wMh pcY jmW nuY wMh -elN +pGi jmW -tPs +ohd wMh wMh wMh wMh +jOi +kHG +uir wMh +ntJ +ntJ +wMh +wMh +wMh +wMh +oRH +pcY +pcY +pcY +pcY +yhA dRb +xAS dRb -aav -uoZ -clK -aav -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -lSU -rHO -rHO -fgK -lSU -chU -gAV -gAV -gAV -gAV -gAV -chU -fNE -aeP -miD -aiV -asz -rZt -rZt -rZt -rZt -flN -amu -fXX -bJj -jrg -bJj -bJj -bJj -bJj -bJj -osE -pxA -wnK -wnK -pxA -pxA -pxA -pxA -pxA -mwF -chU -mwF -pxA +yhA +xMz +cnt +cnt +uqb +xvb +kLM +gCx +kLM +iQq +cQW +cQW +cQW +iQq +iQq +iQq +gGH +kLM +kLM +cQW +cQW +cQW +cQW +kLM +iQq +iQq +kLM +kLM +lNg +xMz +xMz +iQq +kLM +vNN +cwZ +kAw +kAw +hrk +ugC +puZ puZ puZ puZ @@ -33008,72 +32983,72 @@ pcY pcY pcY wMh -aFO -pMV -dJl -aFO -aFO -aFO +tlB +xMs +ilW +xAS +xAS wMh -eFI +jOi +jOi wMh -dRb -rpE -rpE -rpE -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -dRb -ocl -dwQ -dwQ -dwQ -bXo -rZt -dTU -dTU -rZt -gAV -gAV -chU -asz -asz -asz -asz -asz -wnK -wnK -dwQ -wnK -fXX -bJj -bJj -gpz -gpz -gpz -bJj -osE -osE -gpz -gpz -xTK -fXX -fXX -jrg -jrg -jrg -jrg -pxA -xcE -ggL -xcE -pxA +uir +wMh +jmW +ntJ +jmW +ntJ +wMh +wMh +pcY +pcY +pcY +pcY +pcY +pcY +tlB +xAS +xAS +hBq +xMz +xMz +xMz +xMz +oqf +uqb +kTP +kLM +kLM +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +iQq +qkI +iQq +uqb +kLM +aDM +xMz +xMz +xMz +iQq +vNN +cwZ +kAw +kAw +kAw +hrk +puZ puZ puZ puZ @@ -33170,72 +33145,72 @@ pcY pcY pcY ouS -aFO +tlB jpp wMh wMh wMh +tlB +xAS wMh -aFO -aFO wMh -abP wMh +jmW +wMh +wMh +ntJ +jmW wMh -abB pcY pcY +tlB +hBq +tlB pcY -lSU -dRb -dRb -abY -abY -dRb -lSU -dwQ -dwQ -lSU -lSU -lSU -lSU -lSU -shO -gAV -gAV -chU -rZt -rZt -ahB -rZt -rZt -rZt -rZt -rZt -rZt -bJj -bJj -osE -gpz -bJj -bJj -bJj -bJj -bJj -gpz -gpz -rad -fXX -osE -gRJ -jrg -jrg -jrg -pxA -mwF -chU -mwF -pxA +hBq +tlB +xAS +aFO +tlB +hBq +xMz +xMz +xMz +xMz +aDM +uqb +kLM +gCx +kLM +kLM +kLM +kLM +kLM +kLM +iQq +iQq +kLM +iQq +iQq +kLM +uqb +iQq +iQq +iQq +kLM +xvb +uqb +uCs +xMz +xMz +xMz +xMz +cwZ +cwZ +kAw +kAw +kAw +hrk puZ puZ puZ @@ -33332,72 +33307,72 @@ pcY pcY pcY laz -aFO -aFO +tlB +tlB yjM kSO qBM -wMh -aFO -aFO -wMh +tlB +tlB xAS xAS -abQ +xAS +xAS +hBq +wMh +wMh +ntJ wMh -pcY -pcY -pcY -lSU dRb -abX -ors -ors -lSU -lSU -dwQ -dwQ -lSU -ada -ady -adE -lSU -goj -goj -goj -goj -goj -goj -goj -goj -goj -wnK -wnK -dwQ -flN -fXX -bJj -bJj -osE -bJj -bJj -gpz -gpz -bJj -bJj -xuz -ciL -bJj -bJj -bJj -jrg -jrg -jrg -amu -fXX -fXX -fSR -amu +xAS +hBq +tlB +tlB +hBq +tlB +tlB +tlB +xAS +aFO +tlB +xAS +tlB +xAS +kvQ +kLM +xvb +kLM +kLM +kLM +kLM +kLM +gCx +kJQ +kLM +qkI +iQq +kLM +iOu +kLM +iQq +qkI +lNg +kLM +lNg +uqb +uqb +xMz +xMz +xMz +xMz +xMz +xMz +cwZ +cwZ +kAw +kAw +kAw +kAw puZ puZ puZ @@ -33489,77 +33464,77 @@ wMh tQn nBo tlB -oRH +xAS sFj pcY kBo obH -aFO -aFO +tlB +tlB cQY rJI gso -pcY -wMh +tlB +tlB +tlB +oRH wMh -aFO -aFO +tlB +xAS xAS wMh -iZI ntJ -ntJ -pcY -lSU -abV -skl -skl -ors -elw -dwQ -dwQ -dwQ -lSU -ada -dwQ -dwQ -adI -goj -chU -goj -chU -chU -chU -goj -chU -aiD -rZt -flN -rZt -dwQ -bJj -osE -bJj -osE -osE -osE -gpz -bJj -gpz -gpz -bJj -ciL -gpz -bJj -xuz -jrg -jrg -jrg -amu -bJj -fSR -fXX -amu +wMh +mpI +hBq +tlB +tlB +xAS +xAS +xAS +xAS +xAS +xAS +xAS +aFO +xAS +tlB +xAS +cdh +aDM +uqb +kLM +kLM +uqb +uqb +kLM +kLM +kLM +iQq +bzK +iQq +iQq +kLM +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +xMz +xMz +xMz +xMz +xMz +xMz +kAw +kAw +kAw +kAw +kAw +kAw puZ puZ puZ @@ -33651,119 +33626,119 @@ pcY pcY pcY xeq -aFO +xAS tze wMh wMh pWn -aFO +tlB tTc cQY aNy xtc -nKD +tlB wMh wMh -vtz -aFO -aFO +tlB +tlB +tlB +xAS xAS wMh wMh -ntJ +aaA wMh -lSU -sgB -skl -skl -ors -dwQ -elw -dwQ -dwQ -adI -adj -dwQ -adH -lSU -goj -wnK -goj -wnK -wnK -wnK -goj -txU -goj -rZt -rZt -flN -asz -jrg -jrg -jrg -osE -osE -osE -osE -bJj -bJj -bJj -bJj -sLj -sLj -tnG -jrg -jrg -jrg -jrg -nkH -bJj -fXX -fSR -amu -puZ -puZ -puZ -puZ -puZ -puZ -puZ -"} -(35,1,1) = {" -puZ -puZ -puZ -caS -caS -mFm -mFm -mFm -caS -caS -mFm -mFm -caS -caS -mFm -lTL -caS -voH -slj -vOd -vOd -slj -las -caS -mFm -mFm -wMj -wMj -mFm -mFm -caS -voH -slj +xAS +tlB +xAS +xAS +aFO +aFO +aFO +aFO +aFO +tlB +xAS +aFO +xAS +tlB +kLM +uqb +kLM +kLM +kLM +kLM +kLM +iQq +iQq +kLM +iQq +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +xMz +xMz +xMz +xMz +xMz +xMz +kAw +kAw +kAw +kAw +kAw +kAw +puZ +puZ +puZ +puZ +puZ +puZ +puZ +"} +(35,1,1) = {" +puZ +puZ +puZ +caS +caS +mFm +mFm +mFm +caS +caS +mFm +mFm +caS +caS +mFm +lTL +caS +voH +slj +vOd +vOd +slj +las +caS +mFm +mFm +wMj +wMj +mFm +mFm +caS +voH +slj vFq ghK slj @@ -33813,77 +33788,77 @@ wMh cQY xhU wMh -aFO -aFO -dJl -fuz -dJl -aFO -aFO -pXU +tlB +tlB +sDd +vym +sDd +tlB +tlB +nZG wMh wMh -aFO +tlB +hBq +tlB +tlB +oRH +tlB +tlB wMh wMh wMh -eFI +wMh +mpI +hBq +aFO +aFO +aFO +aFO aFO aFO xAS -wMh -ntJ -wMh -lSU -kbT -skl -skl -ors -lSU -lSU -dwQ -dwQ -lSU -dwQ -dwQ -dwQ -lSU -dtE -rZt -rZt -iXr -pue -wui -rZt -rZt -goj -asz -asz -asz -asz -asz -asz -jrg -jrg -jrg -bJj -bJj -bJj -gpz -osE -osE -bJj -osE -osE -jrg -jrg -jrg -jrg -jrg -bJj -gRJ -bJj -amu +tlB +tlB +tlB +xAS +aFO +xAS +kvQ +uqb +aDM +iQq +kLM +kLM +iQq +uqb +uqb +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +uqb +lNg +lNg +xvb +uqb +xMz +xMz +xMz +xMz +xMz +xMz +kAw +nZA +kAw +kAw +nZA +kAw puZ puZ puZ @@ -33975,77 +33950,77 @@ oRH cQY oRH sIP -aFO -aFO -elN +tlB +tlB +pGi jmW -tPs -aFO +ohd +tlB wMh wMh wMh -aFO -aFO +tlB +tlB +tlB +tlB +oRH +tlB +tlB +xAS +wMh wMh -aFO wMh +wMh +dRb +xAS +tlB +xAS aFO +xAS +xAS +tlB +tlB +xAS +xAS +xAS aFO -tTc +xAS aFO -vaT -wMh -wMh -lSU -xFP -mIx -aca -wPp -wPp -lSU -dwQ -dwQ -lSU -gpb -adC -adC -lSU -goj -wnK -goj -gKE -pue -iYc -onM -wnK -goj -asz -afz -azH -agZ -aUS -asz -jrg -jrg -jrg -jrg -jrg -bJj -gpz -osE -osE -gpz -bJj -bJj -mKF -jrg -jrg -gRJ -sUD -hXH -apD -hXH -czI +fKb +kLM +iQq +kLM +kLM +kLM +kLM +uqb +iOu +kLM +iQq +iQq +iQq +iQq +iQq +iOu +iQq +iQq +uqb +hbD +iDy +iDy +hzJ +hzJ +xMz +xMz +xMz +xMz +xMz +kAw +nZA +nZA +kAw +kAw +kAw puZ puZ puZ @@ -34135,80 +34110,80 @@ aFO aFO aFO wfP -oRH +xAS tlB oRH -aFO -dJl +tlB +sDd hCa -dJl -aFO -aFO +sDd +tlB +tlB wMh wMh -aFO -aFO -aFO -aFO -aFO -aFO -aFO -vtz -aFO +hBq +wMh +wMh +hBq +tlB +tlB xAS +tlB wMh +jmW pcY -lSU -wPp -wPp -acb -wPp -wPp -lSU -dwQ -dwQ -lSU -lSU -lSU -lSU -lSU -goj -chU -dsY -hTb -pRH -lpA -goj -chU -goj -fNE -afV -rZt -rZt -aCB -asz -jrg -jrg -jrg -jrg -bJj -bJj -bJj -gpz -gpz -gpz -bJj -bJj -bJj -jrg -gRJ -bJj -osE -gpz -bJj -bJj -jrg -puZ +pcY +pcY +pcY +hBq +xAS +xAS +pcY +pcY +xAS +xAS +xAS +xAS +cbG +ylF +tlB +uji +uji +uji +uji +uji +uAd +kbK +jpE +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +kLM +kLM +qoU +hXB +hzJ +hzJ +hzJ +xMz +xMz +xMz +xMz +kAw +kAw +kAw +kAw +kAw +kAw +hrk +hrk puZ puZ puZ @@ -34301,76 +34276,76 @@ pZB wMh wMh aaA -elN +pGi jmW swV -aFO -aFO -aFO -wMh -wMh -wMh -aFO -wMh +xAS +xAS +tlB wMh +hBq +tlB wMh -aFO -vtz +tlB +oRH +tlB +tlB wMh wMh +ntJ pcY pcY -lSU -wPp -wPp -wPp -wPp -wPp -lSU -elw -dwQ -dwQ -dwQ -dwQ -lSU -lQm -goj -chU -goj -dqH -rZt -sCl -onM -chU -goj -fNE -afX -rZt -rZt -ahS -asz -jrg -jrg -jrg -jrg -bJj -bJj -bJj -osE -bJj -bJj -gpz -bJj -bJj -jrg -osE -bJj -bJj -gpz -bJj -jrg -jrg -puZ +pcY +pcY +tlB +hBq +xAS +pcY +pcY +pcY +xAS +toO +jld +xAS +pff +tlB +uji +uji +uji +uji +uji +kLM +kLM +knI +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +kLM +uqb +uqb +uqb +qEB +hzJ +hzJ +hzJ +hzJ +kAw +hrk +kAw +kAw +kAw +kAw +kAw +nZA +kAw +kAw +kAw +kAw puZ puZ puZ @@ -34463,77 +34438,77 @@ pcY gXW gXW kQW -dJl +ilW ylU -dJl -aFO -wMh +ilW +tlB wMh -aFO wMh -aFO -aFO -aFO +xAS wMh -aFO -aFO +tlB +tlB +tlB +tlB xAS +tlB +wMh +wMh wMh pcY pcY pcY -wPp -wPp -wPp -lSU -lSU -lSU -lSU -dwQ -oaO -dwQ -dwQ -dwQ -bXo -rZt -goj -vuj -goj -eaz -rZt -nwd -goj -wnK -goj -fNE -aud -rZt -rZt -ahT -asz -jrg -jrg -jrg -jrg -bJj -bJj -bJj -bJj -bJj -bJj -bJj -gpz -gpz -bJj -osE -bJj -gpz -gpz -bJj -jrg -jrg -puZ -puZ +pcY +hBq +tlB +pcY +pcY +pcY +uKZ +iMA +aYy +bbj +aYy +iMA +uKZ +uji +uji +uji +uji +uji +uji +qhm +qhm +kXs +mcH +mcH +mcH +mcH +nEH +mcH +mcH +mcH +pNo +qhm +qhm +hzJ +hzJ +hzJ +hzJ +hzJ +kAw +kAw +kAw +hrk +hrk +kAw +nZA +nZA +kAw +kAw +kAw +kAw +hrk puZ puZ puZ @@ -34629,73 +34604,73 @@ mbt mbt abt wMh -aFO -aFO -aFO -aFO -aFO -aFO -fXQ -pcY -wMh -vtz +xAS +tlB +xAS +tlB xAS wMh -pcY +wMh +tlB +tlB wMh wMh -wPp -wPp -wPp -lSU -dwQ -dwQ -dwQ -oaO -dwQ -rEW -lSU -lSU -lSU -ehe -bxW -chU -goj -rZt -rZt -rZt -goj -chU -oag -asz -aud -rZt -rZt -tiw -asz -jrg -jrg -jrg -bJj -osE -bJj -bJj -jrg -bJj -osE -bJj -gpz -gpz -gpz -bJj -bJj -gpz -gpz -fXX -jrg -iTQ -puZ -puZ +wMh +jmW +pcY +pcY +pcY +uji +uKZ +uKZ +uji +uji +uji +uKZ +fRg +fRg +fRg +bfy +fRg +uKZ +uji +dMo +ibP +dMo +uji +uji +kLM +lNE +uqb +iOu +kLM +iQq +iQq +iQq +iQq +kLM +kLM +uqb +uqb +uqb +hzJ +huz +huz +huz +huz +ncS +ncS +ncS +huz +huz +hrk +kAw +kAw +kAw +kAw +kAw +hrk +hrk puZ puZ puZ @@ -34793,70 +34768,70 @@ gXW mbt abw wMh -aFO -aFO -aFO +tlB +tlB +xAS wMh -sFj -pcY wMh -aFO +tlB xAS wMh -iZI -ntJ +wMh ntJ wMh -wPp -wPp -lSU -dwQ -eBG -dwQ -dwQ -elw -rRP -lSU -cvn -lSU -exm -goj -rWS -fVI -rZt -rZt -rZt -goj -chU -goj -aeU -rZt -rZt -rZt -aCB -asz -jrg -jrg -jrg -osE -bJj -bJj -bJj -jrg -bJj -bJj -bJj -bJj -bJj -bJj -bJj -gpz -bJj -bJj -fXX -fXX -iTQ -puZ +pcY +pcY +pcY +uji +oYH +ahe +pvv +sKi +pvv +pvv +aWY +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +uji +aDM +uqb +uqb +uqb +kLM +kLM +iQq +iQq +iQq +iQq +kLM +kLM +sqb +lNg +aDM +aDM +huz +huz +huz +huz +tRN +rdS +xvQ +huz +huz +kAw +kAw +kAw +kAw +nZA +kAw +hrk puZ puZ puZ @@ -34954,110 +34929,110 @@ idR jHg aui ecz -aFO -aFO -aFO -wMh -jmW -pcY -pcY -pcY -aFO -aFO +tlB +tlB +tlB xAS -iZI +tlB +tlB +tlB +tlB wMh wMh ntJ -wPp -wPp -lSU -dwQ -lSU -lSU -lSU -lSU -lSU -lSU -dwQ -lSU -qRo -goj -wnK -goj -kMJ -rZt -neS -goj -wnK -oag -asz -agl -rZt -rZt -apk -asz -jrg -jrg -jrg -osE -bJj -bJj -jrg -jrg -bJj -bJj -gpz -gpz -bJj -bJj -bJj -gpz -bJj -fXX -bJj -fXX -amu -puZ -puZ -puZ -puZ -puZ -puZ -puZ -"} -(43,1,1) = {" -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -eni -mMK -ntc -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -ntc -vYm -vYm -vYm -vYm -eni -ntc -ntc +ntJ +pcY +pcY +pcY +uji +dtr +oYH +pvv +aTn +pvv +pvv +pvv +pvv +pvv +bfi +pvv +pvv +pvv +pvv +pvv +fRg +hGj +kLM +iOu +uqb +kJQ +uqb +iQq +iQq +iQq +iQq +kLM +iQq +kLM +uqb +kLM +que +aDM +huz +kys +pef +rdS +axJ +axJ +xvQ +fXB +ncS +kAw +nZA +kAw +kAw +nZA +kAw +hrk +puZ +puZ +puZ +puZ +puZ +puZ +"} +(43,1,1) = {" +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +puZ +eni +mMK +ntc +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +ntc +vYm +vYm +vYm +vYm +eni +ntc +ntc eni eni ntc @@ -35118,69 +35093,69 @@ tes sPo wMh tze -aFO -xbm -pcY -pcY -pcY +tlB +tlB +tlB +tlB +xAS +xAS wMh wMh -vtz -aFO -cyW -xAS wMh wMh wMh -iZI -lSU -jis -lSU -acU -acU -lSU -lSU -lSU -fgH -lSU -bYk -goj -chU -dsY -uKo -rZt -wjK -goj -vTj -goj -asz -agm -rZt -rZt -ard -asz -asz -asz -jrg -bJj -bJj -bJj -jrg -jrg -jrg -bJj -gpz -bJj -gpz -bJj -osE -jrg -amu -fXX -fXX -bJj -amu -puZ +pcY +pcY +uji +fRg +oYH +pvv +pvv +aTh +aVx +aWI +aYd +baX +bcJ +pvv +pvv +pvv +pvv +pvv +fRg +hGj +kLM +iQq +kLM +uqb +kLM +iQq +iQq +iQq +iQq +iQq +kLM +iQq +iQq +kLM +kLM +kLM +huz +krU +axJ +axJ +trX +uLT +wTT +fXB +ncS +hrk +hrk +nZA +kAw +kAw +kAw +kAw puZ puZ puZ @@ -35279,70 +35254,70 @@ aRL uLf nlx wMh -aFO -aFO +tlB +tlB wMh -jmW -pcY wMh -aFO -aFO -aFO -aFO -vtz -aFO -aFO +wMh +wMh +tlB xAS wMh -iZI wMh -flN -kEs -agw -agw -kEs -wXh -lSU -cvn -lSU -wOO -goj -chU -goj -lfk -rZt -uII -aiD -chU -goj -fNE -aud -rZt -rZt -mRU -ptr -aue -asz -jrg -bJj -gpz -gpz -bJj -jrg -jrg -jrg -gpz -gpz -gpz -bJj -osE -jrg -iTQ -rbq -rbq -rbq -amu -puZ +wMh +ntJ +wMh +wMh +uKZ +fRg +oYH +pvv +pvv +aUw +aVB +aWQ +aVN +aVN +aVN +bqN +aVx +dbH +pvv +pvv +gxK +hGj +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +iQq +huz +axJ +axJ +rBC +rdS +axJ +axJ +tkm +ncS +hrk +hrk +kAw +kAw +kAw +kAw +kAw puZ puZ puZ @@ -35441,72 +35416,72 @@ wMh wMh jJv afY -aFO +tlB tTc wMh +gZk +tlB +tlB +tlB +xAS wMh wMh -aFO -aFO -aFO -aFO -aFO -aFO -tTc -vtz -aFO -eFI -xct wMh -kEs -flN -flN -kEs -flN -kOi -lSU -lSU -lSU -lSU -bxW -wnK -goj -aNf -rZt -nBs -goj -txU -goj -fNE -aud -ptr -miD -miD -rZt -ava -asz -asz -dVw -gpz -gpz -bJj -bJj -jrg -bJj -bJj -gpz -bJj -bJj -jrg -jrg -amu -rbq -rbq -rbq -amu -puZ -puZ -puZ +wMh +ntJ +ntJ +uKZ +aQg +oYH +pvv +aTh +aUx +aVL +aWS +rNx +bbg +rNx +aWS +bYO +aWQ +dbH +fhv +fRg +hGj +kLM +kLM +iQq +iQq +kLM +vdk +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +tpg +exX +qIr +axJ +axJ +axJ +dQq +axJ +huz +huz +huz +hrk +kAw +kAw +kAw +kAw +kAw +fNf +oFl puZ puZ puZ @@ -35602,75 +35577,75 @@ wMh ntJ wMh wMh +tlB +tlB +hBq +pcY wMh -aFO -aFO -aFO -aFO -aFO -aFO -wMh -pWY -wMh -wMh -xAS -xAS +tlB +tlB +tlB wMh +pcY +pcY wMh -tig wMh -eFI -flN -kEs -kEs -fgB -kEs -kOi -lSU -coj -coj -lSU -dtE -rZt -rZt -rZt -rZt -mgT -rZt -uvU -goj -fNE -aud -miD -ptr -ptr -rZt -aCB -aeU -dwQ -bJj -bJj -bJj -bJj -bJj -bJj -bJj -bJj -gpz -bJj -bJj -bJj -jrg -amu -gpz -bJj -osE -amu -puZ -puZ -puZ -puZ -puZ +ntJ +ntJ +uKZ +aQg +oYH +pvv +aTi +aUy +aVL +vVq +aVL +aVL +aVL +aWS +clp +aVU +aUA +gIQ +fRg +hGj +uqb +uqb +uqb +kLM +iQq +ipc +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +iQq +eSN +akF +alS +aMW +wHx +dQq +axJ +axJ +huz +huz +huz +hrk +nZA +nZA +nZA +kAw +kAw +rBk +hip +puZ +puZ puZ puZ "} @@ -35756,7 +35731,7 @@ oRH oRH tlB wMh -tlB +xAS wMh wMh oRH @@ -35764,71 +35739,71 @@ tlB tlB wMh wMh -aFO -aFO -aFO -aFO -wMh -wMh -wMh -wMh -wMh -iZI -wMh -wMh -wMh +tlB +tlB +hBq +pcY +pcY +dRb +dRb +dRb +pcY +pcY +pcY +pcY wMh -jmW -xct wMh wMh -gCL -flN -kEs -flN -flN -vTc -rMI -dTU -dTU -rMI -goj -wnK -goj -wnK -wnK -wnK -goj -wnK -goj -fNE -aud -rZt -rZt -rZt -nBh -ajg -asz -asz -jrg -jrg -jrg -cBU -cBU -cBU -bJj -bJj -bJj -gpz -bJj -bJj -bJj -bJj -fXX -osE -fXX -amu -puZ +uKZ +fRg +oYH +pvv +aTj +aUz +aVU +aWS +rPa +baY +rPa +aWS +cbk +aWU +deV +eVG +fRg +hGj +uqb +kLM +kLM +iQq +iQq +ipc +iQq +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +tpg +exX +qIr +rdS +axJ +axJ +axJ +axJ +axJ +huz +huz +sax +hrk +nZA +nZA +kAw +kAw puZ puZ puZ @@ -35925,77 +35900,77 @@ wMh oRH oRH wMh -aFO -aFO -aFO -aFO -wMh -wMh -pcY +tlB +tlB +tlB +tlB +tlB +tlB +hBq +tlB +xAS pcY pcY pcY -iZI pcY -wMh -ntJ -wMh -xct -wMh -wMh -wMh -flN -flN -eit -kEs -kEs -flN -rMI -dTU -dTU -rMI -goj -chU -goj -chU -chU -chU -goj -chU -aiD -asz -twt -agY -aha -arK -arU -asz -asz -qNE -qNE -enh -xNO -bJj -cBU -cBU -cBU -bJj -fXX -gpz -gpz -vlD -bJj -bJj -bJj -osE -bJj -amu -amu -amu -amu -amu -amu -amu +uji +uKZ +uKZ +uji +dtr +oYH +pvv +fhv +aUA +aVB +aWU +aVx +aVx +aVx +bqN +aVN +deV +dKR +pvv +fRg +hGj +kLM +iQq +iQq +iQq +iQq +iQq +kLM +kLM +uqb +kLM +iQq +iQq +iQq +iQq +iQq +tpg +exX +qIr +aut +rdS +rdS +axJ +axJ +rdS +huz +huz +sax +hrk +kAw +nZA +kAw +kAw +puZ +puZ +puZ +puZ +puZ puZ "} (49,1,1) = {" @@ -36087,77 +36062,77 @@ wMh wMh wMh wMh -aFO -aFO -aFO -aFO -aFO -wMh -pcY -pcY +tlB +tlB +oRH +tlB +tlB +tlB +tlB +tlB +xAS pcY pcY pcY pcY -jmW -abT -wMh -iZI -pWY -wMh -wMh -flN -kEs -kEs -flN -eit -vTc -asz -coj -coj -asz -dtE -goj -goj -goj -goj -goj -goj -aiD -goj -asz -agz -asz -asz -asz -asz -asz -asz -qNE -enh -xNO -acd -cBU -cBU -cBU -bJj -cBU -bJj -gpz -gpz -bJj -bJj -gpz -rbq -fXX -rbq -mwJ -fXX -fXX -fXX -fXX -pLS -amu +uKZ +cHB +xSk +afd +fRg +oYH +aSA +gIQ +aTj +aVN +aWV +aYx +bbh +beK +pvv +pvv +pvv +pvv +pvv +fRg +hGj +iQq +iQq +iQq +iQq +iQq +iQq +kLM +aDM +kLM +iQq +iQq +iQq +iQq +iQq +iQq +iQq +huz +aut +rdS +aCy +tdc +axJ +axJ +tZW +huz +huz +sax +hrk +kAw +nZA +kAw +kAw +puZ +puZ +puZ +puZ +puZ puZ "} (50,1,1) = {" @@ -36247,96 +36222,96 @@ wMh hBq wMh oRH -aFO -aFO -aFO -aFO -aFO -wMh -wMh -wMh -pcY -pcY +tlB +tlB +tlB +oRH +tlB +oRH +tlB +tlB +tlB +tlB pcY pcY pcY pcY -jmW -jmW pcY -lSU -lSU -lSU -lSU -lSU -wBf -kEs -fgB -kEs -flN -asz -asz -asz -asz -asz -asz -tDg -iWX -wZh -asz -rMI -kdy -asz -asz -asz -asz -asz -asz -asz -asz -asz -qNE -xNO -enh -wwW -bJj -bJj -bJj -jrg -cBU -bJj -fXX -fXX -bJj -gpz -bJj -bJj -fXX -vOb -cuJ -fXX -bJj -fXX -fXX -pLS -amu -puZ -"} -(51,1,1) = {" -puZ -puZ -puZ -puZ -puZ -anc -anc -iXC -ukU -iPU -anc -edw -bsM -iVj +uKZ +xSk +aNq +oYH +fRg +oYH +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +hGj +iQq +iOu +kLM +iOu +kLM +kLM +iQq +kLM +iQq +iQq +iQq +iQq +pKK +iQq +iOu +kLM +huz +rdS +axJ +amH +tbR +axJ +rdS +ixC +huz +huz +sax +hrk +kAw +kAw +kAw +kAw +puZ +puZ +puZ +puZ +puZ +puZ +"} +(51,1,1) = {" +puZ +puZ +puZ +puZ +puZ +anc +anc +iXC +ukU +iPU +anc +edw +bsM +iVj qII ntc ntc @@ -36409,15 +36384,13 @@ hBq wMh oRH xAS -aFO +tlB jCZ pGj -aFO -abH -wMh -wMh -pcY -pcY +tlB +hBn +oRH +tlB pcY pcY pcY @@ -36426,62 +36399,64 @@ pcY pcY pcY pcY -lSU -lSU -lSU -aSI -aRs -uRt -flN -sBW -rZt -nOB -rMI -rMI -asz -tRq -wdy -dTU -bZZ -dTU -twc -fNE -rZt -uvU -asz -asz -qNE -qNE -qNE -qNE -qNE -qNE -qNE -qNE -cEV -kSW -wwW -cBU -bJj -jrg -jrg -cBU -cBU -bJj -bJj -bJj -bJj -bJj -fXX -osE -gpz -amu -amu -amu -fXX -igJ -fXX -amu +uKZ +hsw +aNp +bfR +oYH +oYH +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +gqe +uji +wNB +khx +jac +khx +iHu +idG +kLM +iQq +iQq +kLM +kLM +huz +huz +huz +huz +huz +huz +mpt +axJ +rxd +sFv +axJ +rdS +hRC +huz +huz +sax +qCr +kAw +nZA +kAw +kAw +puZ +puZ +puZ +puZ +puZ puZ "} (52,1,1) = {" @@ -36571,79 +36546,79 @@ tlB wMh oRH xAS -elN +pGi jmW swV -aFO -wMh -xAS -wMh -pcY -pcY -xbn -qBn -rdp +tlB +oRH +oRH +tlB pcY pcY pcY pcY pcY -lSU -lSU -aOv -afF -rZt -rZt -gLv -afF -wBf -wnK -dTU -pkK -asz -emq -chU -kbZ -chU -gTv -chU -fNE -uvU -rZt -asz -asz -qNE -qNE -qNE -enh -enh -iSG -xNO -iSG -hRF -bax -wwW -wvS -cBU -bJj -bJj -cBU -cBU -bJj -bJj -bJj -qMc -bJj -rbq -osE -gpz -gpz -amu -amu -fXX -fXX -lAb -amu +uji +uji +uji +uji +uKZ +uKZ +uji +uji +uji +qLA +uji +uKZ +aVT +fRg +fRg +oYH +uKZ +bFS +ail +ail +ail +uKZ +uji +uji +iMA +iMA +iMA +uKZ +ehV +aDM +kTP +iQq +iQq +kLM +uqb +huz +cio +ieD +aKR +aDu +huz +axJ +rdS +rti +ieD +axJ +axJ +hIu +huz +huz +sax +sax +nZA +nZA +kAw +kAw +kAw +puZ +puZ +puZ +puZ puZ "} (53,1,1) = {" @@ -36733,79 +36708,79 @@ wMh wMh wMh oRH -aFO -pMV -aFO -aFO -wMh -wMh -pcY -pcY +tlB +xMs +tlB +oRH +tlB +oRH pcY -xbn -ppb -rdp pcY pcY pcY pcY pcY -lSU -lSU -tSI -rZt -gLv -rZt -gLv -afF -wBf -wnK -dTU -wnK -asz -kbZ -chU -gTv -sHf -tRq -chU -ogu -rZt -rZt -asz -asz -qNE -qNE -xNO -iSG -xNO -xNO -xNO -iSG -rwy -bBT -xrC -cBU -cBU -cBU -bJj -bJj -cBU -bJj -bJj -osE -bJj -bJj -bJj -amu -gpz -gpz -amu -amu -fXX -fXX -pLS -amu +uji +uji +fRg +aMs +bYV +lJh +loH +ppI +aMs +bKV +bKV +uKZ +nUa +bKV +bKV +bKV +iDW +bzh +fRg +fRg +fRg +fRg +aKS +fRg +ohq +mKB +cLq +iMA +avx +voo +kLM +iQq +iQq +kLM +tpg +exX +qIr +azS +qny +aDu +aut +kfW +axJ +axJ +axJ +axJ +axJ +rdS +huz +huz +sax +sax +nZA +nZA +kAw +kAw +kAw +puZ +puZ +puZ +puZ puZ "} (54,1,1) = {" @@ -36896,123 +36871,123 @@ wMh wMh oRH xAS -aFO -aFO +tlB +tlB wMh xAS -ntJ -pcY -pcY -pcY -xbn -qBn -rdp -wMh -wMh -wMh -ntJ +aFO pcY -lSU -lSU -afF -sBW -xDq -aSI -afF -aUT -asz -rMI -rMI -rMI -asz -emq -wnK -dTU -wnK -dTU -hfm -asz -rZt -rZq -asz -asz -rdQ -mmW -lLE -aSC -iSG -iSG -atJ -bax -bax -bBT -xrC -cBU -bJj -bJj -cBU -cBU -bJj -fjv -iTQ -osE -gpz -gpz -bJj -amu -gpz -gpz -amu -amu -fXX -fXX -amu -amu -puZ -"} -(55,1,1) = {" -puZ -puZ -puZ -puZ -anc -jWL -nTC -nTC -nTC -nTC -nTC -nTC -pFJ -anc -xkV -fxJ -frV -gNM -aMu -azy -vYm -vYm -vYm -vYm -vYm -vYm -vYm -vYm -ntc -ntc -aEJ -mMK -eni -kOV -kOV -vYm -ntc -ntc -eni -eni -eni -ntc +gUc +xgH +xgH +xgH +gQJ +uji +uji +fRg +fRg +fRg +fRg +fRg +fRg +fRg +bKV +bKV +iMA +vHX +aWX +bKV +bKV +bsC +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +xQa +iMA +avx +uqb +kLM +iQq +iQq +kLM +tpg +exX +alW +arW +anJ +dQq +hmo +rdS +axJ +dQq +axJ +axJ +axJ +axJ +huz +huz +sax +sax +nZA +nZA +kAw +kAw +kAw +puZ +puZ +puZ +puZ +puZ +"} +(55,1,1) = {" +puZ +puZ +puZ +puZ +anc +jWL +nTC +nTC +nTC +nTC +nTC +nTC +pFJ +anc +xkV +fxJ +frV +gNM +aMu +azy +vYm +vYm +vYm +vYm +vYm +vYm +vYm +vYm +ntc +ntc +aEJ +mMK +eni +kOV +kOV +vYm +ntc +ntc +eni +eni +eni +ntc kOV ntc kOV @@ -37057,78 +37032,78 @@ aFO xAS oRH xAS +tlB +tlB +xAS aFO -aFO -aFO -wMh xAS -ntJ -pcY -pcY +aFO pcY -xbn -ppb -rdp -wMh -ntJ -wMh -wMh -wMh -lSU -aNL -nmi -afP -asz -asz -aTQ -asz -asz -wnK -dTU -wnK -asz -asz -qkL -fNE -fNE -asz -asz -asz -crF -crF -asz -asz -qNE -iSG -bax -aUQ -xNO -iSG -iSG -iSG -wwW -pPY -wwW -bJj -fjv -fjv -fjv -bJj -fjv -jrg -amu -osE -gpz -gpz -fXX -bJj -gpz -gpz -amu -amu -fXX -fXX -amu +aGc +qkC +tzo +qkC +tGv +dtr +fRg +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +iMA +vHX +bKV +bKV +bKV +bsC +pvv +pvv +pvv +pvv +pvv +pvv +pvv +pvv +fRg +uKZ +uKZ +vqV +kLM +kLM +iQq +iQq +iQq +kLM +huz +pJM +ayZ +rdS +bqO +axJ +bqO +axJ +axJ +axJ +axJ +axJ +axJ +huz +huz +sax +sax +nZA +nZA +nZA +kAw +kAw +fNf +oFl +puZ puZ puZ "} @@ -37219,78 +37194,78 @@ aFO aFO xAS aFO +tlB +tlB +xAS aFO aFO aFO -wMh -wMh -ntJ -pcY -pcY -pcY -xbn -qBn -tyi -wMh -ntJ -ntJ -wMh -wMh -bXo -kxx -bIh -afQ -fNE -rZt -rZt -rZt -rZt -rZt -rZt -rZt -rkc -wnK -rZt -rZt -rZt -asz -asz -hMY -rZt -rZt -asz -asz -qNE -qPi -iSG -iSG -iSG -iSG -bax -iSG -wwW -pOy -wwW -jrg -cBU -fjv -fjv -fjv -jrg -jrg -amu -osE -gpz -osE -osE -bJj -gpz -amu -amu -amu -fXX -fXX -amu +xAS +aGd +aHd +aIG +tzo +aJk +fRg +fRg +bKV +bKV +aMK +aNl +aNl +aPn +bKV +bKV +tsU +uKZ +ocB +bKV +bKV +bKV +hDW +bAX +fRg +fRg +fRg +qXk +fRg +pvv +khz +fRg +iMA +nIA +scp +kLM +iQq +iQq +kLM +iQq +iQq +huz +aQq +axJ +axJ +axJ +axJ +jJZ +oXU +axJ +dQq +axJ +axJ +rdS +huz +huz +sax +sax +kAw +kAw +kAw +kAw +kAw +rBk +hip +puZ puZ puZ "} @@ -37378,81 +37353,81 @@ wMh wMh oRH oRH +xAS +tlB +tlB +hnj +tlB +tlB +xAS aFO aFO aFO -cou -aFO -aFO -xAS -wMh -pcY -jmW -pcY -pcY -aPX -dRi -abA -wMh -wMh -wMh -ntJ -wMh -asz -aNN -afN -afP -fNE -rZt -rZt -rZt -rZt -gGf -rZt -rZt -qVo -wnK -wnK -wnK -rZt -asz -asz -hLB -rZt -rZt -asz -asz -uil -iSG -ayJ -aSC -wwW -wwW -bax -wwW -wwW -cEV -rfv -jrg -amu -iTQ -amu -amu -amu -amu -amu -osE -gpz -osE -osE -bJj -gpz -amu -amu -amu -fXX -fXX -amu +aGd +tzo +qkC +tzo +aGd +fRg +fRg +bKV +bKV +bKV +bKV +kGz +bKV +bKV +ohE +bKV +uKZ +ahe +fRg +fRg +oYH +uKZ +bwk +cex +cex +cex +uKZ +xHu +pvv +pvv +oCG +kjM +oCG +iQq +iQq +iQq +kLM +aDM +kLM +iQq +huz +huz +avz +avz +axJ +axJ +alO +pJM +rgI +rdS +axJ +kLi +alP +huz +huz +sax +sax +kAw +kAw +nZA +kAw +kAw +kAw +puZ +puZ puZ puZ "} @@ -37546,75 +37521,75 @@ wMh wMh wMh aFO +tlB +xAS aFO xAS -wMh -jmW -jmW -wMh -wMh -wMh -ntJ -wMh -ntJ -wMh -wMh -ntJ -asz -asz -asz -asz -asz -asz -krT -rZt -rZt -rZt -gGf -bDx -asz -kXt -asz -wnK -rZt -asz -asz -kPX -rZt -rZt -asz -asz -qNE -nHp -bax -aUQ -wwW -wwW -bax -wwW -wwW -jrg -jrg -jrg -amu -igJ -fXX -fXX -fXX -fXX -fXX -osE -gpz -bJj -fXX -bJj -iTQ -amu -amu -amu -fXX -fXX -amu +aGb +tzo +qkC +tzo +aGd +fRg +fRg +bKV +bKV +pzj +pzi +bKV +bKV +bKV +bKV +bKV +oYH +bKV +bKV +bKV +bKV +oYH +bKV +bKV +bKV +bKV +iMA +sFR +pvv +pvv +oCG +wRm +oCG +iQq +iQq +iQq +szU +kLM +iQq +iQq +uqb +ncS +pTp +pTp +rdS +axJ +alO +huz +qWL +aut +axJ +kLi +kLi +huz +huz +sax +sax +kAw +kAw +nZA +nZA +kAw +kAw +puZ +puZ puZ puZ "} @@ -37709,74 +37684,74 @@ xAS wMh wMh aFO -aFO +tlB xAS -wMh -wMh -ntJ -ntJ -wMh -wMh -lAN -wMh -ntJ -ntJ -wMh -asz -abn -abF -abF -abF -acg -asz -aUU -aXh -mYX -bVr -aXh -aXh -bJf -rkc -wnK -rZt -hMY -asz -asz -crF -crF -asz -asz -xNO -iSG -iSG -iSG -iSG -wwW -xrC -xrC -iSG -enh -jrg -jrg -amu -lAb -fXX -fXX -fXX -fXX -fXX -fXX -bJj -bJj -gpz -osE -bJj -mwJ -bJj -fXX -fXX -fXX -amu +uji +aGe +tzo +tzo +aJj +aGd +fRg +fRg +bKV +bKV +aMK +aNl +aNl +aPn +bKV +bKV +bKV +fRg +bKV +bKV +bKV +bKV +uHA +bKV +bKV +rfd +bKV +iMA +hFJ +fRg +dZN +fRg +iMA +tLC +hye +kLM +iQq +kLM +iQq +iQq +kLM +uqb +ncS +mRc +rdS +aXk +axJ +jFq +huz +qPh +rdS +axJ +axJ +sXt +huz +huz +sax +sax +kAw +kAw +nZA +nZA +nZA +kAw +puZ +puZ puZ puZ "} @@ -37872,73 +37847,73 @@ wMh aFO aFO aFO -aFO -aFO -wMh -wMh -ntJ -gvY -ntJ -qXC -wMh -wMh -wMh -wMh -asz -abp -abG -abJ -abG -ach -asz -aWC -aWs -qkR -eRG -sbd -wnK -aXH -rkc -wnK -rZt -fir -asz -asz -rZt -rZt -asz -asz -iSG -iSG -iSG -bax -bax -wwW -xrC -nRL -kSW -enh -jrg -jrg -amu -cur -fXX -fXX -amu -amu -iTQ -bJj -fXX -gpz -gpz -bJj -fXX -cuJ -fXX -bJj -fXX -fXX -amu +tlB +uji +ahX +qkC +tzo +qkC +mhS +dtr +fRg +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +bKV +fRg +bKV +bKV +bKV +bKV +fRg +bKV +bKV +bKV +bKV +uKZ +uKZ +iMA +iMA +iMA +uKZ +uKZ +ehV +kLM +iQq +iQq +iQq +kLM +kLM +uqb +ncS +bWB +auh +aTO +hkS +itR +oNz +qOE +rdS +axJ +sYx +wFm +huz +huz +sax +sax +kAw +kAw +nZA +hrk +nZA +kAw +puZ +puZ puZ puZ "} @@ -38034,73 +38009,73 @@ wMh xAS xAS aFO -aFO -aFO -aFO -wMh -tRn -wMh -wMh -wMh -pyB -lAN -wMh -wMh -asz -abp -abJ -abJ -abJ -aSK -aTR -rMI -acY -rZt -bJi -rZt -wnK -aXH -rkc -wnK -wnK -asz -asz -dTj -rZt -rZt -tYA -fNE -iSG -aHz -iSG -bax -bax -eSc -xrC -cBs -xNO -enh -jrg -jrg -amu -amu -fXX -fXX -amu -jrg -osE -bJj -gpz -gpz -gpz -osE -bJj -iTQ -iTQ -amu -amu -amu -amu +xAS +uji +rXn +dsx +dsx +dsx +waS +uji +uji +fRg +fRg +pgh +fRg +fRg +fRg +lro +bKV +bKV +oYH +bKV +meg +bKV +bbi +beP +bKV +meg +bKV +bKV +eGG +bKV +bKV +ftr +obb +vHX +iMA +ehV +kLM +iQq +iQq +kLM +uqb +uqb +huz +huz +auh +bWB +qvY +gZZ +iof +aDu +qoY +axJ +axJ +wFm +sYx +huz +huz +sax +sax +nZA +kAw +nZA +nZA +nZA +kAw +puZ +puZ puZ puZ "} @@ -38197,70 +38172,70 @@ vXw wMh xAS aFO -aFO -aFO -aFO -wMh -kSO -thK -xog -kqE -wMh -wMh -wMh -asz -aNP -abJ -abG -abJ -abJ -rZt -kxx -oZs -bJi -bJi -bJi -wnK -bQx -asz -asz -qkL -asz -asz -rZt -rZt -iEF -cYC -fNE -iSG -iSG -bax -wwW -xrC -xrC -xrC -iSp -xNO -xNO -enh -jrg -jrg -amu -fXX -fXX -amu -jrg -bJj -gpz -bJj -bJj -bJj -osE -bJj -amu -puZ -puZ -puZ +uji +uji +uji +uji +uji +uji +uji +uji +uji +aKL +uji +aNh +aLs +uji +uji +iMA +iMA +uKZ +oYH +gxK +fRg +oYH +uKZ +iMA +iMA +uji +uKZ +uKZ +bKV +okc +bKV +krm +iXx +iMA +ehV +uqb +kLM +iQq +nAs +uqb +ajE +huz +qSW +arZ +aIh +aPf +gtx +aTO +oww +qmv +axJ +axJ +axJ +axJ +huz +huz +sax +sax +kAw +kAw +hrk +kAw +nZA +kAw puZ puZ puZ @@ -38359,71 +38334,71 @@ hPp pcY wMh xAS -aFO -aFO -nhF -aFO -rJI -pvR -vjg -wiG -wMh -ntJ -wMh -asz -aNR -abJ -abG -abJ -abJ -rZt -kxx -oZs -bJi -bJi -ahZ -eRG -aXH -rZt -rZt -rZt -hAX -crF -rZt -rZt -rZt -fhd -fNE -iSG -iSG -bax -wwW -xrC -xrC -xrC -xrC -xNO -xNO -enh -jrg -jrg -amu -eom -fXX -amu -osE -osE -bJj -bJj -bJj -bJj -bJj -bJj -amu -puZ -puZ -puZ -puZ +uji +uji +uji +uji +uji +uji +uji +uji +aLk +bKV +bKV +aNg +bKV +aOb +uji +snX +fRg +aKS +fRg +fRg +dLk +fRg +aKS +fRg +fRg +fRg +rIj +uKZ +giH +uji +iMA +iMA +iMA +uKZ +ehV +uqb +kLM +iQq +iQq +kLM +ajd +huz +fjS +anJ +aGf +aNE +ggr +hLE +qvY +qkQ +axJ +axJ +axJ +axJ +huz +huz +sax +iZj +kAw +kAw +hrk +kAw +nZA +kAw +hrk puZ puZ puZ @@ -38521,71 +38496,71 @@ pcY pcY wMh xAS -aFO -aFO -aFO -wMh -rJI -gso -aJd -ntJ +tPB wMh wMh +ntJ +ntJ +ntJ wMh -asz -abp -abJ -abJ -abJ -abJ -rZt -rMI -oZs -azm -bJi -rZt -wnK -aXH -rZt -rZt -rZt -dwQ -crF -rZt -rZt -rZt -rZt -fNE -iSG -iSG -wwW -xrC -wwW -jjq -iYu -eMx -xNO -xNO -jrg -jrg -jrg -amu -fXX -fXX -amu -osE -osE -gpz -bJj -jrg -bJj -bJj -gpz -osE -puZ -puZ -puZ -puZ +iMA +aKQ +bKV +bKV +omu +aFr +uji +uji +pvv +kJw +pvv +pvv +pvv +pvv +pvv +sYh +pvv +pvv +pvv +pvv +eGs +fRg +uji +xwo +jhm +bHC +bHC +iKW +kLM +iQq +iQq +iQq +iQq +qIr +oWk +qIr +anG +axJ +axJ +ggh +rdS +owe +axJ +rdS +axJ +axJ +axJ +huz +huz +sax +kAw +kAw +nZA +nZA +kAw +kAw +kAw +hrk puZ puZ puZ @@ -38683,71 +38658,71 @@ pcY jmW wMh aFO -aFO -aFO +tPB wMh -ntJ -rJI -gso -faR -ntJ wMh wMh +ntJ +ntJ wMh -asz -abp -abG -abJ -abG -acj -asz -aUX -aWB -gTU -wnK -wnK -wnK -aXH -rZt -rZt -rZt -asz -asz -rZt -rZt -hCY -hCY -fNE -iSG -iSG -xrC -wwW -bax -iSG -xrC -xrC -xNO -jrg -jrg -jrg -jrg -amu -fXX -fXX -amu -iTQ -bJj -gpz -bJj -jrg -bJj -bJj -gpz -osE -puZ -puZ -puZ -puZ +iMA +aJM +aJU +bKV +aLk +bMK +uji +snX +pvv +aSA +pvv +vFR +eVG +pvv +pvv +pvv +aSA +pvv +pvv +pvv +pvv +fRg +hvZ +kLM +iOu +kLM +iOu +kLM +iQq +kLM +iQq +iQq +iQq +qIr +oWk +qIr +ans +ans +aMW +fMq +aut +axJ +rdS +aut +huz +huz +huz +huz +huz +hrk +kAw +hrk +hrk +nZA +kAw +kAw +nZA +nZA puZ puZ puZ @@ -38845,70 +38820,70 @@ pcY jmW wMh nuy -nuy -aFO +vgR wMh ntJ -rJI -gso -qIu -ntJ ntJ wMh +ntJ wMh -asz -abx -abM -abM -abM -ack -asz -aUY -vjs -aXw -kaL -wnK -wnK -aXH -rZt -rZt -rZt -fNE -ril -rZt -iEF -far -nVL -fNE -iSG -wwW -xrC -wwW -wwW -enh -xNO -xNO -jrg -jrg -jrg -jrg -jrg -amu -fXX -fXX -osE -osE -gpz -gpz -jrg -jrg -bJj -bJj -osE -osE -puZ -puZ -puZ +uKZ +iMA +iMA +uji +uji +uji +uji +fRg +pvv +pvv +aTh +aVx +aWI +aYd +baX +bcJ +pvv +pvv +pvv +aSA +pvv +fRg +hvZ +kLM +iQq +iQq +iQq +iQq +kLM +iQq +iQq +iQq +iQq +qIr +akF +alS +ans +axJ +axJ +fbf +fbf +ook +hAS +aDu +huz +huz +huz +huz +huz +kAw +kAw +nZA +nZA +nZA +kAw +kAw +nZA puZ puZ puZ @@ -39007,70 +38982,70 @@ wMh wMh aFO nuy -nuy -aFO +hBq wMh -tRn -aNy -xtc -ggv +pcY ntJ +jmW +wMh ntJ wMh +fEl wMh -asz -asz -asz -asz -asz -asz -asz -ufb -wnK -jaU -uEx -bJi -bJi -aXH -rZt -rZt -rZt -fNE -mWA -rZt -iEF -etV -tNN -fNE -wwW -wwW -xrC -wwW -wwW -enh -enh -jrg -jrg -jrg -jrg -jrg -jrg -amu -fXX -fXX -osE -osE -bJj -bJj -jrg -jrg -jrg -bJj -bJj -bJj -puZ -puZ -puZ +hBq +lRJ +uKZ +fRg +gxK +pvv +pvv +aUw +fof +aWQ +aVN +aVN +aVN +bqN +aVN +dbH +wTz +pvv +fRg +hvZ +iQq +kLM +iQq +iQq +iQq +iQq +iQq +kLM +iQq +iQq +qIr +exX +qIr +rdS +rdS +axJ +axJ +axJ +bsS +pKf +iYC +huz +huz +oBV +pRU +hrk +hrk +kAw +nZA +nZA +nZA +kAw +kAw +nZA puZ puZ puZ @@ -39169,70 +39144,70 @@ aFO aFO aFO aFO -aFO -aFO -aFO -wMh -ofr -nJu -tze -wMh wMh -ntJ wMh pcY pcY -pcY -pcY -pcY -pcY -asz -asz -asz -ahu -qfI -bJi -bJi -nAp -rZt -asz -asz -asz -asz -qkL -asz -asz -asz -asz -wwW -wwW -iSG -enh -enh -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -amu -amu -amu -bJj -fXX -gpz -bJj -bJj -jrg -jrg -bJj -gpz -osE -puZ -puZ -puZ +jmW +jmW +wMh +wMh +fEl +upK +hBq +hBq +uKZ +fRg +fRg +pvv +aTh +aUx +aVM +aWS +rNx +bbg +rNx +aWS +bYO +aWQ +dbH +wvx +fRg +hvZ +kLM +iQq +kLM +iQq +iQq +iQq +kLM +snN +kTP +iQq +huz +huz +kLi +amI +aCy +rdS +axJ +axJ +nTu +hAS +sjh +huz +huz +tuA +kAw +hrk +hrk +kAw +kAw +kAw +nZA +kAw +kAw +nZA puZ puZ puZ @@ -39331,70 +39306,70 @@ tPs aFO aFO aFO -aFO -aFO -aFO -aFO -wMh -aFO -aFO -jmW wMh -lAN -ntJ wMh -cQY -skK -kSO -xog pcY pcY -asz -asz -asz -tpL -orO -orO -tJY -asz -asz -asz -gSJ -bJi -bJi -bJi -asz -xvd -lVJ -iSG -wwW -iSG -enh -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -fXX -bJj -bJj -gpz -bJj -bJj -bJj -gpz -bJj -puZ -puZ -puZ +pcY +pcY +pcY +pcY +pcY +lAN +nyc +tlB +uKZ +wUy +fRg +pvv +aTi +aUy +aVL +aWT +aVL +bOh +aVL +aWS +aVL +aVL +dCS +eoH +fRg +hvZ +iQq +iQq +kLM +iQq +iQq +kLM +bcM +aDM +lNg +kLM +huz +huz +dLi +amH +qsN +aMN +faH +hHf +nTu +qsN +iYC +huz +huz +dWO +hbB +kAw +hrk +kAw +kAw +kAw +kAw +kAw +oBV +nZA puZ puZ puZ @@ -39470,91 +39445,91 @@ aXb eni ntc kOV -oRH -xAS -aFO -aFO -aFO -wMh -jmW -xAS -xAS -aFO -aFO -xAS -xAS -aFO -aFO -cou -aFO -aFO -pMV -aFO -aFO -aFO -aFO -aFO -cou -aFO -aFO -aFO -aFO -aFO -aFO -aFO -wMh -wMh -wMh -cQY -ntJ -aNy -xtc -pcY -pcY -asz -crF -aXH -bJi -crF -crF -tHD -uEx -crF -fNE -hyx -xFp -xFp -sHL -asz -lVN -iSG -iSG -wwW -iSG -enh -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -gpz -bJj -gpz -gpz -gpz -bJj -bJj -bJj -bJj -puZ +oRH +xAS +aFO +aFO +aFO +wMh +jmW +xAS +xAS +aFO +aFO +xAS +xAS +aFO +aFO +cou +aFO +aFO +pMV +aFO +aFO +aFO +aFO +aFO +wMh +pcY +pcY +pcY +pcY +pcY +pcY +hBq +tlB +hBq +tlB +uKZ +xHu +fRg +pvv +aTj +cov +eHL +aWS +rPa +baY +rPa +aWS +fXp +aWU +deV +uyI +fRg +hvZ +iQq +iQq +iQq +iQq +iQq +iQq +kLM +aDM +uqb +iQq +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +nNX +hbB +kAw +kAw +kAw +hrk +kAw +kAw +jzs puZ puZ puZ @@ -39655,68 +39630,68 @@ aFO aFO wMh aFO -nuy -aFO -aFO -aFO -xAS -aFO -aFO aFO -aFO -aFO -wMh -wMh -pei -wMh -xfZ -ntJ pcY pcY -asz -crF -aXH -tHD -crF -crF -tHD -uEx -crF -fNE -qud -tZA -ctC -ctC -asz -asC -asC -iSG -asC -asC -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -gpz -gpz -gpz -gpz -gpz -gpz -gpz -gpz -bJj -bJj +pcY +pcY +pcY +pcY +nyc +hBq +xCD +hBq +tlB +uKZ +uwS +fRg +pvv +pvv +aUw +xyY +aWU +aVx +aVx +aVx +bqN +aUA +deV +pti +pvv +fRg +hvZ +kLM +iQq +iQq +iQq +iQq +iQq +kLM +lNg +kLM +iQq +iQq +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +huz +dWO +hbB +kAw +kAw +kAw +hrk +kAw +nZA +kAw puZ puZ puZ @@ -39817,68 +39792,68 @@ cou wMh wMh wMh -aFO -aFO -aFO -xAS wMh -jmW -aFO -aFO -aFO -aFO -aFO -aFO -cQY -mbt -mbt -mbt pcY pcY -asz -asz -asz -uOc -pCI -gmV -vTc -asz -asz -asz -fNE -fNE -fNE -fNE -asz -kVd -kVd -uzu -xgc -uzu -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -osE -gpz -gpz -gpz -gpz -bJj -bJj -bJj -gpz -bJj -bJj +pcY +pcY +pcY +hBq +nyc +hBq +cps +tlB +tlB +uKZ +oIR +fRg +pvv +pvv +aTj +aVN +aWV +aYx +bbh +beK +aSA +gIQ +oXM +pvv +pvv +fRg +hvZ +kLM +kLM +iQq +iQq +iQq +iQq +iQq +kLM +kLM +iQq +iQq +iQq +lXQ +cwZ +kAw +kAw +nZA +kAw +kAw +hrk +hrk +hrk +acl +kAw +kAw +hrk +kAw +kAw +kAw +kAw +kAw +puZ puZ puZ puZ @@ -39980,67 +39955,67 @@ wMh jmW jmW wMh -aFO -aFO -aFO -wMh -tJP -lAN -aFO -aFO -aFO -aFO -wMh -wMh -wMh -wMh -wMh -wMh pcY pcY -siZ -ukp -kVd -kVd -boW -boW -boW -siZ -dkv -xgc -kVd -kVd -rAH -rAH -kVd -uzu -boW -xgc -uzu -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -gpz -bJj -bJj -jrg -bJj -bJj -bJj -bJj -bJj -bJj +pcY +pcY +pcY +hBq +hBq +tlB +aFO +hBq +hBq +uKZ +rIj +wCn +pvv +pvv +pvv +pvv +pvv +mOY +drM +pvv +aSA +uaa +pvv +pvv +pvv +fRg +hvZ +kLM +iOu +kLM +iOu +kLM +kLM +iQq +kLM +iQq +iQq +kLM +iQq +jWh +cwZ +kAw +kAw +kAw +kAw +nZA +hrk +hrk +nZA +hRY +hrk +nZA +nZA +nZA +kAw +kAw +kAw +nDv +puZ puZ puZ puZ @@ -40112,98 +40087,98 @@ kOV kOV kOV kOV -kOV -kOV -aqd -eBc -aqI -aqI -aqI -aqI -asj -ntc -jmW -xAS -aFO -aFO -aFO -pMV -aFO -xAS -wMh -xAS -wMh -pcY -pcY -wMh -aFO -wMh -jmW -jmW -jmW -wMh -aFO -aFO -aFO -xAS -tJP -wMh -aFO -aFO -wMh -wMh -wMh -wMh -ntJ -ntJ -wMh -wMh -ukp -kVd -ckH -lIa -lIa -qjY -qjY -qjY -qjY -tsK -qjY -tsK -lIa -oHf -oHf -oHf -lIa -qjY -tsK -tsK -ckH -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -gpz -bJj -jrg -jrg -bJj -bJj -bJj -bJj -bJj -bJj -bJj +kOV +kOV +aqd +eBc +aqI +aqI +aqI +aqI +asj +ntc +jmW +xAS +aFO +aFO +aFO +pMV +aFO +xAS +wMh +xAS +wMh +pcY +pcY +wMh +aFO +wMh +jmW +jmW +jmW +wMh +pcY +pcY +pcY +pcY +tJP +nyc +tlB +xAS +xCD +xAS +hBq +uKZ +rIj +ohq +pvv +pvv +pvv +tXL +pvv +pvv +pvv +pvv +pvv +pvv +pvv +hZI +pvv +fWq +uji +iOA +aDM +lNg +kLM +uqb +uqb +iQq +iQq +kLM +kLM +kLM +kLM +fpF +wSv +kAw +kAw +kAw +kAw +kAw +nZA +nZA +nZA +aco +hrk +nZA +nZA +nZA +kAw +nZA +nZA +puZ +puZ +puZ puZ puZ puZ @@ -40304,68 +40279,68 @@ wMh jmW wMh wMh -aFO +wMh +pcY +pcY +tlB +hBq +tlB +xAS aFO xAS xAS -tJP -faW -faW -faW -jmW -wMh -wMh -wMh -ntJ -ntJ -wMh -wMh -kVd -kVd -kVd -kVd -kVd -boW -boW -boW -boW -xgc -boW -xgc -xgc -kVd -rAH -rAH -kVd -xgc -kVd -ukp -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -bJj -osE -bJj -bJj -jrg -jrg -bJj -bJj -osE -bJj -bJj -bJj -bJj +oRH +uKZ +uKZ +uKZ +fRg +fRg +fRg +fRg +fRg +fRg +oZR +fRg +iXc +fRg +bxL +bxL +gGc +rzR +uji +qrY +qrY +qrY +hHR +hHR +xCz +uxZ +uxZ +uxZ +lWC +hHR +hHR +sax +sax +sax +hrk +kAw +kAw +kAw +kAw +kAw +kAw +teK +hrk +hrk +hrk +kAw +nZA +nZA +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40467,67 +40442,67 @@ wMh ntJ wMh aFO +hBq +xAS +xAS +xAS +xAS +xAS aFO -cpC -lfe -pcY -pcY -pcY -pcY -mTN +oRH nzr -uZF -wMh -wMh -ntJ -ntJ -wMh -kVd -kVd -xgc -xgc -boW -boW -boW -xgc -boW -xgc -xgc -rAH -xgc -xgc -rAH -rAH -kVd -xgc -uzu -mhs -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -jrg -bJj -bJj -bJj -iel -jrg -jrg -bJj -bJj -osE -bJj -bJj -jrg -bJj +xAS +oRH +hBq +uKZ +uKZ +uji +gpF +oYH +fUP +uji +uKZ +iMA +iMA +iMA +uKZ +uKZ +uKZ +uKZ +uji +ofw +ofw +jMf +tHd +kop +kop +kyD +kyD +kyD +tHd +kop +gzb +sax +sax +sax +bcV +oFl +kAw +kAw +kAw +hrk +bcV +tFd +hrk +hrk +kAw +nZA +nZA +nZA +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40627,69 +40602,69 @@ ntc xAS wMh wMh -wMh -jmW -wMh -wMh -kSO -xog -pcY -pcY -pcY -kSO -xog +aFO +aFO +aFO +aFO +xAS +aFO +aFO +aFO +xAS +xAS +aFO wTx -wMh -wMh -ntJ -wMh -vnr -kVd -kVd -dyt -dyt -fHx -xgc -boW -boW -xgc -boW -boW -boW -xgc -xgc -kVd -rAH -rAH -uzu -kVd -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -bJj -bJj -bJj -bJj -osE -osE -bJj -bJj -bJj -mie -jrg -bJj -bJj -gpz -bJj -bJj -bJj -bJj +xAS +fOa +aFO +aFO +uji +uKZ +jLX +uKZ +uji +tHd +rtZ +tHd +tHd +rtZ +kop +kop +xvp +tHd +jMf +xvp +kop +kop +kop +tHd +kyD +kyD +kyD +tHd +kop +bhN +fCs +sax +sax +rBk +vAU +kAw +kAw +kAw +tad +tlr +tuz +tFy +hrk +kAw +nZA +nZA +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40761,96 +40736,96 @@ aqI asj kOV kOV -kOV -kOV -eni -kOV -eni -eni -mMK -ntc -ntc -vYm -ntc -vYm -vYm -xAS -xAS -aFO -aFO -wMh -pcY -pcY -kOV -toD -toD -toD -toD -jmW -wMh -wMh -jmW -xAS -xAS -pcY -aNy -xtc -pcY -pcY -pcY -aNy -xtc -qKA -ntJ -wMh -wMh -ntJ -ntJ -kVd -kVd -boW -boW -xgc -boW -boW -boW -boW -boW -boW -boW -boW -kVd -xgc -rAH -rAH -uzu -kVd -jrg -jrg -jrg -jrg -jrg -jrg -jrg -jrg -bJj -jrg -bJj -bJj -bJj -osE -osE -bJj -gpz -bJj -bJj -jrg -gpz -gpz -bJj -bJj -bJj -bJj +kOV +kOV +eni +kOV +eni +eni +mMK +ntc +ntc +vYm +ntc +vYm +vYm +xAS +xAS +aFO +aFO +wMh +pcY +pcY +kOV +toD +toD +toD +toD +jmW +wMh +wMh +aFO +aFO +aFO +aFO +aFO +xAS +xAS +xAS +aFO +aFO +aFO +aFO +oRH +xAS +aFO +aFO +wwZ +qnJ +jOi +qnJ +mkC +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +iMC +kyD +kyD +tHd +tHd +kyD +tHd +kyD +kyD +tHd +kop +bhN +fCs +sax +sax +sax +sax +kAw +kAw +kAw +acl +rBk +vAU +hrk +kAw +nZA +nZA +nZA +puZ +puZ +puZ +puZ puZ puZ puZ @@ -40951,68 +40926,68 @@ kOV wMh wMh wMh -ntJ -pcY -pcY -pcY -pcY -pcY -pcY -pcY -pcY -pcY -gXW -muI -wMh wMh -eKp -mda +oRH wMh -wRL -kVd +xAS +xAS +xAS +aFO +aFO +xAS +xAS +xAS +xAS +xAS +aFO +aFO +aFO +wLM ajy -boW -akf -boW -boW -boW -boW -boW -boW -boW -boW -boW -xgc -xgc -kVd -kVd -uzu -ukp -jrg -jrg -jrg -jrg -jrg -jrg -xgc -ukp -ukp -kVd -kVd -bJj -bJj -bJj -bJj -gpz -dhx -bJj -osE -gpz -gpz -bJj -bJj -bJj -bJj +jOi +ajy +ppS +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +kop +lip +sax +sax +sax +sax +kAw +kAw +nZA +kAw +aco +kAw +hrk +kAw +nZA +nZA +nZA +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -41114,66 +41089,66 @@ pcY pcY wMh wMh -ntJ -wMh -wMh -pcY -bQX -wMh -cBX -wMh -wMh -hlh wMh +oRH +oRH +xAS wMh -pcY -pcY -pcY -acc -kVd -kVd -boW -boW -boW -boW -boW -boW -boW -boW -boW -fHx -boW -boW -kVd -xgc -rAH -kVd -kVd -uzu -ukp -jrg -jrg -jrg -jrg -jrg -ukp -kVd -xgc -xgc -rAH -kVd -bJj -bJj -bJj -bJj -bJj -bJj -gpz -gpz -bJj -bJj -jrg -bJj +aFO +xAS +oRH +xAS +xAS +aFO +aFO +aFO +aFO +aFO +wLM +ajy +jOi +ajy +ppS +kyD +kyD +kyD +kyD +kyD +kyD +tHd +tHd +kyD +tHd +tHd +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +ofw +sax +hrk +llZ +kAw +nZA +nZA +nZA +kAw +aco +kAw +kAw +kAw +nZA +kAw +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -41275,67 +41250,67 @@ aby pcY pcY wMh -wMh -wMh -wMh -wMh -wMh -wMh -wMh -hlh -hPp -hPp -hPp -hPp -hPp -hPp -hPp -pcY -pcY -kVd -kVd -dyt -dyt -fHx -boW -boW -boW -boW -boW -boW -dyt -boW -boW -boW -rAH -xgc -kVd -kVd -uzu -ukp -jrg -jrg -ukp -ukp -jrg -uzu -xgc -xgc -xgc -xgc -uzu -rAH -osE -bJj -bJj -bJj -bJj -gpz -gpz -bJj -bJj -bJj -bJj +hBq +vCe +oRH +oRH +xAS +xAS +aFO +aFO +xAS +xAS +oRH +xAS +xAS +aFO +aFO +aFO +wLM +ajy +jOi +ajy +ppS +tHd +tHd +tHd +kop +aQJ +kop +eyx +kop +tHd +kop +kop +tHd +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +grk +hrk +kAw +qgP +kAw +nZA +qgP +kAw +aco +kAw +nZA +kAw +kAw +nZA +puZ +puZ +puZ +puZ +puZ puZ puZ puZ @@ -41400,102 +41375,102 @@ oHE aLv pvU pvU -sfY -rfU -kOV -aCo -jrR -jrR -asu -mMK -eni -lop -eni -eni -eni -ntc -ntc -tJe -asB -ntc -ntc -vYm -ntc -eni -kOV -kOV -kOV -kOV -hUv -arP -arP -ijA -aqE -aqE -asI -abz -pcY -wMh -wMh -jmW -wMh -ntJ -wMh -ntJ -hlh -wMh -jmW -hPp -aMy -mnZ -pwT -mnZ -qKn -hPp -pcY -pcY -ukp -kVd -boW -boW -boW -boW -boW -xgc -boW -boW -boW -dyt -boW -boW -boW -kVd -xgc -rAH -uzu -uzu -uzu -ukp -ukp -uzu -uzu -fkB -xgc -uzu -rAH -rAH -uzu -rAH -kVd -osE -bJj -bJj -bJj -gpz -bJj -bJj -bJj -bJj +sfY +rfU +kOV +aCo +jrR +jrR +asu +mMK +eni +lop +eni +eni +eni +ntc +ntc +tJe +asB +ntc +ntc +vYm +ntc +eni +kOV +kOV +kOV +kOV +hUv +arP +arP +ijA +aqE +aqE +asI +abz +pcY +wMh +wMh +ulI +hBq +mzf +oRH +wMh +xAS +aFO +xAS +xAS +oRH +tlB +oRH +oRH +xAS +aFO +aFO +lCg +ajy +jOi +ajy +lGT +jMf +tHd +kop +jMf +sJo +ofw +etl +fLi +gGT +kop +tHd +xvp +kyD +kyD +kyD +tHd +kyD +kyD +kyD +tHd +oDi +nRD +kAw +vPr +kAw +nZA +nZA +sax +kAw +acp +kAw +nZA +nZA +kAw +nZA +puZ +puZ +puZ puZ puZ puZ @@ -41601,62 +41576,62 @@ ntJ wMh wMh wMh -ntJ -ntJ -ntJ wMh -sFj -hPp -hPp -quO +vzM +wMh +xAS +aFO +aFO +jNr +xAS pwT -hVr +tlB sud ggC -hPp -pcY -ukp -rAH -kVd -boW -boW -boW -boW -boW -boW -xgc -boW -boW -boW -boW -boW -boW -xgc -xgc -kVd -kVd -kVd -uzu -ukp -pLf -rAH -rAH -oHf -rAH -kVd -rAH -kVd -rAH -rAH -bJj -bJj -bJj -gpz -gpz -osE -bJj -bJj -bJj +xAS +aFO +uir +bni +bni +bni +uir +ofw +jMf +tHd +kop +jMf +gGT +kop +rli +kop +kop +tHd +kyD +kyD +kyD +tHd +kyD +tHd +kyD +kyD +kyD +tHd +kjX +kAw +vPr +qgP +vPr +sax +sax +sax +sax +kAw +nZA +nZA +kAw +puZ +puZ +puZ puZ puZ puZ @@ -41767,56 +41742,56 @@ jmW wMh ntJ ntJ -swn -hPp -aKo -qBN -jOi -jOi -jOi -fGb -hPp -xgc -rAH -xgc -kVd -boW -boW -boW -boW -xgc -boW -boW -boW -boW -boW -boW -boW -xgc -xgc -xgc -kVd -kVd -plS -uzu -uzu -rAH -rAH -rAH -fkB -xgc -rAH -kVd -kVd -bJj -bJj -bJj -osE -osE -gpz -osE -bJj -bJj +oRH +oRH +oRH +oRH +oRH +oRH +tlB +tlB +tlB +tHd +kwa +kwa +kyD +kyD +kyD +kyD +kyD +tHd +kyD +kyD +kyD +kyD +kyD +kop +kop +kop +tHd +tHd +jMf +jMf +qLS +ofw +ofw +kop +kyD +kop +hbp +kAw +llZ +nZA +nZA +acl +kAw +kAw +hrk +hrk +nZA +hrk +kAw +kAw puZ puZ puZ @@ -41930,55 +41905,55 @@ wMh jmW ntJ wMh -bni -jOi -txO -jOi -jOi -jOi -jOi -bni -xgc -xgc -boW -xgc -ajy -boW +oRH +oRH +oRH +oRH +oRH +tlB +hBq +tlB +tHd +qrY +kyD +kwa +kyD +kyD akf -boW -boW -xgc -boW -boW -boW -boW -boW -boW -xgc -kVd -kVd -kVd -plS +fDH +kyD +tHd +kyD +kyD +kyD +kop +kop +kop +kop +jMf +jMf +jMf +qLS bRU -uzu -rAH -ukp -uzu -rAH -fkB -uzu -uzu -uzu -ukp -bJj -bJj -bJj -osE -gpz -gpz -gpz -bJj -bJj +ofw +kop +mwE +ofw +kyD +hbp +kAw +kAw +jaT +hrk +aco +kAw +qgP +hrk +nZA +nZA +nZA +kAw +kAw puZ puZ puZ @@ -42092,54 +42067,54 @@ pcY wMh wMh wMh -bni -jOi -jOi -jOi -jOi -jOi -jOi -bni -rAH -rAH -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -boW -kVd -uzu -kVd -kVd -kVd -uzu -plS -rAH -rAH -rAH -rAH -rAH -ckH -ukp -ukp -jrg -bJj -bJj -jrg -osE -gpz -gpz -osE -bJj +oRH +kAm +hBq +kAm +hBq +hBq +xAS +oRH +kop +qrY +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +jMf +ofw +jMf +jMf +jMf +ofw +qLS +kop +kyD +kop +kyD +mxr +kAw +vPr +vPr +nZA +acp +kAw +sax +hrk +nZA +nZA +hrk +kAw puZ puZ puZ @@ -42251,57 +42226,57 @@ wMh ntJ pcY pcY -kVd -kVd -kVd -hPp -hPp -hPp -hPp -hPp -hPp -hPp -hPp -rAH -xgc -xgc -boW +jMf +jMf +jMf +kAm +oRH +hBq +oRH +hBq +xAS +tlB +oRH +kop +qrY +kyD +kyD dyt dyt -boW -boW -boW -boW -boW -boW -boW -boW -xgc -boW -xgc -xgc -kVd -kVd -kVd -uzu -kVd -uzu +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +kyD +tHd +tHd +jMf +jMf +jMf +ofw +jMf +ofw bhB -rAH -rAH -ukp -jrg -jrg -jrg -jrg -jrg -bJj -bJj -osE -bJj -bJj -bJj -bJj +kop +kop +gss +sax +sax +sax +sax +sax +kAw +kAw +hrk +kAw +kAw +kAw +kAw puZ puZ puZ @@ -42413,57 +42388,57 @@ jmW pcY pcY pcY -rAH -rAH -rAH -siZ -pFq -fVl -qOP -aMZ -uzu -xgc -siZ -rAH -xgc -xgc -boW -boW +kop +kop +kop +kop +kop +kop +kop +kop +jMf +kop +ofw +kop +kyD +kyD +kyD +kyD fHx -boW -xgc -boW -boW -boW -boW -boW -boW -boW -boW -xgc -xgc -kVd -kVd -xgc -kVd -rAH -kVd -uzu -uzu -ddA -kVd -ukp -jrg -jrg -jrg -jrg -jrg -bJj -osE -bJj -bJj -bJj -bJj +kyD +tHd +kyD +kyD +kyD +kyD +kyD +kyD +kyD +kyD +tHd +tHd +jMf +jMf +tHd +jMf +kop +jMf +ofw +ofw +rgy +jMf +gss +sax +sax +sax +sax +sax +kAw +hrk +kAw +kAw +kAw +kAw puZ puZ puZ @@ -42575,56 +42550,56 @@ wMh pcY pcY pcY -rAH -rAH -rAH -kVd -kVd -kVd -kVd -kVd -kVd -kVd -kVd +kop +kop +kop +kop +kop +jMf +kop +ofw +jMf +jMf +jMf agy -boW -boW -boW -boW -boW -boW -boW -xgc -boW -boW -boW -boW -xgc -boW -boW -rAH -rAH -aaf -rAH -rAH -ddA -xgc -rAH -uzu -msh -uzu -uzu -rAH -ukp -jrg -jrg -jrg -jrg -jrg -osE -gpz -gpz -bJj +kyD +kyD +kyD +kyD +qrY +kyD +kyD +tHd +kyD +kyD +kyD +kyD +tHd +kyD +kop +kop +kop +bnD +kop +kop +rgy +tHd +kop +ofw +oxP +ofw +ofw +kop +mwE +sax +sax +sax +sax +sax +hrk +nZA +nZA +kAw puZ puZ puZ @@ -42737,56 +42712,56 @@ wMh pcY pcY pcY -rAH -rAH -rAH -kVd -uzu -kVd -uzu -kVd -uzu -kVd -rAH -xgc -ajy -boW -xgc -boW -boW -boW -boW -boW -boW -boW -boW -xgc -boW -boW -boW -kVd -kVd -rAH -rAH -kVd -rAH -rAH -xgc -kVd -kVd -kVd -rAH -rAH +kop +kop +kop +jMf +ofw +jMf +ofw +jMf +ofw +jMf +kop +tHd +kyD +kyD +kyD +kyD +qrY +kyD +kyD +kyD +kyD +kyD +kyD +tHd +kyD +kyD +kyD +jMf +jMf +kop +kop +jMf +kop +kop +tHd +jMf +jMf +jMf +kop +kop mhs -jrg -jrg -jrg -jrg -jrg -bJj -bJj -bJj -bJj +sax +sax +sax +sax +sax +kAw +kAw +qgP +kAw puZ puZ puZ @@ -42895,59 +42870,59 @@ kOV ntc kOV kOV -ukp -kVd -kVd -dHr -rAH -msh -uzu -uzu -xgc -rAH -kVd -kVd -rAH -xgc -rAH -xgc -xgc -boW -xgc -boW -xgc -boW -boW -xgc -xgc -xgc -xgc -boW -boW -boW -boW -kVd -kVd -kVd -kVd -ddA -rAH -kVd -kVd -rAH -xgc -xgc -kVd -uzu +mwE +jMf +jMf +mdV +kop +oxP +ofw +ofw +tHd +kop +jMf +jMf +kop +tHd +kop +fDH +tHd +kyD +tHd +kyD +qrY +kyD +kyD +tHd +tHd +tHd +tHd +kyD +kyD +kop +kop +jMf +jMf +jMf +jMf +rgy +kop +jMf +jMf +kop +tHd +tHd +jMf +ofw loe -jrg -jrg -jrg -jrg -jrg -bJj -gpz -bJj +sax +sax +sax +sax +sax +qgP +nZA +kAw puZ puZ puZ @@ -43057,59 +43032,59 @@ kOV kOV ntc kOV -kVd -kVd +jMf +jMf bhB -kVd -rAH -rAH -uzu -xgc -kVd -rAH -xgc -xgc -kVd -rAH -xgc -rAH -xgc -xgc -boW -boW -boW -xgc -uzu +jMf +kop +kop +ofw +tHd +jMf +kop +tHd +tHd +jMf +kop +tHd +kop +tHd +tHd +kyD +kyD +kyD +tHd +ofw gss gss gss gss -xgc -xgc -xgc -kVd -kVd -kVd -kVd -huF -uzu -rAH -uzu -aJR -kVd -rAH -rAH -rAH -rAH -kVd -rAH -jrg -jrg -jrg -jrg -bJj -gpz -bJj +tHd +tHd +tHd +jMf +jMf +jMf +jMf +gBp +ofw +kop +ofw +rEd +jMf +kop +kop +kop +kop +jMf +kop +sax +sax +sax +sax +hrk +nZA +kAw puZ puZ puZ @@ -43219,29 +43194,29 @@ kOV kOV ntc ntc -uzu +ofw vhM -uzu -kVd -kVd -rAH -rAH -kVd -rAH -uzu +ofw +jMf +jMf +kop +kop +jMf +kop +ofw dYp dYp dYp -kVd -kVd -rAH +jMf +jMf +kop fxy -boW -boW -boW +kyD +kyD +kyD fxy -xgc -rAH +tHd +kop gss gss gss @@ -43253,25 +43228,25 @@ tiO tiO gss abZ -kVd -kVd -rAH -rAH -rAH -boS -kVd -rAH -xgc -rAH -rAH -rAH -ukp -jrg -jrg -jrg -cIV -cIV -cIV +jMf +jMf +kop +kop +kop +gpS +jMf +kop +tHd +kop +kop +kop +mwE +sax +sax +sax +nZA +llZ +nZA puZ puZ puZ @@ -43381,16 +43356,16 @@ kOV kOV ntc ntc -kVd -uzu -kVd -kVd -rAH -kVd -xgc -rAH -rAH -uzu +jMf +ofw +jMf +jMf +kop +jMf +tHd +kop +kop +ofw dYp dYp dYp @@ -43431,9 +43406,9 @@ tHd mwE geE geE -mwE -mwE -mwE +kop +kop +plM tYw tYw tYw @@ -43543,15 +43518,15 @@ aEq ntc ntc vYm -xgc -kVd -kVd -xgc -xgc -rAH -xgc -kVd -uzu +tHd +jMf +jMf +tHd +tHd +kop +tHd +jMf +ofw dYp dYp dYp @@ -43705,15 +43680,15 @@ nOd nOd nOd nOd -xgc -xgc -kVd -xgc -kVd -xgc -kVd -uzu -uzu +tHd +tHd +jMf +tHd +jMf +tHd +jMf +ofw +ofw dYp dYp dYp @@ -43867,15 +43842,15 @@ dZb eOG aeN nOd -rAH -rAH -rAH -rAH -xgc -rAH -kVd +kop +kop +kop +kop +tHd +kop +jMf bRU -kVd +jMf dYp dYp dYp @@ -44029,15 +44004,15 @@ uhL uhL eHk nOd -kVd +jMf bhB -xgc -kVd -xgc -rAH -uzu -kVd -uzu +tHd +jMf +tHd +kop +ofw +jMf +ofw dYp dYp dYp @@ -44191,14 +44166,14 @@ uhL uhL eHk nOd -dHr -kVd -kVd -hxY -kVd -rAH -kVd -ddA +mdV +jMf +jMf +sJo +jMf +kop +jMf +rgy dYp dYp pqe @@ -44355,12 +44330,12 @@ nOd nOd nOd nOd -kVd -xgc -xgc -rAH -kVd -kVd +jMf +tHd +tHd +kop +jMf +jMf dYp dYp pqe @@ -44517,12 +44492,12 @@ uhL gIq jny nOd -rAH -xgc -xgc -kVd -uzu -dHr +kop +tHd +tHd +jMf +ofw +mdV dYp dYp pqe @@ -44679,12 +44654,12 @@ bVb goh okz nOd -kVd -xgc -xgc -kVd -huF -xgc +jMf +tHd +tHd +jMf +gBp +tHd dYp dYp pqe @@ -44841,12 +44816,12 @@ uFr tds uhL nOd -rAH +kop wta owr -uzu -plS -xgc +ofw +qLS +tHd dYp dYp pqe @@ -45003,11 +44978,11 @@ glG tds uhL nOd -rAH -aGF -boW -boW -boW +kop +aQJ +kyD +kyD +kyD dYp dYp dYp @@ -45165,11 +45140,11 @@ tWn hyu uhL nOd -rAH -kuS -boW -boW -boW +kop +oiH +kyD +kyD +kyD owr dYp dYp @@ -45327,12 +45302,12 @@ hyu uKN uhL nOd -rAH -xgc +kop +tHd owr -boW +kyD owr -boW +kyD dYp dYp pqe @@ -47649,7 +47624,7 @@ puZ hcJ cUl cUl -xbT +cUl hcJ puZ puZ @@ -50228,17 +50203,17 @@ kyD tHd veu oZq -hrk -kAw -kAw +ijm +cIV +cIV sax sax sax sax -sPM -sPM -sPM -sPM +wiy +wiy +wiy +wiy ako puZ puZ @@ -50389,15 +50364,15 @@ tHd kyD tHd qEQ -sax -kAw -nZA -kAw -sax -bcV -oFl -sax -sax +jrg +bJj +gpz +bJj +jrg +qCW +ijE +jrg +jrg aaZ aaZ aaZ @@ -50523,47 +50498,47 @@ iXm daD dKL aPk -hcH -tnu +rRZ +oQo aSQ -tnu -hcH -aWF -jMf -ofw -jMf -tHd -kop -jMf -gGT -kop -rli -kop -kop -tHd -kyD -kyD -kyD -tHd -kyD -tHd -kyD -kyD -kyD -qEQ -sax -hrk -hrk -kAw -kAw -rBk -vAU -sax -sax -kAw -nZA -nZA -kAw +oQo +rRZ +rWW +kVd +uzu +kVd +xgc +rAH +kVd +iIR +rAH +ork +rAH +rAH +xgc +boW +boW +boW +xgc +boW +xgc +boW +boW +boW +dro +jrg +osE +osE +bJj +bJj +qdh +fmo +jrg +jrg +bJj +gpz +gpz +bJj puZ puZ puZ @@ -50680,53 +50655,53 @@ bIV bFg bIV bIV -cZk +bFg daD cZk cZk bIV -aKr -gKf -lxn -gKf -aFA -kyD -tHd -jMf -tHd -kop -jMf -sJo -ofw -etl -fLi -gGT -kop -tHd -xvp -kyD -kyD -kyD -tHd -kyD -kyD -kyD -tHd -oDi +boW +boW +boW +boW +boW +boW +xgc +kVd +xgc +rAH +kVd +hxY +uzu +hUA +mGk +iIR +rAH +xgc +wPs +boW +boW +boW +xgc +boW +boW +boW +xgc +nxt prO -kAw -hrk -nZA -nZA -nZA -kAw -kAw -acl -kAw -nZA -nZA -kAw -nZA +bJj +osE +gpz +gpz +gpz +bJj +bJj +iIg +bJj +gpz +gpz +bJj +gpz puZ puZ puZ @@ -50845,50 +50820,50 @@ bIV bIV cZk bIV -bIV bFg -aKA -qXS -lxn -qXS -aFC -kyD -kyD -tHd -tHd -tHd -kop -aQJ -kop -eyx -kop -tHd -kop -kop -tHd -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD +cZk +rAH +boW +boW +boW +boW +boW +boW +xgc +xgc +xgc +rAH +aGF +rAH +klF +rAH +xgc +rAH +rAH +xgc +boW +boW +boW +boW +boW +boW +boW +boW +qjY ptm -hrk -kAw -nZA -nZA -nZA -kAw -kAw -aco -kAw -nZA -kAw -kAw -nZA +osE +bJj +gpz +gpz +gpz +bJj +bJj +niA +bJj +gpz +bJj +bJj +gpz puZ puZ puZ @@ -51008,49 +50983,49 @@ bIV bIV bFg bFg -bFg -aKA -qXS -lxn -qXS -aFC -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -tHd -kyD -tHd -tHd -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -ofw -sax -hrk -kAw -nZA -nZA -nZA -nZA -kAw -aco -kAw -kAw -kAw -nZA -kAw +cZk +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +xgc +xgc +boW +xgc +xgc +boW +boW +boW +boW +boW +boW +boW +boW +xgc +fkB +jrg +osE +bJj +gpz +gpz +gpz +gpz +bJj +niA +bJj +bJj +bJj +gpz +bJj puZ puZ puZ @@ -51170,50 +51145,50 @@ bIV bIV bIV bIV -bFg -aKA -qXS -lxn -qXS -aFC -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -kop -gzb -sax -sax -sax -sax -kAw -kAw -nZA -kAw -aco -kAw -hrk -kAw -nZA -nZA -nZA +cZk +xgc +xgc +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +xgc +rAH +ucN +jrg +jrg +jrg +jrg +bJj +bJj +gpz +bJj +niA +bJj +osE +bJj +gpz +gpz +gpz puZ puZ puZ @@ -51333,50 +51308,50 @@ bFg bFg cZk bIV -aKD -iGn -lxn -iGn -aFI -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -kyD -tHd -iMC -kyD -kyD -tHd -tHd -kyD -tHd -kyD -kyD -tHd -kop -bhN -fCs -sax -sax -sax -sax -kAw -kAw -kAw -acp -bcV -tFd -hrk -kAw -nZA -nZA -nZA +rAH +xgc +rAH +rAH +xgc +boW +boW +boW +boW +boW +boW +boW +boW +boW +boW +xgc +kyt +boW +boW +xgc +xgc +boW +xgc +boW +boW +xgc +rAH +fbS +qfR +jrg +jrg +jrg +jrg +bJj +bJj +bJj +srJ +qCW +nyS +osE +bJj +gpz +gpz +gpz puZ puZ puZ @@ -51495,50 +51470,50 @@ bFg aNe bIV aPm -uji -uKZ -jLX -uKZ -uji -aWG -xWy -tHd -rtZ -tHd -tHd -rtZ -kop -kop -xvp -tHd -jMf -xvp -kop -kop -kop -tHd -kyD -kyD -kyD -tHd -kop -bhN -fCs -sax -sax -bcV -oFl -kAw -kAw -kAw -tad -tlr -tuz -tFy -hrk -kAw -nZA -nZA +xgc +rAH +xgc +rAH +rAH +rAH +uzu +xgc +gJF +boW +boW +awP +rAH +xgc +wPs +xgc +kVd +wPs +rAH +rAH +rAH +xgc +boW +boW +boW +xgc +rAH +fbS +qfR +jrg +jrg +qCW +ijE +bJj +bJj +bJj +nvu +mCG +pRM +gQK +osE +bJj +gpz +gpz puZ puZ puZ @@ -51657,51 +51632,51 @@ aME bIV cZk xvA -iMA -rxf -oYH -uMJ -uji -uKZ -uKZ -uKZ -iMA -iMA -iMA -uKZ -uKZ -uKZ -uKZ -uji -ofw -ofw -jMf -tHd -kop -kop -kyD -kyD -kyD -tHd -kop -lip -sax -sax -sax -rBk -vAU -kAw -kAw -kAw -hrk -rBk -vAU -hrk -hrk -kAw -nZA -nZA -nZA +boW +xgc +wfH +rAH +xgc +rAH +wfH +rAH +boW +boW +boW +xgc +xgc +rAH +rAH +rAH +uzu +uzu +kVd +xgc +rAH +rAH +boW +boW +boW +xgc +rAH +sEC +jrg +jrg +jrg +qdh +fmo +bJj +bJj +bJj +osE +qdh +fmo +osE +osE +bJj +gpz +gpz +gpz puZ puZ puZ @@ -51817,53 +51792,53 @@ bFg bIV bIV cZk -uKZ -uKZ -uKZ -fRg -fRg -fRg -fRg -fRg -fRg -oZR -fRg -iXc -fRg -bxL -bxL -gGc -rzR -uji -hzJ -hzJ -hzJ -kyw -kyw -lUL -mLR -mLR -mLR -ocI -kyw -kyw -sax -sax -sax -hrk -kAw -kAw -kAw -kAw -kAw -kAw -hrk -hrk -hrk -hrk -kAw -nZA -nZA +rAH +rAH +rAH +rAH +rAH +boW +rAH +rAH +rAH +xgc +boW +boW +boW +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +rAH +boW +boW +xgc +rAH +rAH +oHf +jrg +jrg +jrg +osE +bJj +bJj +bJj +bJj +bJj +bJj +osE +osE +osE +osE +bJj +gpz +gpz puZ puZ puZ @@ -51979,54 +51954,54 @@ bIV aLZ bIV xvA -uKZ -rIj -ohq -pvv -pvv -pvv -tXL -pvv -pvv -pvv -pvv -pvv -pvv -pvv -hZI -pvv -fWq -uji -iOA -aDM -lNg -kLM -uqb -uqb -iQq -iQq -kLM -kLM -kLM -kLM +ukp +ukp +rAH +ukp +rAH +rAH +boW +ukp +kVd +kVd +boW +boW +boW +siZ +dkv +xgc +kVd +kVd +rAH +rAH +kVd +uzu +boW +xgc +uzu +boW +xgc +xgc +xgc +tsK pCe -wSv -kAw -kAw -kAw -kAw -kAw -nZA -nZA -nZA -kAw -hrk -nZA -nZA -nZA -kAw -nZA -nZA +rrj +bJj +bJj +bJj +bJj +bJj +gpz +gpz +gpz +bJj +osE +gpz +gpz +gpz +bJj +gpz +gpz puZ puZ puZ @@ -52141,55 +52116,55 @@ daD bFg xvA xvA -uKZ -rIj -wCn -pvv -pvv -pvv -pvv -pvv -mOY -drM -pvv -aSA -uaa -pvv -pvv -pvv -fRg -hvZ -kLM -iOu -kLM -iOu -kLM -kLM -iQq -kLM -iQq -iQq -kLM -iQq +rAH +rAH +ukp +rAH +rAH +rAH +ckH +lIa +lIa +qjY +qjY +qjY +qjY +tsK +qjY +tsK +lIa +oHf +oHf +oHf +lIa +qjY +tsK +tsK +ckH +tsK +qjY +qjY +tsK +qjY fnw -cwZ -kAw -kAw -kAw -kAw -nZA -hrk -hrk -nZA -nZA -hrk -nZA -nZA -nZA -kAw -kAw -kAw -nDv +wvS +bJj +bJj +bJj +bJj +gpz +osE +osE +gpz +gpz +osE +gpz +gpz +gpz +bJj +bJj +bJj +xuz puZ puZ puZ @@ -52302,57 +52277,57 @@ peb xvA aMj daD -daD -uKZ -oIR -fRg -pvv -pvv -aTh -aVx -aWI -aYd -baX -bcJ -aSA -gIQ -oXM -pvv -pvv -fRg -hvZ -kLM -kLM -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -iQq -nOw -cwZ -kAw -kAw -nZA -kAw -kAw -hrk -hrk -hrk -kAw -kAw -kAw -hrk -kAw -kAw -kAw -kAw -kAw -puZ +boW +qiy +pWp +pWp +pWp +pLf +pLf +asz +asz +asz +ndb +pCI +gmV +vTc +asz +asz +asz +fNE +fNE +fNE +fNE +asz +kVd +kVd +uzu +xgc +uzu +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +bJj +osE +gpz +gpz +gpz +gpz +bJj +bJj +bJj +gpz +bJj +bJj puZ puZ puZ @@ -52464,57 +52439,57 @@ peb xvA aLZ xvA -daD -uKZ -uwS -fRg -pvv -pvv -aUw -xyY -aWQ -aVx -aVx -aVx -bqN -aUA -dbH -pti -pvv -fRg -hvZ -kLM -iQq -iQq -iQq -iQq -iQq -kLM -lNg -kLM -iQq -iQq -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -dWO -hbB -kAw -kAw -kAw -hrk -kAw -nZA -kAw +ukp +oiL +ukp +guH +sQX +pLf +pLf +asz +crF +aXH +tHD +crF +crF +tHD +uEx +crF +fNE +qud +tZA +ctC +ctC +asz +ayz +ayz +kVd +ayz +ayz +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +bJj +gpz +gpz +gpz +gpz +gpz +gpz +gpz +gpz +bJj +bJj puZ puZ puZ @@ -52622,61 +52597,61 @@ aUd aUd aUd aUd -aUd -xvA -daD +aUd xvA daD -uKZ -xHu -fRg -pvv -aTh -aUx -eHL -aWS -aYf -baY -bdk -aWS -jnc -aWQ -dbH -uyI -fRg -hvZ -iQq -iQq -iQq -iQq -iQq -iQq -kLM -aDM -uqb -iQq -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -huz -nNX -hbB -kAw -kAw -kAw -hrk -kAw -kAw -vEN +bFg +ukp +qiy +sQX +cXU +cid +pLf +pLf +asz +crF +aXH +bJi +crF +crF +tHD +uEx +crF +fNE +hyx +xFp +xFp +sHL +asz +kAd +kVd +kVd +xgc +kVd +ukp +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +gpz +bJj +gpz +gpz +gpz +bJj +bJj +bJj +bJj +sax puZ puZ puZ @@ -52786,61 +52761,61 @@ aUd aUd aUd aUd -aMk +aMj peb -daD -uKZ -wUy -fRg -pvv -aTi -aUy -aVL -aWT -aVL -bOh -aVL -aWS -aVL -aVL -dCS -eoH -fRg -hvZ -iQq -iQq -kLM -iQq -iQq -kLM -bcM -aDM -lNg -kLM -huz -huz -dLi -amH -qsN -aMN -faH -hHf -nTu -qsN -iYC -huz -huz -dWO -hbB -kAw -hrk -kAw -kAw -kAw -kAw -kAw -oBV -nZA +ukp +qiy +wvd +nOK +xLy +pLf +pLf +asz +asz +asz +tpL +orO +orO +tJY +asz +asz +asz +gSJ +bJi +bJi +bJi +asz +ltA +dnj +kVd +xgc +kVd +ukp +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +bJj +fXX +bJj +bJj +gpz +bJj +bJj +bJj +gpz +bJj +sax +sax +sax puZ puZ puZ @@ -52949,60 +52924,60 @@ gJo gJo abg aMl -xvA -xvA -uKZ -fRg -fRg -pvv -aTj -cov -aVM -aWS -aYg -bbg -bea -aWS -cbk -aWU -deV -wvx -fRg -hvZ -kLM -iQq -kLM -iQq -iQq -iQq -kLM -snN -kTP -iQq -huz -huz -kLi -amI -aCy -rdS -axJ -axJ -nTu -hAS -sjh -huz -huz -tuA -kAw -hrk -hrk -kAw -kAw -kAw -nZA -kAw -kAw -nZA +rYj +pLf +pLf +pLf +pLf +pLf +pLf +asz +asz +asz +ahu +uEx +bJi +bJi +aXH +rZt +asz +asz +asz +asz +qkL +asz +asz +asz +asz +xgc +xgc +kVd +ukp +bJj +jrg +jrg +jrg +jrg +jrg +jrg +jrg +jrg +amu +amu +amu +bJj +fXX +gpz +bJj +bJj +jrg +jrg +bJj +gpz +osE +sax +sax +sax puZ puZ puZ @@ -53111,60 +53086,60 @@ qbF gJo abg gJo -xvA -xvA -uKZ -fRg -gxK -pvv -pvv -aUw -fof -aWU -aVN -aVN -aVN -bqN -aVN -deV -wTz -pvv -fRg -hvZ -iQq -kLM -iQq -iQq -iQq -iQq -iQq -kLM -iQq -iQq -tpg -exX -qIr -rdS -rdS -axJ -axJ -axJ -bsS -pKf -iYC -huz -huz -oBV -pRU -hrk -hrk -kAw -nZA -nZA -nZA -kAw -kAw -nZA +rYj +asz +asz +asz +asz +asz +asz +asz +ufb +wnK +jaU +uEx +bJi +bJi +aXH +rZt +rZt +rZt +fNE +mWA +rZt +iEF +etV +tNN +fNE +xgc +xgc +boW +xgc +xgc +ukp +ukp +jrg +jrg +jrg +jrg +jrg +jrg +amu +fXX +fXX +osE +osE +bJj +bJj +jrg +jrg +jrg +bJj +bJj +bJj +sax +sax +sax puZ puZ puZ @@ -53222,111 +53197,111 @@ sYu sYu sYu lwo -lwo -lwo -eOM -lwo -eOM -eOM -sYu -sYu -eOM -eOM -lwo -arX -arX -eOM -lwo -lwo -eOM -eOM -arX -eOM -aCH -toA -ver -ver -ver -ver -ver -ver -ver -ver -fEO -oDM -ktd -bFg -bIV -bFg -bFg -bFg -cZk -cZk -xvA -cgR -gJo -qbF -qbF -gJo -qbF -gJo -uKZ -iMA -iMA -uji -uji -uji -uji -fRg -pvv -pvv -aTj -aVN -aWV -aYx -bbh -beK -pvv -pvv -pvv -aSA -pvv -fRg -hvZ -kLM -iQq -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -tpg -akF -alS -ans -axJ -axJ -fbf -fbf -ook -hAS -aDu -huz -huz -huz -huz -huz -kAw -kAw -nZA -nZA -nZA -kAw -kAw -nZA +lwo +lwo +eOM +lwo +eOM +eOM +sYu +sYu +eOM +eOM +lwo +arX +arX +eOM +lwo +lwo +eOM +eOM +arX +eOM +aCH +toA +ver +ver +ver +ver +ver +ver +ver +ver +fEO +oDM +ktd +bFg +bIV +bFg +bFg +bFg +cZk +cZk +xvA +cgR +gJo +qbF +qbF +gJo +qbF +daD +xHv +xHv +xHv +wXs +asz +abn +abF +abF +abF +acg +asz +aUY +vjs +aXw +kaL +wnK +wnK +aXH +rZt +rZt +rZt +fNE +ril +rZt +iEF +far +nVL +fNE +kVd +xgc +boW +xgc +xgc +ukp +uzu +uzu +jrg +jrg +jrg +jrg +jrg +amu +fXX +fXX +osE +osE +gpz +gpz +jrg +jrg +bJj +bJj +osE +osE +sax +sax +sax puZ puZ puZ @@ -53427,69 +53402,69 @@ cZk cZk tBB gJo -gJo -gJo -qbF +bFg +qdH +qdH qbF -gJo -iMA -aJM -aJU -bKV -aLk -bMK -uji -snX -pvv -aSA -pvv -vFR -eVG -pvv -pvv -pvv -aSA -pvv -pvv -pvv -pvv -fRg -hvZ -kLM -iOu -kLM -iOu -kLM -iQq -kLM -iQq -iQq -iQq -tpg -oWk -qIr -ans -ans -aMW -fMq -aut -axJ -rdS -aut -huz -huz -huz -huz -huz -hrk -kAw -hrk -hrk -nZA -kAw -kAw -nZA -nZA +bIV +xHv +xHv +xHv +wXs +asz +abp +abG +abJ +abG +acj +asz +aUX +aWB +gTU +wnK +wnK +wnK +aXH +rZt +rZt +rZt +asz +asz +rZt +rZt +hCY +hCY +fNE +kVd +kVd +boW +xgc +rAH +kVd +boW +boW +uzu +jrg +jrg +jrg +jrg +amu +fXX +fXX +amu +iTQ +bJj +gpz +bJj +jrg +bJj +bJj +gpz +osE +sax +sax +sax +sax puZ puZ puZ @@ -53589,69 +53564,69 @@ xvA xvA tBB gJo -gJo -qbF +bFg +qdH qbF qbF gJo -iMA -aKQ -bKV -bKV -omu -aFr -uji -uji -pvv -kJw -pvv -pvv -pvv -pvv -pvv -sYh -pvv -pvv -pvv -pvv -eGs -fRg -uji -jac -jQt -khx -khx -ltJ -kLM -iQq -iQq -iQq -iQq -tpg -oWk -qIr -anG -axJ -axJ -ggh -rdS -owe -axJ -rdS -axJ -axJ -axJ -huz -huz +xHv +xHv +xHv +wXs +asz +abp +abJ +abJ +abJ +aSK +aTR +rMI +oZs +azm +bJi +rZt +wnK +aXH +rZt +rZt +rZt +hAX +crF +rZt +rZt +rZt +rZt +fNE +kVd +kVd +xgc +boW +xgc +qMT +jOv +hEB +uzu +uzu +jrg +jrg +jrg +amu +fXX +fXX +amu +osE +osE +gpz +bJj +jrg +bJj +bJj +gpz +osE +sax +sax +sax sax -kAw -kAw -nZA -nZA -kAw -kAw -kAw -hrk puZ puZ puZ @@ -53749,71 +53724,71 @@ bIV cZk cZk cZk -uji -uji -uji -uji -uji -uji -uji -uji -aLk -bKV -bKV -aNg -bKV -aOb -uji -snX -fRg -pgh -fRg -fRg -dLk -fRg -pgh -fRg -fRg -fRg -rIj -uKZ -giH -uji -iMA -iMA -iMA -uKZ -ehV -uqb -kLM -iQq -iQq -kLM -ajd -huz -fjS -anJ -aGf -aNE -ggr -hLE -qvY -qkQ -axJ -axJ -axJ -axJ -huz -huz +sFs +xHv +sFs +xHv +xHv +xHv +xHv +xHv +xHv +uLi +wXs +asz +aNR +abJ +abG +abJ +abJ +rZt +kxx +oZs +bJi +bJi +ahZ +eRG +aXH +rZt +rZt +rZt +dwQ +crF +rZt +rZt +rZt +fhd +fNE +kVd +kVd +rAH +xgc +boW +boW +boW +boW +uzu +uzu +ukp +jrg +jrg +amu +eom +fXX +amu +osE +osE +bJj +bJj +bJj +bJj +bJj +bJj +amu +sax +sax +sax sax -iZj -kAw -kAw -hrk -kAw -nZA -kAw -hrk puZ puZ puZ @@ -53911,70 +53886,70 @@ cZk cZk cZk cZk -uji -uji -uji -uji -uji -uji -uji -uji -uji -aKL -uji -aNh -aLs -uji -uji -iMA -iMA -uKZ -oYH -gxK -fRg -oYH -uKZ -iMA -iMA -uji -uKZ -uKZ -bKV -kjU -bKV -krm -iXx -iMA -ehV -uqb -kLM -iQq -nAs -uqb -ajE -huz -qSW -arZ -aIh -aPf -gtx -aTO -oww -qmv -axJ -axJ -axJ -axJ -huz -huz +tjL +xHv +xHv +gik +gik +gik +dbv +kaC +xHv +xHv +wXs +asz +aNP +abJ +abG +abJ +abJ +rZt +kxx +oZs +bJi +bJi +bJi +wnK +bQx +asz +asz +qkL +asz +asz +rZt +rZt +iEF +cYC +fNE +kVd +kVd +rAH +xgc +boW +boW +boW +lLf +uzu +uzu +ukp +jrg +jrg +amu +fXX +fXX +amu +jrg +bJj +gpz +bJj +bJj +bJj +osE +bJj +amu +sax sax sax -kAw -kAw -hrk -kAw -nZA -kAw puZ puZ puZ @@ -54073,72 +54048,72 @@ bIV bFg cZk bIV -uji -gUc -xgH -xgH -xgH -gQJ -uji -uji -fRg -fRg -aKS -fRg -fRg -fRg -lro -bKV -bKV -oYH -bKV -meg -bKV -bbi -beP -bKV -meg -bKV -bKV -eGG -bKV -bKV -ftr -obb -vHX -iMA -ehV -kLM -iQq -iQq -kLM -uqb -uqb -huz -huz -auh -bWB -qvY -gZZ -iof -aDu -qoY -axJ -axJ -wFm -sYx -huz -huz -sax -sax -nZA -kAw -nZA -nZA -nZA -kAw -puZ -puZ +xHv +sFs +xHv +xHv +gik +xHv +tmP +kaC +xHv +goe +wXs +asz +abp +abJ +abJ +abJ +abJ +rZt +rMI +acY +rZt +bJi +rZt +wnK +aXH +rkc +wnK +wnK +asz +asz +dTj +rZt +rZt +tYA +fNE +kVd +kuS +kVd +rAH +rAH +kch +boW +mKD +uzu +ukp +jrg +jrg +amu +amu +fXX +fXX +amu +jrg +osE +bJj +gpz +gpz +gpz +osE +bJj +iTQ +iTQ +amu +amu +amu +amu puZ puZ "} @@ -54235,72 +54210,72 @@ bIV fUZ bIV bIV -uji -ahX -qkC -tzo -qkC -mhS -dtr -fRg -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -fRg -bKV -bKV -bKV -bKV -fRg -bKV -bKV -bKV -bKV -uKZ -uKZ -iMA -iMA -iMA -uKZ -uKZ -ehV -kLM -iQq -iQq -iQq -kLM -kLM -uqb -ncS -bWB -auh -aTO -hkS -itR -oNz -qOE -rdS -axJ -sYx -wFm -huz -huz -sax -sax -kAw -kAw -nZA -hrk -nZA -kAw -puZ -puZ +xHv +xHv +xHv +xHv +xHv +goe +kaC +kaC +kaC +xHv +wXs +asz +abp +abG +abJ +abG +ach +asz +aWC +aWs +qkR +eRG +sbd +wnK +aXH +rkc +wnK +rZt +fir +rqK +asz +rZt +rZt +asz +asz +kVd +kVd +kVd +rAH +rAH +xgc +boW +vkr +nij +ukp +jrg +jrg +amu +cur +fXX +fXX +amu +amu +iTQ +bJj +fXX +gpz +gpz +bJj +fXX +cuJ +fXX +bJj +fXX +fXX +amu puZ puZ "} @@ -54397,72 +54372,72 @@ bIV bFg bFg bFg -uji -aGc -tzo -tzo -aJj -aJk -fRg -fRg -bKV -bKV -aMK -aNl -aNl -aPn -bKV -bKV -bKV -fRg -bKV -bKV -bKV -bKV -uHA -bKV -bKV -rfd -bKV -iMA -hFJ -fRg -dZN -fRg -iMA -kGO -lyE -kLM -iQq -kLM -iQq -iQq -kLM -uqb -ncS -mRc -rdS -aXk -axJ -jFq -huz -qPh -rdS -axJ -axJ -sXt -huz -huz -sax -sax -kAw -kAw -nZA -nZA -nZA -kAw -puZ -puZ +xHv +xHv +uLi +xHv +qEH +kaC +kaC +kaC +xHv +xHv +wXs +asz +abx +abM +abM +abM +ack +asz +aUU +aXh +mYX +bVr +aXh +aXh +bJf +rkc +wnK +rZt +hMY +asz +asz +crF +crF +asz +asz +uzu +kVd +kVd +kVd +kVd +xgc +boW +boW +kVd +ukp +jrg +jrg +amu +lAb +fXX +fXX +fXX +fXX +fXX +fXX +bJj +bJj +gpz +osE +bJj +mwJ +bJj +fXX +fXX +fXX +amu puZ puZ "} @@ -54520,111 +54495,111 @@ lwo lwo lwo lwo -eTV -lwo -eTV -lwo -lwo -eOM -eOM -lwo -eOM -qep -arX -arX -arX -amQ -arX -eOM -arX -arX -ktd -axK -ver -ver -ver -htb -ver -ver -ver -ver -bYd -ktd -ktd -gJo -bIV -bIV -bFg -bFg -bFg -bFg -bFg -bIV -aGb -tzo -qkC -tzo -aGd -fRg -fRg -bKV -bKV -pzj -pzi -kGz -bKV -bKV -bKV -bKV -oYH -bKV -bKV -bKV -bKV -oYH -bKV -bKV -bKV -bKV -iMA -sFR -pvv -pvv -oCG -kjM -tpg -iQq -iQq -iQq -szU -kLM -iQq -iQq -uqb -ncS -pTp -pTp -rdS -axJ -alO -huz -qWL -aut -axJ -kLi -kLi -huz -huz -sax -sax -kAw -kAw -nZA -nZA -kAw -kAw -puZ -puZ +eTV +lwo +eTV +lwo +lwo +eOM +eOM +lwo +eOM +qep +arX +arX +arX +amQ +arX +eOM +arX +arX +ktd +axK +ver +ver +ver +htb +ver +ver +ver +ver +bYd +ktd +ktd +gJo +bIV +bIV +bFg +bFg +bFg +bFg +bFg +bIV +xHv +sFs +xHv +xHv +goe +kaC +xHv +gik +xHv +wXs +asz +asz +asz +asz +asz +asz +asz +rZt +rZt +rZt +gGf +bDx +asz +kXt +asz +wnK +rZt +asz +asz +kPX +rZt +rZt +asz +asz +pLf +hkZ +rAH +ccT +xgc +xgc +rAH +xgc +xgc +jrg +jrg +jrg +amu +igJ +fXX +fXX +fXX +fXX +fXX +osE +gpz +bJj +fXX +bJj +iTQ +amu +amu +amu +fXX +fXX +amu puZ puZ "} @@ -54722,71 +54697,71 @@ bFg bFg bFg bFg -aGd -tzo -qkC -tzo -aGd -fRg -fRg -bKV -bKV -bKV -bKV -bKV -bKV -bKV -ohE -bKV -uKZ -ahe -fRg -fRg -oYH -uKZ -bwk -cex -cex -cex -uKZ -xHu -pvv -pvv -oCG -wRm -tpg -iQq -iQq -iQq -kLM -aDM -kLM -iQq -huz -huz -avz -avz -axJ -axJ -alO -pJM -rgI -rdS -axJ -kLi -alP -huz -huz -sax -sax -kAw -kAw -nZA -kAw -kAw -kAw -puZ -puZ +xHv +xHv +xHv +sFs +xHv +xHv +xHv +gik +gik +wXs +asz +aNN +afN +afP +fNE +rZt +rZt +rZt +rZt +gGf +rZt +rZt +qVo +wnK +wnK +wnK +rZt +asz +asz +hLB +rZt +rZt +asz +asz +shi +kVd +qEK +pGt +xgc +xgc +rAH +xgc +xgc +npY +rKq +jrg +amu +iTQ +amu +amu +amu +amu +amu +osE +gpz +osE +osE +bJj +gpz +amu +amu +amu +fXX +fXX +amu puZ puZ "} @@ -54884,71 +54859,71 @@ bFg bFg bFg bIV -aGd -aHd -aIG -tzo -aGd -fRg -fRg -bKV -bKV -aMK -aNl -aNl -aPn -bKV -bKV -tsU -uKZ -ocB -bKV -bKV -bKV -hDW -bzh -fRg -fRg -fRg -qXk -fRg -pvv -khz -fRg -iMA -kIo -lCe -kLM -iQq -iQq -kLM -iQq -iQq -huz -aQq -axJ -axJ -axJ -axJ -jJZ -oXU -axJ -dQq -axJ -axJ -rdS -huz -huz -sax -sax -kAw -kAw -kAw -kAw -kAw -bcV -oFl -puZ +xHv +xHv +xHv +uLi +xHv +xHv +xHv +gik +xHv +wXs +bXo +kxx +bIh +afQ +fNE +rZt +rZt +rZt +rZt +rZt +rZt +rZt +rkc +wnK +rZt +rZt +rZt +asz +asz +hMY +rZt +rZt +asz +asz +pLf +gZi +kVd +kVd +kVd +kVd +rAH +kVd +xgc +xXQ +boW +jrg +xgc +ukp +ukp +ukp +pLf +jrg +amu +osE +gpz +osE +osE +bJj +gpz +amu +amu +amu +fXX +fXX +amu puZ puZ "} @@ -55046,71 +55021,71 @@ bFg bFg bIV kaC -aGe -qkC -tzo -qkC -tGv -dtr -fRg -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -bKV -iMA -vHX -bKV -bKV -bKV -bsC -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -uKZ -uKZ -vqV -kLM -kLM -iQq -iQq -iQq -kLM -huz -pJM -ayZ -rdS -bqO -axJ -bqO -axJ -axJ -axJ -axJ -axJ -axJ -huz -huz -sax -sax -nZA -nZA -nZA -kAw -kAw -rBk -vAU -puZ +xHv +xHv +xHv +sFs +xHv +xHv +uLi +xHv +goe +wXs +lSU +aNL +nmi +afP +asz +asz +aTQ +asz +asz +wnK +dTU +wnK +asz +asz +qkL +fNE +fNE +asz +asz +asz +crF +crF +asz +asz +pLf +kVd +rAH +ccT +uzu +kVd +kVd +kVd +xgc +bkK +xgc +rAH +ukp +kVd +uzu +ukp +ukp +jrg +amu +osE +gpz +gpz +fXX +bJj +gpz +gpz +amu +amu +fXX +fXX +amu puZ puZ "} @@ -55204,75 +55179,75 @@ oQl oQl oQl gJo -bFg -bFg -cZk -kaC -rXn -dsx -dsx -dsx -waS -uji -uji -fRg -fRg -fRg -fRg -fRg -fRg -fRg -bKV -bKV -iMA -vHX -aWX -bKV -bKV -bsC -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -xQa -iMA -avx -uqb -kLM -iQq -iQq -kLM -tpg -exX -alW -arW -anJ -dQq -hmo -rdS -axJ -dQq -axJ -axJ -axJ -axJ -huz -huz -sax -sax -nZA -nZA -kAw -kAw -kAw -puZ -puZ -puZ +bFg +bFg +cZk +kaC +xHv +xHv +xHv +xHv +xHv +goe +xHv +xHv +xHv +wXs +lSU +lSU +afF +sBW +xDq +aSI +afF +aUT +asz +rMI +rMI +rMI +asz +emq +wnK +dTU +wnK +dTU +hfm +asz +rZt +rZq +asz +asz +pIV +jKm +dbO +pGt +kVd +kVd +huF +rAH +rAH +bkK +boW +ukp +ukp +kVd +ukp +ukp +ukp +bJj +iTQ +osE +gpz +gpz +bJj +amu +gpz +gpz +amu +amu +fXX +fXX +amu puZ puZ "} @@ -55375,66 +55350,66 @@ kaC kaC kaC kaC -uji -uji -fRg -aMs -vIk -lJh -loH -ppI -aMs -bKV -bKV -uKZ -nUa -bKV -bKV -bKV -iDW -bAX -fRg -fRg -fRg -fRg -pgh -fRg -ohq -mKB -cLq -iMA -avx -voo -kLM -iQq -iQq -kLM -tpg -exX -qIr -azS -qny -aDu -aut -kfW -axJ -axJ -axJ -axJ -axJ -rdS -huz -huz -sax -sax -nZA -nZA -kAw -kAw -kAw -puZ -puZ -puZ +xHv +xHv +xHv +xHv +wXs +lSU +lSU +tSI +rZt +gLv +rZt +gLv +afF +wBf +wnK +dTU +wnK +asz +kbZ +chU +gTv +sHf +tRq +chU +ogu +rZt +rZt +asz +asz +pLf +pLf +uzu +kVd +uzu +uzu +uzu +boW +eXQ +eWl +boW +ukp +ukp +xgc +ukp +ukp +ukp +bJj +bJj +osE +bJj +bJj +bJj +amu +gpz +gpz +amu +amu +fXX +fXX +pLS puZ puZ "} @@ -55532,71 +55507,71 @@ mIL fQX fQX fQX -kaC -kaC -kaC -kaC -kaC -uji -uji -uji -uji -uKZ -uKZ -uji -uji -uji -qLA -uji -uKZ -aVT -fRg -fRg -oYH -uKZ -bFS -ail -ail -ail -uKZ -uji -uji -iMA -iMA -iMA -uKZ -ehV -aDM -kTP -iQq -iQq -kLM -uqb -huz -cio -ieD -aKR -aDu -huz -axJ -rdS -rti -ieD -axJ -axJ -hIu -huz -huz -sax -sax -nZA -nZA -kAw -kAw -kAw -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +mIL +mIL +gaz +mIL +bme +lSU +lSU +aOv +afF +rZt +rZt +gLv +afF +wBf +wnK +dTU +pkK +asz +emq +chU +kbZ +chU +gTv +chU +fNE +uvU +rZt +asz +asz +pLf +pLf +pLf +ukp +ukp +kVd +uzu +kVd +nEQ +ukp +xgc +ukp +xgc +kVd +ukp +ukp +ukp +bJj +bJj +bJj +qMc +bJj +rbq +osE +gpz +gpz +amu +amu +fXX +fXX +lAb puZ puZ "} @@ -55702,63 +55677,63 @@ oQl oQl oQl oQl -uKZ -hsw -aNp -bfR -oYH -oYH -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -gqe -uji -jkM -bHC -xwo -bHC -lCp -idG -kLM -iQq -iQq -kLM -kLM -huz -huz -huz -huz -huz -huz -mpt -axJ -rxd -sFv -axJ -rdS -hRC -huz -huz -sax -qCr -kAw -nZA -kAw -kAw -puZ -puZ -puZ -puZ +ood +bme +lSU +lSU +lSU +aSI +aRs +uRt +flN +sBW +rZt +nOB +rMI +rMI +asz +tRq +wdy +dTU +bZZ +dTU +twc +fNE +rZt +uvU +asz +asz +pLf +pLf +pLf +pLf +pLf +pLf +pLf +pLf +npY +nij +rAH +ukp +ukp +pLf +pLf +ukp +xgc +bJj +bJj +bJj +bJj +bJj +fXX +osE +gpz +amu +amu +amu +fXX +igJ +fXX puZ puZ "} @@ -55812,115 +55787,115 @@ hkC arX arX arX -bjv -bjv -ecj -ecj -ecj -ecj -ecj -ecj -aaN -agM -arX -aDI -eOM -eOM -pCH -lwo -lwo -eOM -lwo -eOM -arX -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -oQl -mIL -fQX -fQX -fQX -fQX -cKL -oQl -oQl -oQl -oQl -oQl -uKZ -xSk -aNq -oYH -fRg -oYH -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -hGj -iQq -iOu -kLM -iOu -kLM -kLM -iQq -kLM -iQq -iQq -iQq -iQq -pKK -iQq -iOu -kLM -huz -rdS -axJ -amH -tbR -axJ -rdS -ixC -huz -huz -sax -hrk -kAw -kAw -kAw -kAw -puZ -puZ -puZ -puZ +bjv +bjv +ecj +ecj +ecj +ecj +ecj +ecj +aaN +agM +arX +aDI +eOM +eOM +pCH +lwo +lwo +eOM +lwo +eOM +arX +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +oQl +mIL +fQX +fQX +fQX +fQX +cKL +oQl +oQl +oQl +oQl +oQl +mIL +bme +lSU +lSU +lSU +lSU +lSU +wBf +kEs +fgB +kEs +flN +asz +asz +asz +asz +asz +asz +tDg +iWX +wZh +asz +rMI +kdy +asz +asz +asz +asz +asz +asz +asz +asz +asz +pLf +uzu +ukp +xgc +ukp +ukp +ukp +pLf +ukp +bJj +fXX +fXX +bJj +gpz +bJj +bJj +fXX +vOb +cuJ +fXX +bJj +fXX +fXX +pLS puZ puZ "} @@ -56026,63 +56001,63 @@ oQl oQl oQl oQl -uKZ -cHB -xSk -afd -fRg -oYH -aSA -gIQ -aTh -aVx -aWI -aYd -baX -bcJ -pvv -pvv -pvv -pvv -pvv -fRg -hGj -iQq -iQq -iQq -iQq -iQq -iQq -kLM -aDM -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -huz -aut -rdS -aCy -tdc -axJ -axJ -tZW -huz -huz -sax -hrk -kAw -nZA -kAw -kAw -puZ -puZ -puZ -puZ +mIL +bme +lSU +twi +flN +flN +flN +kEs +kEs +flN +eit +vTc +asz +coj +coj +asz +dtE +goj +goj +goj +goj +goj +goj +aiD +goj +asz +agz +asz +asz +asz +asz +asz +asz +pLf +ukp +uzu +fBA +xgc +ukp +ukp +ukp +xgc +bJj +gpz +gpz +bJj +bJj +gpz +rbq +fXX +rbq +mwJ +fXX +fXX +fXX +fXX +pLS puZ puZ "} @@ -56188,63 +56163,63 @@ oQl oQl oQl oQl -uji -uKZ -uKZ -uji -dtr -oYH -pvv -fhv -aUA -aVB -aWQ -aVx -aVx -aVx -bqN -aVx -dbH -dKR -pvv -fRg -hGj -kLM -iQq -iQq -iQq -iQq -iQq -kLM -kLM -uqb -kLM -iQq -iQq -iQq -iQq -iQq -tpg -exX -qIr -aut -rdS -rdS -axJ -axJ -rdS -huz -huz -sax -hrk -kAw -nZA -kAw -kAw -puZ -puZ -puZ -puZ +mIL +mIL +uIE +flN +flN +flN +flN +flN +eit +kEs +kEs +flN +rMI +dTU +dTU +rMI +goj +chU +goj +chU +chU +chU +goj +chU +aiD +asz +twt +agY +aha +arK +arU +asz +asz +pLf +pLf +ukp +uzu +ukp +ukp +xgc +ukp +bJj +fXX +gpz +gpz +vlD +bJj +bJj +bJj +osE +bJj +amu +amu +amu +amu +amu +amu puZ puZ "} @@ -56351,58 +56326,58 @@ oQl oQl oQl mIL -mIL -mIL -uKZ -fRg -oYH -pvv -aTh -aUx -aVU -aWS -aYf -baY -bdk -aWS -bYO -aWQ -dbH -eVG -fRg -hGj -uqb -kLM -kLM -iQq -iQq -ipc -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -tpg -exX -qIr -rdS -axJ -axJ -axJ -axJ -axJ -huz -huz +fQX +gaz +uIE +flN +flN +gCL +flN +kEs +flN +flN +vTc +rMI +dTU +dTU +rMI +goj +wnK +goj +wnK +wnK +wnK +goj +wnK +goj +fNE +aud +rZt +rZt +rZt +nBh +ajg +asz +qfZ +jrg +jrg +jrg +ukp +ukp +ukp +bJj +bJj +bJj +gpz +bJj +bJj +bJj +bJj +fXX +osE +fXX +amu sax -hrk -nZA -nZA -kAw -kAw puZ puZ puZ @@ -56514,59 +56489,59 @@ oQl mIL mIL ood -ood -uKZ -aQg -oYH -pvv -aTi -aUy -aVL -vVq -aVL -aVL -aVL -aWS -clp -aVU -aUA -gIQ -fRg -hGj -uqb -uqb -uqb -kLM -iQq -ipc -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -eSN -akF -alS -aMW -wHx -dQq -axJ -axJ -huz -huz -huz -hrk -nZA -nZA -nZA -kAw -kAw -bcV -oFl +mIL +lqu +flN +eit +flN +kEs +kEs +fgB +kEs +kOi +lSU +coj +coj +lSU +dtE +rZt +rZt +rZt +rZt +mgT +rZt +uvU +goj +fNE +aud +miD +ptr +ptr +rZt +aCB +aeU +fXX +bJj +bJj +bJj +bJj +bJj +bJj +bJj +bJj +gpz +bJj +bJj +bJj +jrg +amu +gpz +bJj +osE +amu +sax +sax +sax puZ puZ puZ @@ -56668,67 +56643,67 @@ mIL mIL mPu fQX -fQX -fQX +jAL +jAL fQX mIL mIL mIL mIL ood -ood -uKZ -aQg -oYH -pvv -aTj -aUz -aVL -aWS -aYg -bbg -bea -aWS -cbk -aWU -deV -fhv -fRg -hGj -kLM -kLM -iQq -iQq -kLM -vdk -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -tpg -exX -qIr -axJ -axJ -axJ -dQq -axJ -huz -huz -huz -hrk -kAw -kAw -kAw -kAw -kAw -rBk -vAU +pqj +vwn +uIE +flN +kEs +flN +flN +kEs +flN +kOi +lSU +lSU +lSU +lSU +bxW +wnK +goj +aNf +rZt +nBs +goj +txU +goj +fNE +aud +ptr +miD +miD +rZt +ava +asz +qfZ +dVw +gpz +gpz +bJj +bJj +jrg +bJj +bJj +gpz +bJj +bJj +jrg +jrg +amu +rbq +rbq +rbq +amu +sax +sax +sax puZ puZ puZ @@ -56831,64 +56806,64 @@ mIL mIL fQX fQX -fQX -fQX -mIL +jAL +jAL mIL +vJu mIL ood +fQX +jAL mIL -mIL -uKZ -fRg -oYH -pvv -pvv -aUw -aVB -aWU -aVN -aVN -aVN -bqN -aVN -deV -pvv -pvv -gxK -hGj -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -iQq -huz -axJ -axJ -rBC -rdS -axJ -axJ -tkm -ncS -hrk -hrk -kAw -kAw -kAw -kAw -kAw +lSU +uIE +flN +kEs +agw +agw +kEs +wXh +lSU +cvn +lSU +wOO +goj +chU +goj +lfk +rZt +uII +aiD +chU +goj +fNE +aud +rZt +rZt +mRU +ptr +aue +asz +jrg +bJj +gpz +gpz +bJj +jrg +jrg +jrg +gpz +gpz +gpz +bJj +osE +jrg +iTQ +rbq +rbq +rbq +amu +sax puZ puZ puZ @@ -56996,61 +56971,61 @@ fQX fQX mIL mIL -mIL +vJu mIL mIL oQl -oQl -uji -fRg -oYH -pvv -pvv -aTj -aVN -aWV -aYx -bbh -beK -pvv -pvv -pvv -pvv -pvv -fRg -hGj -kLM -iQq -kLM -uqb -kLM -iQq -iQq -iQq -iQq -iQq -kLM -iQq -iQq -kLM -kLM -kLM -huz -krU -axJ -axJ -trX -uLT -wTT -fXB -ncS -hrk -hrk -nZA -kAw -kAw -kAw -kAw +mIL +mIL +lSU +ehO +jis +lSU +acU +acU +lSU +lSU +lSU +fgH +lSU +bYk +goj +chU +dsY +uKo +rZt +wjK +goj +vTj +goj +asz +agm +rZt +rZt +ard +asz +asz +asz +jrg +bJj +bJj +bJj +jrg +jrg +jrg +bJj +gpz +bJj +gpz +bJj +osE +jrg +amu +fXX +fXX +bJj +amu +sax puZ puZ puZ @@ -57153,66 +57128,66 @@ fQX fQX fQX fQX +jAL fQX -fQX -fQX -mIL +jAL mIL +jAL ood ood oQl oQl +ood oQl -uji -dtr -oYH -pvv -aTn -pvv -pvv -pvv -pvv -pvv -bfi -pvv -pvv -pvv -pvv -pvv -fRg -hGj -kLM -iOu -uqb -kJQ -uqb -iQq -iQq -iQq -iQq -kLM -iQq -kLM -uqb -kLM -que -aDM -huz -kys -pef -rdS -axJ -axJ -xvQ -fXB -ncS -kAw -nZA -kAw -kAw -nZA -kAw -hrk +oQl +lSU +dwQ +lSU +lSU +lSU +lSU +lSU +lSU +dwQ +lSU +qRo +goj +wnK +goj +kMJ +rZt +neS +goj +wnK +oag +asz +agl +rZt +rZt +apk +asz +jrg +jrg +jrg +osE +bJj +bJj +jrg +jrg +bJj +bJj +gpz +gpz +bJj +bJj +bJj +gpz +bJj +fXX +bJj +fXX +amu +sax puZ puZ puZ @@ -57324,57 +57299,57 @@ ood mIL oQl oQl +mIL oQl -uji -oYH -ahe -pvv -ugD -pvv -pvv -aWY -pvv -pvv -pvv -pvv -pvv -pvv -pvv -pvv -fRg -uji -aDM -uqb -uqb -uqb -kLM -kLM -iQq -iQq -iQq -iQq -kLM -kLM -sqb -lNg -aDM -aDM -huz -huz -huz -huz -tRN -rdS -xvQ -huz -huz -kAw -kAw -kAw -kAw -nZA -kAw -hrk +oQl +lSU +dwQ +eBG +dwQ +dwQ +elw +rRP +lSU +cvn +lSU +exm +goj +rWS +fVI +rZt +rZt +rZt +goj +chU +goj +aeU +rZt +rZt +rZt +aCB +asz +jrg +jrg +jrg +osE +bJj +bJj +bJj +jrg +bJj +bJj +bJj +bJj +bJj +bJj +bJj +gpz +bJj +bJj +fXX +fXX +iTQ +sax puZ puZ puZ @@ -57475,69 +57450,69 @@ iMb iMb iMb fQX +jAL fQX fQX fQX +jAL +mIL fQX fQX -mIL -mIL -mIL gaz oQl oQl oQl -uji -uKZ -uKZ -uji -uji -uji -uKZ -fRg -fRg -fRg -bfy -fRg -uKZ -uji -dMo -ano -dMo -uji -hzJ -kLM -lNE -uqb -iOu -kLM -iQq -iQq -iQq -iQq -kLM -kLM -uqb -uqb -uqb -hzJ -huz -huz -huz -huz -ncS -ncS -ncS -huz -huz -hrk -kAw -kAw -kAw -kAw -kAw -hrk -hrk +oQl +oQl +lSU +dwQ +dwQ +dwQ +oaO +dwQ +rEW +lSU +lSU +lSU +lSU +bxW +chU +goj +rZt +rZt +rZt +goj +chU +oag +asz +aud +rZt +rZt +tiw +asz +jrg +jrg +jrg +bJj +osE +bJj +bJj +jrg +bJj +osE +bJj +gpz +gpz +gpz +bJj +bJj +gpz +gpz +fXX +jrg +iTQ +sax +sax puZ puZ puZ @@ -57639,67 +57614,67 @@ iMb kri fQX fQX -fQX -fQX -fQX -fQX mIL mIL +jAL +mIL +jAL +mIL mIL oQl oQl oQl oQl -cKL -fQX -oQl -oQl oQl -uKZ -iMA -aYy -bbj -aYy -iMA -uKZ -uji -uji -uji -uji -uji -hzJ -qhm -qhm -kXs -mcH -mcH -mcH -mcH -nEH -mcH -mcH -mcH -pNo -qhm -qhm -hzJ -hzJ -hzJ -hzJ -hzJ -kAw -kAw -kAw -hrk -hrk -kAw -nZA -nZA -kAw -kAw -kAw -kAw -hrk +lSU +lSU +lSU +lSU +dwQ +oaO +dwQ +dwQ +dwQ +bXo +rZt +goj +vuj +goj +eaz +rZt +nwd +goj +wnK +goj +fNE +aud +rZt +rZt +ahT +asz +jrg +jrg +jrg +jrg +bJj +bJj +bJj +bJj +bJj +bJj +bJj +gpz +gpz +bJj +osE +bJj +gpz +gpz +bJj +jrg +jrg +sax +sax puZ puZ puZ @@ -57800,67 +57775,67 @@ fIT fQX iMb fQX -mIL -mIL -fQX -fQX -fQX +wMh +cQY +kSO +qBM +wMh mIL mIL ood oQl oQl +vJu oQl oQl -fQX -cKL -jAL oQl oQl oQl -jAL -aYF -bbt -jAL -bGk -fQX -snZ -hzJ -hzJ -hzJ -hzJ -kLM -kLM -knI -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -kLM -uqb -uqb -uqb -qEB -hzJ -hzJ -hzJ -hzJ -kAw -hrk -kAw -kAw -kAw -kAw -kAw -nZA -kAw -kAw -kAw -kAw +lSU +elw +dwQ +dwQ +dwQ +dwQ +lSU +lQm +goj +chU +goj +dqH +rZt +sCl +onM +chU +goj +fNE +afX +rZt +rZt +ahS +asz +jrg +jrg +jrg +jrg +bJj +bJj +bJj +osE +bJj +bJj +gpz +bJj +bJj +jrg +osE +bJj +bJj +gpz +bJj +jrg +jrg +sax puZ puZ puZ @@ -57961,68 +57936,68 @@ tPz fIT fQX iMb -mIL -mIL -mIL -fQX -fQX -fQX -fQX +wMh +wMh +cQY +rJI +gso +pcY +gaz mIL gaz oQl oQl +vJu oQl oQl -cKL -jAL -jAL +acb oQl oQl -jAL -jAL -jAL -jAL -bfB -bGx -fQX -snZ -hzJ -hzJ -hzJ -hzJ -uAd -kbK -jpE -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -kLM -kLM -qoU -hXB -hzJ -hzJ -hzJ -xMz -xMz -xMz -xMz -kAw -kAw -kAw -kAw -kAw -kAw -hrk -hrk +lSU +dwQ +dwQ +lSU +lSU +lSU +lSU +lSU +goj +chU +dsY +hTb +pRH +lpA +goj +chU +goj +fNE +afV +rZt +rZt +aCB +asz +jrg +jrg +jrg +jrg +bJj +bJj +bJj +gpz +gpz +gpz +bJj +bJj +bJj +jrg +gRJ +bJj +osE +gpz +bJj +bJj +jrg +sax puZ puZ puZ @@ -58123,67 +58098,67 @@ aXZ fIT fQX iMb +wMh +wMh +cQY +aNy +xtc +nKD mIL mIL mIL -fQX -fQX -fQX -fQX -mIL -mIL mIL mIL -mhl -fQX -fQX -fQX -fQX -jAL -jAL -fQX -fQX -jAL -jAL -jAL -pqj -jAL -pqj -fKb -kLM -iQq -kLM -kLM -kLM -kLM -uqb -iOu -kLM -iQq -iQq -iQq -iQq -iQq -iOu -iQq -iQq -uqb -hbD -boz -iDy -hzJ -hzJ -xMz -xMz -xMz -xMz -xMz -kAw -nZA -nZA -kAw -kAw -kAw +vJu +oRK +mIx +aca +oQl +oQl +lSU +dwQ +dwQ +lSU +gpb +adC +adC +lSU +goj +wnK +goj +gKE +pue +iYc +onM +wnK +goj +asz +afz +azH +agZ +aUS +asz +jrg +jrg +jrg +jrg +jrg +bJj +gpz +osE +osE +gpz +bJj +bJj +mKF +jrg +jrg +gRJ +sUD +hXH +apD +hXH +czI puZ puZ puZ @@ -58286,66 +58261,66 @@ fIT iMb fQX fQX -mIL -fQX -fQX -fQX -fQX -fQX +wMh +pXU +wMh +wMh +aFO +gaz mIL mIL mIL mIL -wxY -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -jAL -pqj -jAL -kvQ -uqb -aDM -iQq -kLM -kLM -iQq -uqb -uqb -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -uqb -lNg -lNg -xvb -uqb -xMz -xMz -xMz -xMz -xMz -xMz -kAw -nZA -kAw -kAw -nZA -kAw +vJu +kbT +skl +skl +ors +lSU +lSU +dwQ +dwQ +lSU +dwQ +dwQ +dwQ +lSU +dtE +rZt +rZt +iXr +pue +wui +rZt +rZt +goj +asz +asz +asz +asz +asz +asz +jrg +jrg +jrg +bJj +bJj +bJj +gpz +osE +osE +bJj +osE +osE +jrg +jrg +jrg +jrg +jrg +flN +fLk +flN +pxA puZ puZ puZ @@ -58447,67 +58422,67 @@ fIT fQX iMb iMb -fQX +jAL fQX fQX fQX fQX cKL -fQX -fQX +ood +cKL mIL mIL rcD -mIL -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -jAL -pqj -jAL -fQX -kLM -uqb -kLM -kLM -kLM -kLM -kLM -iQq -iQq -kLM -iQq -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -xMz -xMz -xMz -xMz -xMz -xMz -kAw -kAw -kAw -kAw -kAw -kAw +vJu +sgB +skl +skl +ors +dwQ +elw +dwQ +dwQ +adI +adj +dwQ +adH +lSU +goj +wnK +goj +wnK +wnK +wnK +goj +txU +goj +rZt +rZt +flN +asz +jrg +jrg +jrg +osE +osE +osE +osE +bJj +bJj +bJj +bJj +sLj +sLj +tnG +jrg +jrg +jrg +jrg +wBf +flN +dwQ +rZt +pxA puZ puZ puZ @@ -58616,60 +58591,60 @@ fQX cKL fQX fQX -fQX +ood mIL ood mIL -wxY -fQX -fQX -fQX -fQX -fQX -fQX -fQX -fQX -jAL -jAL -pqj -jAL -fQX -jAL -cdh -aDM -uqb -kLM -kLM -uqb -uqb -kLM -kLM -kLM -iQq -bzK -iQq -iQq -kLM -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -xMz -xMz -xMz -xMz -xMz -xMz -kAw -kAw -kAw -kAw -kAw -kAw +vJu +abV +skl +skl +ors +elw +dwQ +dwQ +dwQ +lSU +ada +dwQ +dwQ +adI +goj +chU +goj +chU +chU +chU +goj +chU +aiD +rZt +flN +rZt +dwQ +bJj +osE +bJj +osE +osE +osE +gpz +bJj +gpz +gpz +bJj +ciL +gpz +bJj +xuz +jrg +jrg +jrg +pxA +flN +rZt +dwQ +pxA puZ puZ puZ @@ -58782,56 +58757,56 @@ mIL mIL ood mIL -mhl -fQX -cKL -fQX -fQX -cKL -fQX -fQX -fQX -jAL -pqj -fQX -jAL -fQX -jAL -kvQ -kLM -xvb -kLM -kLM -kLM -kLM -kLM -gCx -kJQ -kLM -qkI -iQq -kLM -iOu -kLM -iQq -qkI -lNg -kLM -lNg -uqb -uqb -xMz -xMz -xMz -xMz -xMz -xMz -cwZ -cwZ -kAw -kAw -kAw -kAw +vJu +oQl +abX +ors +ors +lSU +lSU +dwQ +dwQ +lSU +ada +ady +adE +lSU +goj +goj +goj +goj +goj +goj +goj +goj +goj +wnK +wnK +dwQ +flN +fXX +bJj +bJj +osE +bJj +bJj +gpz +gpz +bJj +bJj +xuz +ciL +bJj +bJj +bJj +jrg +jrg +jrg +pxA +dwQ +dwQ +rZt +pxA puZ puZ puZ @@ -58930,7 +58905,7 @@ fQX fQX iMb iMb -fQX +jAL iMb iMb pQE @@ -58940,60 +58915,60 @@ pQE mIL gaz mIL -mIL -ood -gaz -mIL -oQl -oQl -fQX -cKL -fQX -oQl -cKL -fQX -jAL -pqj -fQX -cKL -xMz -xMz -xMz -xMz -aDM -uqb -kLM -gCx -kLM -kLM -kLM -kLM -kLM -kLM -iQq -iQq -kLM -iQq -iQq -kLM -uqb -iQq -iQq -iQq -kLM -xvb -uqb -uCs -xMz -xMz -xMz -xMz -cwZ -cwZ -kAw -kAw -kAw -hrk +mIL +jAL +gaz +mIL +vJu +oQl +oQl +abY +abY +oQl +lSU +dwQ +dwQ +lSU +lSU +lSU +lSU +lSU +shO +gAV +gAV +chU +rZt +rZt +kmO +rZt +rZt +rZt +rZt +rZt +rZt +bJj +bJj +osE +gpz +bJj +bJj +bJj +bJj +bJj +gpz +gpz +rad +fXX +osE +gRJ +jrg +jrg +jrg +pxA +mwF +chU +mwF +pxA puZ puZ puZ @@ -59106,56 +59081,56 @@ ood gaz ood mIL -mIL oQl oQl oQl oQl oQl oQl -fQX -jAL -jAL -cKL -xMz -xMz -xMz -xMz -oqf -uqb -kTP -kLM -kLM -iQq -iQq -iQq -kLM -iQq -iQq -iQq -iQq -iQq -kLM -kLM -iQq -iQq -iQq -qkI -iQq -uqb -kLM -aDM -xMz -xMz -xMz -iQq -fKb -cwZ -kAw -kAw -kAw -hrk -puZ +lSU +dwQ +dwQ +dwQ +bXo +rZt +dTU +dTU +rZt +gAV +gAV +chU +asz +asz +asz +asz +asz +wnK +wnK +dwQ +wnK +dwQ +bJj +bJj +gpz +gpz +gpz +bJj +osE +osE +gpz +gpz +xTK +fXX +fXX +jrg +jrg +jrg +jrg +pxA +xcE +ggL +xcE +pxA puZ puZ puZ @@ -59267,57 +59242,57 @@ ood ood mIL mIL -mIL -mIL -iMb +jAL oQl oQl oQl oQl -vAp -mhl -jAL -mhl -vAp -xMz -cnt -cnt -uqb -xvb -kLM -gCx -kLM -iQq -cQW -cQW -cQW -iQq -iQq -iQq -gGH -kLM -kLM -cQW -cQW -cQW -cQW -kLM -iQq -iQq -kLM -kLM -lNg -xMz -xMz -iQq -kLM -fKb -cwZ -kAw -kAw -hrk -kAw -puZ +oQl +oQl +lSU +rHO +rHO +fgK +lSU +chU +gAV +gAV +gAV +gAV +gAV +chU +fNE +aeP +miD +aiV +asz +rZt +rZt +rZt +rZt +flN +pxA +fXX +bJj +jrg +bJj +bJj +bJj +bJj +bJj +osE +pxA +wnK +wnK +pxA +pxA +pxA +pxA +pxA +mwF +chU +mwF +pxA puZ puZ puZ @@ -59430,56 +59405,56 @@ mIL mIL iMb iMb +oQl +iMb iMb iMb oQl oQl -oQl -oQl -fQX -fQX -jAL -fQX -jAL -xMz -aDM -uqb -uqb -uqb -kLM -gGH -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -cQW -cQW -cQW -cQW -kLM -gGH -cQW -kLM -uqb -lNg -erj -kLM -tcp -iQq -fKb -cwZ -kAw -kAw -hrk -sax -puZ +lSU +lSU +lSU +lSU +lSU +chU +gAV +rZt +dTU +dTU +dTU +rZt +fNE +aeC +rZt +aeR +asz +wnK +dwQ +wnK +wnK +wnK +dwQ +bJj +bJj +jrg +jrg +bJj +osE +jrg +jrg +jrg +pxA +wnK +wnK +pxA +pxA +pxA +pxA +pxA +vKu +vKu +vKu +pxA puZ puZ puZ @@ -59589,59 +59564,59 @@ pQE mIL iMb iMb -vpD -vpD -vpD -ccu -ols +iMb +iMb +iMb oQl +iMb +iMb +iMb +iMb oQl oQl oQl -fQX -jAL -pqj -jAL -fQX -xMz -aDM -uqb -uqb -kLM -iQq -iQq -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -cQW -iQq -kLM -kLM -wgM -kLM -ath -iQq -fKb -cwZ -kAw -sax -sax -sax -puZ +oQl +oQl +asz +chU +gAV +chU +asz +asz +aed +asz +asz +aez +mRU +aeQ +asz +asz +rZt +flN +rZt +dwQ +flN +flN +amu +bJj +jrg +jrg +jrg +jrg +jrg +jrg +pxA +wnK +wnK +pxA +pxA +pxA +pxA +pxA +mwF +chU +mwF +pxA puZ puZ puZ @@ -59749,61 +59724,61 @@ pQE pQE mIL fQX +jAL +iMb +iMb +iMb +iMb +iMb +iMb +jAL +iMb +iMb iMb iMb -vpD -vpD -qFx -oQl -oQl -oQl oQl oQl oQl -fQX -jAL -pqj -jAL -fQX -xMz -uqb -uqb -uqb -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -kLM -kLM -lNg -uqb -kLM -kLM -fKb -kAw -kAw -sax -sax -sax -puZ +asz +rZH +gAV +chU +adW +aeb +rZt +miD +miD +adi +aCB +asz +asz +asz +asz +wnK +wnK +wnK +wnK +dwQ +flN +jrg +jrg +jrg +jrg +jrg +pxA +pxA +pxA +wnK +wnK +vKu +wnK +hfw +wnK +rZt +mwF +chU +mwF +pxA puZ puZ puZ @@ -59913,60 +59888,60 @@ fQX jAL fQX iMb -ben -vpD -vpD -oQl -oQl -oQl -oQl -oQl -oQl -oQl -fQX jAL -fQX -fQX -xMz -uqb -uqb -kLM -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -iQq -iQq -kLM -kLM -ath -aDM -kLM -sax -sax -sax -sax -sax -sax -sax -puZ -puZ +iMb +iMb +iMb +iMb +jAL +iMb +iMb +iMb +jAL +jAL +iMb +oQl +asz +chU +gAV +chU +adV +rZt +rZt +rZt +rZt +rZt +mOu +asz +asz +asz +asz +asz +rZt +flN +rZt +rZt +dwQ +pxA +pxA +pxA +jrg +jrg +pxA +mWE +pJA +wnK +mwF +mwF +mwF +mwF +vKu +bJi +bJi +chU +mwF +pxA +flN puZ puZ puZ @@ -60069,67 +60044,67 @@ fQX iMb iMb iMb -iMb +jAL fQX jAL fQX jAL jAL -vpD -ben -vpD -oQl -oQl -oQl -oQl -oQl +iMb +jAL +iMb +iMb +iMb +iMb +iMb +iMb +jDv +jDv +jDv +jDv oQl -vAp -mhl -fQX -mhl -vAp -xMz -uqb -kLM -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -boD -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -iQq -iQq -iQq -iQq -kLM -lMO -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +asz +chU +gAV +chU +adT +rZt +rZt +rZt +rZt +mRU +aex +asz +nVn +iCJ +pxA +pxA +pxA +wnK +wnK +wnK +wnK +jXM +wnK +pxA +jrg +jrg +pxA +nHH +pDp +wnK +flN +flN +flN +flN +flN +mwF +rZt +rZt +mwF +pxA +kTd +kTd puZ puZ puZ @@ -60240,59 +60215,59 @@ pqj jAL iMb iMb -oQl -oQl -oQl -oQl -oQl -oQl -aUP -fQX -jAL iMb -xMz -xMz -kLM -uqb -kLM -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -iQq -kLM -kLM -uqb -kLM -uqb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +iMb +iMb +iMb +iMb +jDv +asz +asz +asz +asz +asz +chU +gAV +chU +adS +aea +ptr +aew +aew +aex +asz +asz +lXy +nxA +vKu +vKu +bUe +rZt +chU +rZt +chU +dwQ +wnK +pxA +pxA +pxA +pxA +nzf +wnK +wnK +aQm +aXc +aXI +bbG +flN +mwF +chU +bJi +bJi +wBf +flN +kTd +kTd puZ puZ puZ @@ -60402,59 +60377,59 @@ pqj jAL jAL iMb -oQl -oQl -oQl -oQl -oQl -aTr +iMb iMb iMb jAL iMb -xMz -xMz -aDM -uqb -kLM -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -kLM -kLM -aDM -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +jDv +asz +dAt +sNX +dAt +rZt +chU +gAV +chU +asz +asz +asz +asz +asz +asz +asz +asz +pxA +vdS +wnK +vKu +pxA +pxA +ahu +wnK +wnK +wnK +wnK +jXM +uYt +pxA +pxA +nrr +wnK +wnK +aPe +act +acA +bah +flN +mwF +chU +bJi +rZt +flN +flN +rZt +flN puZ puZ puZ @@ -60564,59 +60539,59 @@ pqj jAL jAL cKL -jAL -oQl oQl -cKL -cKL -jAL iMb -jAL -jAL -pDH -xMz -xMz -aDM -uqb -uqb -kLM -iQq -iQq -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -kLM -cQW -iQq -kLM -kLM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +iMb +iMb +iMb +oQl +asz +gha +rZt +sNX +rZt +chU +gAV +chU +rZt +asz +wqc +tOq +hXQ +asz +goj +goj +pxA +vKu +wnK +wnK +cSn +pxA +pxA +sIX +chU +rZt +chU +rZt +wnK +pxA +pxA +nmT +pve +wnK +aPd +aRz +aXi +bag +flN +mwF +chU +mwF +flN +wBf +pxA +pxA +kTd puZ puZ puZ @@ -60726,60 +60701,60 @@ pqj pqj jAL jAL -fQX -aOk -aQh -rxF -wuw -iMb +oQl +oQl +oQl iMb jAL -onF -qRV -mIL -xMz -xMz -aDM -uqb -kLM -kLM -gGH -iQq -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -cQW -iQq -cQW -cQW -cQW -cQW -kLM -gGH -cQW -iQq -kLM -uqb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +asz +dAt +sNX +dAt +rZt +chU +gAV +chU +rZt +bXo +biM +biM +biM +goj +xJA +goj +bXo +vKu +soj +wnK +wnK +cSn +pxA +pxA +pxA +wnK +wnK +wnK +wnK +wnK +pxA +kRV +pEv +wnK +flN +flN +flN +flN +flN +mwF +chU +fww +sNX +dAt +rZt +pxA +kTd +flN puZ puZ puZ @@ -60888,60 +60863,60 @@ pqj pqj pqj iMb -jAL -aOl -oCk -jAL -jJf -jAL -jAL -iMb -iMb -kVs -bbF -xMz -xMz -uqb -uqb -kLM -kLM -gCx -iQq -iQq -cQW -cQW -cQW -iQq -iQq -iQq -gGH -iQq -iQq -cQW -cQW -cQW -cQW -kLM -iQq -iQq -iQq -kLM -uqb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +rZt +bgC +rZt +rZt +chU +gAV +chU +rZt +asz +biM +biM +biM +goj +lpA +uWA +pxA +tNP +lFp +jcv +fqJ +cSn +pxA +pxA +pxA +rZH +rZt +chU +rZt +rZt +pxA +pxA +pxA +wnK +mwF +mwF +mwF +mwF +vKu +mwF +chU +uOR +uuN +acP +flN +pxA +flN +kTd puZ puZ puZ @@ -61050,60 +61025,60 @@ jAL pqj pqj pqj -pqj -jAL -iMb -aRo -jAL -pqj -iMb -jAL -iMb -jAL -jAL -jAL -kvQ -uqb -dgG -kLM -kLM -kLM -kLM -kLM -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -iQq -gCx -kLM -kLM -uqb -kLM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +eaa +rZt +rZt +rZt +chU +gAV +chU +iaK +kTI +biM +xtI +qOd +goj +wnK +goj +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +wnK +wnK +wnK +wnK +wnK +pxA +rZt +vKu +vKu +wnK +vKu +wnK +vKu +wnK +bJi +chU +fww +sNX +dAt +flN +rZt +flN +kTd puZ puZ puZ @@ -61212,61 +61187,61 @@ jAL jAL pqj pqj -pqj -pqj -jAL -jAL -iMb -aTt -iMb -iMb -iMb -fQX -jAL -jAL -kvQ -oUu -uqb -kLM -kLM -uqb -iQq -gCx -kLM -uqb -kLM -iQq -iQq -kLM -kLM -kLM -kLM -kLM -iQq -iQq -kLM -kLM -kLM -uqb -uqb -uqb -kLM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +rZt +byr +rZt +rZt +chU +gAV +chU +iaK +feA +biM +biM +biM +uuv +yhX +goj +pxA +rZt +dTU +osV +dTU +dTU +dTU +rZt +kap +rZt +crF +crF +crF +wnK +vKu +wnK +chU +rZt +chU +rZt +chU +rZt +chU +rZt +chU +mwF +bgC +flN +flN +rZt +flN +kTd +flN puZ puZ "} @@ -61374,61 +61349,61 @@ jAL jAL jAL pqj -pqj -pqj -pqj -pqj -aSF -aTw -iMb -iMb -jAL -pqj -jAL -pqj -iQq -iQq -iQq -iQq -uqb -uqb -uqb -uqb -kLM -kLM -iQq -gCx -uqb -uqb -qkI -iQq -kLM -kLM -kLM -kLM -gCx -kLM -uqb -uqb -aDM -upf -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +wFB +eSt +wFB +dTU +rZt +gAV +rZt +txX +kRj +qOZ +cEj +qOZ +goj +fwv +goj +bXo +chU +kQJ +vKu +wnK +vKu +wnK +vKu +kap +rZt +crF +crF +crF +wnK +vKu +wnK +chU +rZt +chU +rZt +chU +rZt +chU +rZt +chU +mwF +byr +rZt +rZt +xun +flN +kTd +kue puZ puZ "} @@ -61536,61 +61511,61 @@ aKk lyh rxF wcF -pqj -aOp -pqj -pqj -fQX -iMb -iMb -jAL +oQl +oQl +oQl iMb iMb -jAL -jAL -kvQ -iOu -kLM -kLM -kLM -kLM -kLM -uqb -uqb -uqb -uqb -kLM -iQq -uqb -uqb -kLM -kLM -kLM -uqb -uqb -uqb -uqb -kLM -uqb -kLM -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +rib +asz +gha +uuN +sNX +rZt +chU +gAV +chU +rZt +asz +dnH +jft +ghS +asz +goj +goj +pxA +rZH +vKu +ghU +pxA +vQm +vFX +pxA +pxA +wnK +wnK +wnK +wnK +wnK +pxA +rZt +vKu +vKu +wnK +vKu +wnK +vKu +wnK +bJi +chU +fww +gaJ +dAt +rZt +rZt +flN +flN +kTd puZ puZ "} @@ -61694,65 +61669,65 @@ gkv gkv puZ puZ -aKn +jAL rMb iMb jJf -pqj -pqj -cKL -cKL -fQX -iMb -fQX iMb iMb iMb jAL -jAL -kvQ -uqb -aDM -uqb -uqb -uqb -uqb -uqb -uqb -qza -kLM -hXX -kLM -cko -rLu -nMR -kLM -uqb -uqb -aDM -xvb -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +iMb +rib +asz +wFB +eSt +wFB +dTU +rZt +gAV +rZt +dTU +asz +asz +asz +asz +asz +goj +goj +fNE +chU +wnK +pxA +pxA +pxA +pxA +pxA +pxA +mcw +rZt +chU +rZt +chU +pxA +pxA +pxA +wnK +mwF +mwF +mwF +mwF +vKu +mwF +chU +uOR +rZt +acP +flN +pxA +flN +flN +kue puZ puZ "} @@ -61860,61 +61835,61 @@ aKn jAL jAL jAL -pqj -cKL -iMb -fQX -cKL -aTH +jAL iMb iMb -hJd iMb iMb -puZ -puZ -puZ -puZ -eaB -eaB -gJk -hIn -aDM -uqb -uqb -uqb -uqb -mfa -jqx -slO -nNl -nMR -uqb -aDM -kLM -kLM -xvb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +rib +asz +asz +asz +asz +asz +wnK +wnK +wnK +wnK +wnK +rZt +rZt +asz +wTm +biM +biM +fNE +chU +vKu +vQm +pxA +rZt +iQe +wnK +gFb +nMk +chU +rZt +chU +rZt +fNE +mWE +pDu +wnK +flN +flN +flN +flN +flN +mwF +chU +fww +sNX +dAt +flN +pxA +flN +flN +kue puZ puZ "} @@ -62022,61 +61997,61 @@ jAL jAL jAL jAL -pqj jAL iMb -aRp -lyh -rxF -wuw -aVW -fQX iMb -cKL -puZ -puZ -puZ -puZ -slO -slO -slO -aKP -aMn -puZ -kfl -eGe -rnO -qza -mNs -slO -slO -ofl -uqb -xvb -kGW -aDM -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +jAL +jAL +oQl +oQl +oQl +asz +asz +asz +goj +goj +djO +goj +wnK +rZt +rZt +fNE +nPH +biM +biM +fNE +chU +wnK +vFX +pxA +iQe +qaF +chU +kyu +drx +rZt +chU +rZt +chU +fNE +mHU +pDp +wnK +aQm +aXc +aXI +bbG +flN +mwF +chU +mwF +rZt +flN +rZt +flN +flN +flN +kue puZ puZ "} @@ -62184,61 +62159,61 @@ puZ aLD aMv jAL +oQl +oQl +oQl +oQl jAL -iMb -cKL -iMb -rMb -iMb -fqb -jAL -iMb -cKL -iMb -puZ -puZ -puZ -puZ -puZ -slO -slO -slO -slO -puZ -lLv -cQW -rbA -uqb -mNs -xMz -slO -ofl -uqb -uqb -aDM -uqb -uqb -uqb -uqb -riV -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +asz +iqt +rZt +goj +axa +hVs +djO +dBB +rZt +rZt +fNE +sdF +biM +biM +fNE +rZt +vKu +pxA +pxA +rZt +hEE +chU +gFb +sfM +oHF +wnK +wnK +wnK +pxA +lYG +wnK +wnK +aPe +aSJ +aXn +bah +flN +mwF +chU +mwF +flN +rZt +rZt +flN +flN +kTd +kue puZ puZ "} @@ -62346,61 +62321,61 @@ puZ puZ puZ jAL +oQl +oQl +oQl +oQl jAL -cKL -fQX -iMb -aSG -aTL -fQX -iMb -fQX -cKL -puZ -puZ -puZ -puZ -puZ -puZ -slO -slO -slO -puZ -puZ -mev -cQW -rbA -aDM -mOv -niL -niL -oqH -uqb -uqb -uqb -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -jCE -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +asz +bNu +rZt +djO +qCs +pPt +goj +wnK +qyE +wnK +asz +fNE +fNE +fNE +pxA +xvS +xvS +pxA +pxA +iQe +qaF +chU +pxA +pxA +pxA +vKu +vKu +vKu +pxA +lGU +wnK +wnK +aPd +aRz +aXi +bag +flN +mwF +chU +mwF +rZt +flN +flN +pxA +flN +kTd +kue puZ puZ "} @@ -62510,59 +62485,59 @@ puZ puZ puZ puZ -cKL -fQX -iMb -iMb -iMb -cKL -iMb -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -uqb -uqb -uqb -kLM -uqb -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -jLx -iWS -jCE -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +oQl +asz +iIe +rZt +goj +fHM +rZt +goj +wnK +rZt +vKu +vKu +vKu +vKu +vKu +vKu +vKu +toN +vKu +vKu +dgF +hEE +wnK +pxA +pxA +pxA +wnK +wnK +wnK +pxA +hQO +pve +wnK +flN +wAP +flN +dJS +flN +mwF +chU +mwF +rZt +rZt +wBf +pxA +kTd +kue +flN puZ puZ "} @@ -62673,57 +62648,57 @@ puZ puZ puZ puZ -cKL -fQX -cKL -cKL -iMb -fQX -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -snN -uqb -uqb -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -oaP -jCE -jCE -jCE -jCE -acO -puZ -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +oQl +oQl +asz +asz +rZt +goj +rZt +rZt +goj +wnK +xEB +vKu +wnK +rZt +rZt +eFQ +rZt +rZt +wnK +vKu +vKu +vKu +vKu +vKu +jqT +pxA +ctk +cVy +chU +mwF +pxA +kRV +kVe +wnK +mwF +mwF +yiS +mwF +vKu +mwF +chU +mwF +rZt +flN +flN +flN +kTd +kTd puZ puZ puZ @@ -62837,55 +62812,55 @@ puZ puZ puZ puZ -fQX -iMb -fQX -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -aDM -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -jCE -jCE -acM -jCE -jCE -puZ -puZ -puZ -puZ -puZ +oQl +oQl +oQl +asz +tqs +rZt +goj +rZt +fHM +goj +wnK +rZt +vKu +wnK +rZt +rZt +wnK +rZt +rZt +wnK +vKu +vKu +vKu +vKu +vKu +bqy +pxA +ugP +mwF +chU +mwF +pxA +pxA +pxA +pxA +wnK +vKu +xIL +vKu +wnK +bJi +chU +bJi +rZt +twi +flN +flN +kue +flN puZ puZ puZ @@ -63002,51 +62977,51 @@ puZ puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -jCE -jCE -jCE -puZ -puZ -puZ -puZ -puZ +asz +wgp +rZt +goj +qNK +hrb +goj +wnK +rZt +vKu +lkX +ift +sQU +vKu +sQU +ift +lkX +rhS +oqQ +oqQ +lNm +vKu +pxA +pxA +ctk +mwF +chU +bJi +euA +euA +euA +bJi +euA +euA +euA +euA +bJi +bJi +chU +mwF +rZt +twi +kue +kTd +flN puZ puZ puZ @@ -63164,50 +63139,50 @@ puZ puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -hFl -hFl -puZ -puZ -puZ -puZ -puZ +asz +fjd +rZt +djO +kts +wAM +djO +asz +pxA +pxA +ift +smI +hUG +vKu +udJ +euA +ift +pKP +nNN +kZy +pKP +vKu +uLu +pxA +pxA +bJi +rZt +dTU +dTU +dTU +dTU +rZt +dTU +dTU +dTU +dTU +rZt +dTU +rZt +mwF +rZt +pxA +kTd +kTd puZ puZ puZ @@ -63326,48 +63301,48 @@ puZ puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +asz +asz +asz +goj +djO +goj +goj +asz +pxA +pxA +lkX +ffw +uim +vKu +uim +ffw +lkX +vKu +vKu +vKu +vKu +vKu +uLu +pxA +pxA +bJi +bJi +euA +vPR +euA +euA +bJi +euA +euA +vPR +euA +bJi +euA +euA +bJi +rZt +pxA puZ puZ puZ @@ -63490,46 +63465,46 @@ puZ puZ puZ puZ +asz +asz +asz +asz +asz +asz puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +pxA +ueu +mMa +euA +vKu +euA +euA +vKu +rhS +oqQ +oqQ +rhS +ueu +pxA +pxA +pxA +pxA +pxA +sym +ctk +ugP +pxA +pxA +xwi +thc +ckI +dTn +pxA +pxA +rZt +rZt +rZt +pxA puZ puZ puZ @@ -63659,39 +63634,39 @@ puZ puZ puZ puZ +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA puZ puZ puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ -puZ +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA +pxA puZ puZ puZ diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm index 9457ccbe9e9f..f4b3d26d3e93 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -62142,7 +62142,7 @@ /area/lv522/indoors/c_block/casino) "xHz" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Corporate Liason Office " + name = "\improper Corporate Liaison Office " }, /turf/open/floor/corsat{ icon_state = "marked" diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index ccaf5f201b6f..becac81a1897 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -12485,7 +12485,7 @@ "bnz" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; - name = "\improper Corporate Liason" + name = "\improper Corporate Liaison" }, /turf/open/floor{ icon_state = "white" @@ -20011,7 +20011,7 @@ "pQn" = ( /obj/structure/machinery/door/airlock/almayer/generic{ locked = 1; - name = "\improper Corporate Liason" + name = "\improper Corporate Liaison" }, /turf/open/floor{ icon_state = "white" diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index bf5663120e60..26c9816ca0c3 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -51,15 +51,6 @@ "aai" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/upper_hull) -"aaj" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "aak" = ( /obj/effect/step_trigger/teleporter/random{ affect_ghosts = 1; @@ -178,16 +169,6 @@ icon_state = "cargo" }, /area/almayer/hallways/repair_bay) -"aaw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aax" = ( /obj/effect/projector{ name = "Almayer_Down2"; @@ -247,16 +228,6 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"aaG" = ( -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "aaH" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down1"; @@ -268,34 +239,6 @@ icon_state = "plate" }, /area/almayer/stair_clone/upper) -"aaI" = ( -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/almayer{ - allow_construction = 0; - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) -"aaJ" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "aaK" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -336,19 +279,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"aaW" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/hallways/aft_hallway) "aaY" = ( /obj/structure/lattice, /turf/open/space, @@ -409,16 +339,6 @@ /obj/structure/window/reinforced/toughened, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cic) -"abl" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "abp" = ( /obj/effect/step_trigger/clone_cleaner, /turf/closed/wall/almayer, @@ -426,21 +346,6 @@ "abs" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/north1) -"abt" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"abu" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "abw" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -463,20 +368,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"abC" = ( -/obj/structure/stairs{ - dir = 1; - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_Down1"; - vector_x = 19; - vector_y = -98 - }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "abE" = ( /turf/closed/wall/almayer, /area/almayer/living/basketball) @@ -518,17 +409,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"abM" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "abQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -577,19 +457,19 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"acf" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/living/starboard_garden) -"acg" = ( -/obj/effect/step_trigger/clone_cleaner, +"acd" = ( +/obj/structure/surface/rack, +/obj/item/storage/box/sprays, /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 + icon_state = "W" }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "orange" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/lower/workshop/hangar) +"acf" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/living/starboard_garden) "ach" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door/airlock/almayer/maint, @@ -744,17 +624,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"act" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "acu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -773,6 +642,15 @@ "acx" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/north2) +"acy" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "acz" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -807,28 +685,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"acG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"acH" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "acI" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = -12 @@ -896,30 +752,6 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"acO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"acP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "acS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -1029,12 +861,6 @@ "adg" = ( /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) -"adi" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "adj" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down1"; @@ -1101,13 +927,6 @@ "adu" = ( /turf/open/floor/almayer, /area/almayer/shipboard/starboard_missiles) -"ady" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "adC" = ( /obj/structure/surface/rack, /obj/item/stock_parts/manipulator/nano{ @@ -1199,18 +1018,6 @@ icon_state = "test_floor4" }, /area/almayer/living/offices/flight) -"adT" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aea" = ( /obj/structure/machinery/light{ dir = 1 @@ -1307,19 +1114,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"aey" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aez" = ( /obj/structure/bed/chair, /turf/open/floor/almayer{ @@ -1605,17 +1399,6 @@ icon_state = "outerhull_dir" }, /area/space) -"afq" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "afr" = ( /turf/open/floor/almayer{ dir = 9; @@ -1881,11 +1664,6 @@ "agj" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/commandbunks) -"agl" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "agn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -2028,14 +1806,6 @@ }, /turf/open/floor/engine, /area/almayer/engineering/airmix) -"agN" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/disposalpipe/down/almayer{ - dir = 1; - id = "almayerlink" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "agO" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -2254,20 +2024,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/starboard_atmos) -"ahH" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "ahJ" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -2681,18 +2437,6 @@ icon_state = "silver" }, /area/almayer/hallways/repair_bay) -"ajq" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - layer = 2.5; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "ajr" = ( /turf/open/floor/almayer{ dir = 1; @@ -2882,13 +2626,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"ajS" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "ajT" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -3320,7 +3057,8 @@ }, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ dir = 1; - name = "\improper Brig Maintenance" + name = "\improper Brig Maintenance"; + closeOtherId = "brigmaint_s" }, /obj/structure/machinery/door/poddoor/almayer/open{ id = "perma_lockdown_2"; @@ -3493,6 +3231,15 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) +"ams" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/atmos_alert{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "amw" = ( /turf/open/floor/almayer{ dir = 9; @@ -4506,14 +4253,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"apA" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/structure/sign/safety/rewire{ - pixel_x = 32 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "apB" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/snacks/wrapped/booniebars{ @@ -4569,27 +4308,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"apM" = ( -/obj/structure/machinery/autolathe/armylathe/full, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"apO" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"apP" = ( -/obj/structure/machinery/autolathe, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "apR" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -4627,16 +4345,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/containment) -"apT" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/engineering/reinforced/OT{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop/hangar) "apU" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -4651,12 +4359,6 @@ dir = 8 }, /area/almayer/medical/containment/cell) -"apV" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "apW" = ( /obj/structure/machinery/telecomms/server/presets/common, /turf/open/floor/almayer{ @@ -4710,19 +4412,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"aqd" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/machinery/disposal/delivery{ - density = 0; - desc = "A pneumatic delivery unit. Sends items to the requisitions."; - icon_state = "delivery_engi"; - name = "Requisitions Delivery Unit"; - pixel_y = 28 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "aqe" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -4877,22 +4566,6 @@ icon_state = "test_floor4" }, /area/almayer/living/pilotbunks) -"aqD" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "MTline"; - name = "Next button"; - pixel_x = 5; - pixel_y = 10; - req_one_access_txt = "2;7" - }, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "aqF" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_10" @@ -4976,19 +4649,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) -"aqT" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/hand_labeler{ - pixel_x = 7 - }, -/obj/item/storage/firstaid/fire{ - pixel_x = -6 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "aqU" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/airoom) @@ -5000,14 +4660,6 @@ icon_state = "tcomms" }, /area/almayer/command/telecomms) -"aqW" = ( -/obj/structure/filingcabinet, -/obj/item/folder/yellow, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "aqY" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -5016,30 +4668,6 @@ "arb" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) -"ard" = ( -/obj/structure/filingcabinet, -/obj/item/folder/yellow, -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"are" = ( -/obj/structure/machinery/computer/demo_sim{ - dir = 4; - pixel_x = -17; - pixel_y = 8 - }, -/obj/structure/machinery/computer/working_joe{ - dir = 4; - pixel_x = -17; - pixel_y = -8 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "arf" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -5186,23 +4814,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"arC" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"arE" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "arF" = ( /obj/structure/machinery/light{ dir = 1 @@ -5227,16 +4838,6 @@ icon_state = "redfull" }, /area/almayer/engineering/upper_engineering) -"arJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "arK" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -5295,13 +4896,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"arZ" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "asc" = ( /turf/open/floor/almayer{ dir = 1; @@ -5326,23 +4920,6 @@ icon_state = "dark_sterile" }, /area/almayer/living/pilotbunks) -"asi" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/obj/structure/transmitter{ - dir = 8; - name = "OT Telephone"; - phone_category = "Almayer"; - phone_id = "Ordnance Tech"; - pixel_x = 14 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asj" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -5362,12 +4939,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"ask" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asl" = ( /obj/structure/machinery/light{ dir = 1 @@ -5398,12 +4969,6 @@ /obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/upper_medical) -"aso" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asp" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -5422,10 +4987,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"ast" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "asu" = ( /obj/structure/sign/safety/hazard{ pixel_x = 32; @@ -5436,19 +4997,6 @@ icon_state = "redfull" }, /area/almayer/medical/upper_medical) -"asv" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asw" = ( /obj/structure/machinery/light{ dir = 8 @@ -5458,39 +5006,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"asx" = ( -/obj/structure/stairs{ - icon_state = "ramptop" - }, -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 - }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) -"asy" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asA" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) -"asB" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet/bombcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asD" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door_control{ @@ -5504,9 +5023,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"asE" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/engineering/engineering_workshop/hangar) "asF" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ access_modified = 1; @@ -5697,23 +5213,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"atd" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/sprays, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"ate" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/glass/bucket/janibucket, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "atf" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen, @@ -5725,27 +5224,6 @@ /obj/structure/bed/sofa/vert/grey/top, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"ath" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/obj/structure/machinery/door_control{ - id = "OTStore"; - name = "Shutters"; - pixel_y = -24 - }, -/obj/structure/surface/rack, -/obj/item/reagent_container/glass/bucket/janibucket, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"ati" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atj" = ( /obj/effect/projector{ name = "Almayer_Down3"; @@ -5846,13 +5324,6 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"atw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atx" = ( /obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, /turf/open/floor/almayer{ @@ -5873,16 +5344,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"atA" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - access_modified = 1; - dir = 1; - name = "\improper Spare Bomb Suit"; - req_one_access = null; - req_one_access_txt = "35" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atC" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -5897,27 +5358,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"atE" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "OTStore"; - name = "\improper Secure Storage"; - unacidable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"atF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "OTStore"; - name = "\improper Secure Storage"; - unacidable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop/hangar) "atG" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 @@ -5940,12 +5380,6 @@ allow_construction = 0 }, /area/almayer/hallways/aft_hallway) -"atJ" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "atK" = ( /turf/open/floor/almayer{ dir = 10; @@ -6034,25 +5468,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"atZ" = ( -/obj/structure/machinery/door_control{ - id = "OTStore"; - name = "Shutters"; - pixel_y = 24 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"aua" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "aub" = ( /obj/structure/machinery/light{ dir = 1 @@ -6078,14 +5493,6 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"aud" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "aue" = ( /obj/effect/projector{ name = "Almayer_Up3"; @@ -6108,19 +5515,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"auh" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "aui" = ( /obj/structure/machinery/telecomms/hub/preset, /turf/open/floor/almayer{ @@ -6204,51 +5598,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"aup" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/freezer/industry, -/obj/item/reagent_container/glass/beaker/silver, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"aur" = ( -/obj/structure/reagent_dispensers/oxygentank{ - anchored = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"aus" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"aut" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "auu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6267,31 +5616,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"auw" = ( -/obj/structure/reagent_dispensers/pacidtank{ - anchored = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"aux" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/pipes/vents/scrubber{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "auy" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -6311,21 +5635,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering) -"auC" = ( -/obj/structure/reagent_dispensers/fueltank/gas/hydrogen{ - anchored = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "auD" = ( /obj/structure/bed/chair{ dir = 8 @@ -6341,19 +5650,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"auE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"auF" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "auG" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -6383,12 +5679,6 @@ icon_state = "test_floor4" }, /area/almayer/command/telecomms) -"auI" = ( -/obj/structure/reagent_dispensers/acidtank, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "auK" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_sn_full_cap" @@ -6412,22 +5702,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"auM" = ( -/obj/structure/reagent_dispensers/ammoniatank{ - anchored = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"auN" = ( -/obj/structure/reagent_dispensers/fueltank{ - anchored = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "auO" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -6435,12 +5709,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"auP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "auQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -6492,14 +5760,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/port_point_defense) -"auY" = ( -/obj/structure/reagent_dispensers/watertank{ - anchored = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "auZ" = ( /obj/structure/machinery/light, /obj/effect/decal/cleanable/dirt, @@ -6507,32 +5767,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"ava" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"avb" = ( -/obj/structure/reagent_dispensers/fueltank/gas/methane{ - anchored = 1 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "avc" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -6550,45 +5784,11 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"ave" = ( -/obj/item/reagent_container/glass/bucket/janibucket, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/item/reagent_container/glass/bucket/janibucket{ - pixel_y = 11 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - layer = 2.5 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"avi" = ( -/obj/structure/reagent_dispensers/fueltank/custom, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "avj" = ( /turf/open/floor/almayer{ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"avk" = ( -/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ - access_modified = 1; - dir = 1; - req_one_access = null; - req_one_access_txt = "35" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop/hangar) "avl" = ( /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) @@ -6802,12 +6002,6 @@ icon_state = "red" }, /area/almayer/command/cic) -"avT" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "avU" = ( /obj/effect/landmark/start/crew_chief, /turf/open/floor/plating/plating_catwalk, @@ -7025,9 +6219,6 @@ icon_state = "plate" }, /area/almayer/command/cic) -"awE" = ( -/turf/closed/wall/almayer, -/area/almayer/command/corporateliason) "awF" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/numbertwobunks) @@ -7522,7 +6713,8 @@ name = "\improper Combat Information Center Blast Door" }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -7590,22 +6782,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"ayG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = -17 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) -"ayH" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "ayI" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical{ @@ -8051,15 +7227,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"aAb" = ( -/obj/structure/pipes/binary/pump/on{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "aAd" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -8116,7 +7283,8 @@ }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ id_tag = "cic_exterior"; - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_n" }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -8789,14 +7957,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/containment) -"aCX" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "aCZ" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -9068,6 +8228,15 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/command/lifeboat) +"aDS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "aDU" = ( /obj/structure/surface/rack, /obj/item/tool/minihoe{ @@ -9153,6 +8322,15 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"aEo" = ( +/obj/structure/closet/emcloset{ + pixel_x = 8 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "aEp" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -9210,17 +8388,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"aEJ" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "aEK" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -9314,6 +8481,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/containment) +"aFe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "aFf" = ( /obj/item/reagent_container/glass/beaker/bluespace, /obj/structure/machinery/chem_dispenser/research, @@ -9343,17 +8520,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/telecomms) -"aFj" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/numbertwobunks) "aFl" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -9389,14 +8555,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"aFo" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/numbertwobunks) "aFp" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -9634,9 +8792,14 @@ "aGr" = ( /turf/open/floor/almayer, /area/almayer/living/bridgebunks) -"aGt" = ( -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) +"aGs" = ( +/obj/structure/machinery/portable_atmospherics/hydroponics, +/obj/item/seeds/goldappleseed, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "aGv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -9654,6 +8817,17 @@ }, /turf/open/floor/plating, /area/almayer/engineering/port_atmos) +"aGA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "aGC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -9702,20 +8876,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"aGR" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/status_display{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aGS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -9979,6 +9139,9 @@ icon_state = "orange" }, /area/almayer/hull/upper_hull/u_f_p) +"aId" = ( +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "aIe" = ( /turf/open/floor/almayer{ dir = 5; @@ -10175,15 +9338,6 @@ "aIZ" = ( /turf/open/floor/plating, /area/almayer/hull/upper_hull/u_m_s) -"aJa" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hallways/aft_hallway) "aJc" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Commanding Officer's Mess" @@ -10204,19 +9358,6 @@ icon_state = "test_floor4" }, /area/almayer/living/captain_mess) -"aJd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aJf" = ( /obj/structure/machinery/floodlight, /obj/structure/machinery/floodlight, @@ -10523,27 +9664,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"aKB" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"aKC" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "aKE" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -10597,22 +9717,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"aKJ" = ( -/obj/structure/stairs{ - icon_state = "ramptop" - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 - }, -/turf/open/floor/plating/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "aKN" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/clothing/accessory/red, @@ -10676,6 +9780,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"aLc" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/sign/safety/stairs{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "aLd" = ( /turf/closed/wall/almayer, /area/almayer/hull/lower_hull) @@ -10745,12 +9862,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/cic) -"aLQ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "aLS" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -10769,17 +9880,6 @@ "aLW" = ( /turf/open/floor/almayer, /area/almayer/shipboard/starboard_point_defense) -"aLX" = ( -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 - }, -/turf/open/floor/almayer{ - allow_construction = 0; - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) "aLZ" = ( /obj/structure/surface/table/almayer, /obj/item/tool/pen, @@ -11569,6 +10669,24 @@ /obj/structure/sign/nosmoking_1, /turf/closed/wall/almayer, /area/almayer/squads/alpha) +"aPS" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"aPT" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"aPU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "aPX" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, @@ -11890,11 +11008,6 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"aRD" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) "aRE" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -12023,6 +11136,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"aSk" = ( +/obj/structure/machinery/power/smes/buildable, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) "aSl" = ( /obj/structure/machinery/light, /obj/structure/machinery/cm_vending/sorted/medical, @@ -12226,10 +11348,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_two) -"aSP" = ( -/obj/structure/filingcabinet, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "aSY" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -12608,9 +11726,6 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"aUx" = ( -/turf/closed/wall/almayer/outer, -/area/almayer/engineering/lower_engineering) "aUC" = ( /obj/structure/machinery/light{ dir = 4 @@ -12710,9 +11825,6 @@ icon_state = "bluefull" }, /area/almayer/living/captain_mess) -"aVl" = ( -/turf/closed/wall/almayer, -/area/almayer/engineering/lower_engineering) "aVo" = ( /obj/structure/machinery/light{ dir = 1 @@ -12720,12 +11832,6 @@ /obj/structure/machinery/portable_atmospherics/canister/empty, /turf/open/floor/engine, /area/almayer/engineering/airmix) -"aVp" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "aVr" = ( /obj/structure/closet/secure_closet/freezer/meat, /obj/structure/sign/safety/fridge{ @@ -12966,10 +12072,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"aWr" = ( -/obj/structure/window/framed/almayer/hull, -/turf/open/floor/plating, -/area/almayer/engineering/lower_engineering) "aWs" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -13056,14 +12158,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"aWS" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_17"; - pixel_x = -5; - pixel_y = 10 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "aWT" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -13152,20 +12246,15 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) +"aXD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "aXE" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/stern_hallway) -"aXQ" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "aXS" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -13297,6 +12386,10 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"aYH" = ( +/obj/structure/safe/cl_office, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "aYI" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -13498,13 +12591,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"aZJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "aZK" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -13592,19 +12678,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/hangar) -"baa" = ( -/obj/structure/surface/table/almayer, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/obj/structure/machinery/faxmachine/corporate/liaison, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"bac" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bad" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -13687,10 +12760,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"baD" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "baG" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer, @@ -13706,6 +12775,12 @@ "baI" = ( /turf/open/floor/plating, /area/almayer/hallways/hangar) +"baJ" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "baM" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ dir = 8 @@ -13853,16 +12928,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_umbilical) -"bbp" = ( -/obj/effect/projector{ - name = "Almayer_Down4"; - vector_x = 19; - vector_y = -104 - }, -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/hallways/aft_hallway) "bbr" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -14134,6 +13199,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) +"bcM" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "bcP" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -14240,12 +13315,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"bdo" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bdr" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) @@ -14523,6 +13592,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"beL" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "beP" = ( /obj/item/stack/catwalk, /obj/structure/disposalpipe/segment{ @@ -14626,12 +13711,6 @@ icon_state = "redcorner" }, /area/almayer/living/cryo_cells) -"bfs" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) "bft" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -14688,17 +13767,6 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"bfA" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/electrical, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bfC" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -14753,6 +13821,21 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"bfO" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/photocopier{ + anchored = 0 + }, +/obj/structure/sign/poster{ + desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; + icon_state = "poster14"; + name = "propaganda poster"; + pixel_y = 32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "bfP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -15065,16 +14148,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"bht" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bhw" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "bhx" = ( /obj/structure/bed/chair/wood/normal{ dir = 1 @@ -15083,9 +14156,6 @@ icon_state = "plate" }, /area/almayer/living/chapel) -"bhB" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/engineering/engine_core) "bhC" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -15094,15 +14164,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"bhD" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bhG" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -15112,6 +14173,16 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"bhI" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "bhJ" = ( /obj/structure/machinery/cm_vending/clothing/staff_officer{ density = 0; @@ -15121,10 +14192,6 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"bhM" = ( -/obj/structure/safe/cl_office, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bhT" = ( /obj/structure/cargo_container/lockmart/mid{ layer = 3.1; @@ -15262,24 +14329,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"bjd" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) -"bje" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bjg" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) "bjk" = ( /obj/structure/machinery/door_control{ id = "perma_lockdown_2"; @@ -15295,21 +14344,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) -"bjl" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bjn" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bjs" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -15323,13 +14357,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"bjy" = ( -/obj/docking_port/stationary/emergency_response/port3, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "bjA" = ( /turf/open/floor/almayer{ dir = 9; @@ -15464,18 +14491,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"bkt" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bky" = ( /obj/structure/machinery/cryo_cell, /obj/structure/pipes/standard/cap/hidden, @@ -15603,9 +14618,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"bkZ" = ( -/turf/closed/wall/almayer, -/area/almayer/engineering/engineering_workshop) "blb" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 15; @@ -15615,12 +14627,6 @@ icon_state = "mono" }, /area/almayer/hallways/stern_hallway) -"bld" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) "blf" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -15658,18 +14664,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"blm" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Core Hatch" - }, -/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/engine_core) "bln" = ( /obj/structure/sign/safety/cryo{ pixel_x = 3; @@ -15680,12 +14674,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"blo" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "blp" = ( /obj/structure/surface/table/almayer, /obj/item/clipboard, @@ -15868,6 +14856,15 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_lobby) +"bmp" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/belt/utility/full, +/obj/item/clothing/glasses/welding, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "bmr" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -15955,26 +14952,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"bmM" = ( -/obj/structure/machinery/vending/coffee, -/obj/structure/sign/safety/coffee{ - pixel_x = -17; - pixel_y = -8 - }, -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bmN" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "bmO" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -15987,23 +14964,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"bmP" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bmR" = ( -/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "bmW" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -16018,23 +14978,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"bnc" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 9" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bne" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bng" = ( /obj/structure/machinery/vending/cigarette{ density = 0; @@ -16351,55 +15294,9 @@ /obj/structure/barricade/handrail, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_p) -"boH" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"boI" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "boL" = ( /turf/open/floor/almayer, /area/almayer/living/starboard_garden) -"boN" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/engineering_particle_accelerator, -/obj/item/folder/yellow, -/obj/structure/machinery/keycard_auth{ - pixel_x = -8; - pixel_y = 25 - }, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 14; - pixel_y = 26 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"boU" = ( -/obj/structure/platform{ - dir = 4; - layer = 2.7 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "boV" = ( /obj/structure/cargo_container/wy/left, /obj/structure/prop/almayer/minigun_crate{ @@ -16464,17 +15361,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"bph" = ( -/obj/structure/bed/chair/comfy/orange, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "bpj" = ( /obj/structure/dropship_equipment/fulton_system, /turf/open/floor/almayer{ @@ -16623,66 +15509,12 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_umbilical) -"bpX" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/engineering/engineering_workshop) -"bpY" = ( -/obj/structure/surface/table/almayer, -/obj/item/frame/table, -/obj/item/frame/table, -/obj/item/clipboard, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bpZ" = ( -/obj/structure/surface/table/almayer, -/obj/item/cell/crap, -/obj/item/tool/crowbar, -/obj/structure/machinery/cell_charger, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bqa" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bqe" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) -"bqf" = ( -/obj/structure/machinery/autolathe, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "bqm" = ( /obj/structure/closet/boxinggloves, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/gym) -"bqo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"bqw" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bqF" = ( /obj/structure/dropship_equipment/fuel/fuel_enhancer, /turf/open/floor/almayer{ @@ -16732,6 +15564,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) +"bqP" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 5" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "bqR" = ( /turf/open/floor/almayer{ dir = 6; @@ -16764,6 +15604,20 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"bqY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "bqZ" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -16842,18 +15696,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"brw" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"brx" = ( -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "bry" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -16876,15 +15718,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) -"brC" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/atmos_alert{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "brH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -16896,28 +15729,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"brI" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"brJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "brO" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -16966,17 +15777,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"bsc" = ( -/obj/structure/machinery/computer/skills{ - req_one_access_txt = "200" - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) -"bse" = ( -/obj/structure/machinery/computer/arcade, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bsj" = ( /obj/structure/machinery/line_nexter/med{ dir = 4 @@ -17190,14 +15990,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/starboard_hallway) -"bsZ" = ( -/obj/structure/machinery/power/monitor{ - name = "Main Power Grid Monitoring" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "btc" = ( /obj/structure/bed/chair{ dir = 8; @@ -17238,21 +16030,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"btm" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"btn" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/closet/toolcloset, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "btp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -17282,15 +16059,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"btz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "btC" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -17394,18 +16162,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) -"buk" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) "buq" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -17476,14 +16232,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"buK" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/lightreplacer, -/obj/item/device/radio, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "buM" = ( /obj/structure/machinery/cm_vending/clothing/smartgun/bravo, /turf/open/floor/almayer{ @@ -17509,15 +16257,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"buQ" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/working_joe{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "buS" = ( /obj/structure/machinery/cm_vending/gear/engi, /turf/open/floor/almayer{ @@ -17533,36 +16272,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"buW" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bvb" = ( /obj/structure/machinery/light{ dir = 8 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"bvc" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/obj/structure/sign/poster{ - desc = "Koorlander Golds, lovingly machine rolled for YOUR pleasure."; - icon_state = "poster10"; - name = "Koorlander Gold Poster"; - pixel_x = 29; - pixel_y = 6; - serial_number = 10 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bvd" = ( /obj/structure/machinery/constructable_frame, /turf/open/floor/almayer{ @@ -17582,10 +16297,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"bvl" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "bvr" = ( /obj/structure/bed/chair/office/dark, /obj/effect/decal/warning_stripes{ @@ -17623,41 +16334,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/general_equipment) -"bvI" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/extinguisher, -/obj/item/device/lightreplacer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bvK" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bvL" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "bvO" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"bvQ" = ( -/obj/structure/pipes/unary/outlet_injector, -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bvS" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -17672,19 +16354,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) -"bvU" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - name = "\improper Liasion's Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) "bvV" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -17694,6 +16363,14 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_umbilical) +"bvX" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/window, +/turf/open/floor/plating, +/area/almayer/command/corporateliaison) "bwc" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -17761,16 +16438,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"bwj" = ( -/obj/structure/pipes/standard/simple/visible, -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bwl" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -17931,31 +16598,6 @@ icon_state = "redfull" }, /area/almayer/living/cryo_cells) -"bxo" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bxr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) -"bxs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/platform, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bxx" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -18008,45 +16650,12 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) -"bxE" = ( -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/lower_engineering) -"bxF" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"bxG" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 6 - }, -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"bxH" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"bxI" = ( -/obj/structure/pipes/binary/pump/on{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"bxN" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 }, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) "bxX" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -18098,50 +16707,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"byg" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 9 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"byh" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 5 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"byk" = ( -/obj/structure/pipes/valve/digital/open{ - dir = 4 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"byl" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 9 - }, -/obj/structure/machinery/meter, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) "bym" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -18159,19 +16724,6 @@ /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) -"byp" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) -"byq" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "byr" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ @@ -18214,16 +16766,6 @@ icon_state = "silver" }, /area/almayer/living/cryo_cells) -"byz" = ( -/obj/structure/machinery/vending/cigarette, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"byA" = ( -/obj/structure/machinery/alarm/almayer, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "byC" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -18231,12 +16773,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"byD" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "byF" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -18257,62 +16793,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) -"byJ" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"byK" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 5 - }, -/obj/structure/machinery/light, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"byL" = ( -/obj/structure/machinery/meter, -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"byM" = ( -/obj/structure/pipes/standard/simple/hidden/universal{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byN" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byO" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Deck Waste Tank Control" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byQ" = ( -/obj/structure/machinery/suit_storage_unit/carbon_unit, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"byR" = ( -/obj/structure/machinery/suit_storage_unit/carbon_unit, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "bzg" = ( /obj/structure/pipes/vents/pump{ dir = 8; @@ -18322,27 +16802,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) -"bzj" = ( -/obj/structure/machinery/pipedispenser, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "bzo" = ( /obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"bzs" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/structure/machinery/door/window/westright, -/obj/structure/window/reinforced/tinted/frosted, -/obj/item/tool/soap/deluxe, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/corporateliason) "bzy" = ( /turf/closed/wall/almayer, /area/almayer/hallways/vehiclehangar) @@ -18400,15 +16865,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"bzP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) "bzQ" = ( /obj/structure/largecrate/random/case, /turf/open/floor/plating/plating_catwalk, @@ -18427,15 +16883,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) -"bzU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "bzV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -18453,21 +16900,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"bzX" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Core Hatch" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/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/engineering/engine_core) "bzY" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -18496,18 +16928,6 @@ dir = 1 }, /area/almayer/command/lifeboat) -"bAf" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Atmospherics Wing" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/lower_engineering) "bAg" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -18544,10 +16964,6 @@ icon_state = "test_floor4" }, /area/almayer/command/securestorage) -"bAF" = ( -/obj/effect/step_trigger/clone_cleaner, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) "bAH" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -18668,16 +17084,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"bBc" = ( -/obj/structure/closet/firecloset, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bBd" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -18712,67 +17118,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"bBi" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/under/liaison_suit/formal, -/obj/item/clothing/under/liaison_suit, -/obj/item/clothing/under/liaison_suit/outing, -/obj/item/clothing/under/liaison_suit/suspenders, -/obj/item/clothing/under/blackskirt{ - desc = "A stylish skirt, in a business-black and red colour scheme."; - name = "liaison's skirt" - }, -/obj/item/clothing/under/suit_jacket/charcoal{ - desc = "A professional black suit and blue tie. A combination popular among government agents and corporate Yes-Men alike."; - name = "liaison's black suit" - }, -/obj/item/clothing/under/suit_jacket/navy{ - desc = "A navy suit and red tie, intended for the Almayer's finest. And accountants."; - name = "liaison's navy suit" - }, -/obj/item/clothing/under/suit_jacket/trainee, -/obj/item/clothing/under/liaison_suit/charcoal, -/obj/item/clothing/under/liaison_suit/outing/red, -/obj/item/clothing/under/liaison_suit/blazer, -/obj/item/clothing/suit/storage/snow_suit/liaison, -/obj/item/clothing/gloves/black, -/obj/item/clothing/gloves/marine/dress, -/obj/item/clothing/glasses/sunglasses/big, -/obj/item/clothing/accessory/blue, -/obj/item/clothing/accessory/red, -/obj/structure/machinery/status_display{ - pixel_x = -32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bBl" = ( /obj/structure/machinery/light{ dir = 4 }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"bBm" = ( -/turf/open/floor/almayer{ - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) -"bBp" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bBq" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "bBu" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -19035,24 +17386,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull) -"bCI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"bCJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "bCM" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -19080,13 +17413,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"bCR" = ( -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "bCS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -19360,12 +17686,6 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) -"bEj" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bEl" = ( /obj/structure/machinery/computer/supply_drop_console/limited, /turf/closed/wall/almayer, @@ -19377,20 +17697,6 @@ }, /turf/open/floor/plating, /area/almayer/squads/req) -"bEn" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4; - layer = 2.7 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bEo" = ( /obj/structure/bed/sofa/south/grey/right{ pixel_y = 12 @@ -19646,19 +17952,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) -"bEU" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bEV" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bFa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -19671,43 +17964,6 @@ /obj/structure/foamed_metal, /turf/open/floor/plating, /area/almayer/medical/lower_medical_medbay) -"bFc" = ( -/obj/structure/closet/emcloset{ - pixel_x = 8 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bFe" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/obj/item/frame/fire_alarm, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bFf" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/atmospipes, -/obj/item/circuitboard/airalarm, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bFg" = ( -/obj/structure/surface/table/almayer, -/obj/item/frame/fire_alarm, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bFj" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -19792,6 +18048,19 @@ /obj/docking_port/stationary/marine_dropship/almayer_hangar_1, /turf/open/floor/plating, /area/almayer/hallways/hangar) +"bGa" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sign/safety/maint{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/hallways/upper/starboard) "bGb" = ( /turf/closed/wall/almayer, /area/almayer/hallways/port_hallway) @@ -20130,57 +18399,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"bHu" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Engineering Hallway" - }, -/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/lower_engineering) -"bHv" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, -/obj/structure/machinery/cell_charger, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bHy" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/glasses/welding, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"bHz" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bHB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -20523,18 +18741,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/starboard_hallway) -"bJj" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bJk" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bJl" = ( /obj/structure/machinery/door/airlock/almayer/generic{ access_modified = 1; @@ -20593,12 +18799,6 @@ icon_state = "orangecorner" }, /area/almayer/squads/bravo) -"bJF" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) "bJH" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/black{ @@ -20606,38 +18806,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) -"bJI" = ( -/obj/structure/pipes/vents/pump/on, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bJK" = ( -/obj/structure/closet/radiation, -/turf/open/floor/almayer{ - icon_state = "test_floor5" - }, -/area/almayer/engineering/engine_core) -"bJM" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bJN" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "bJO" = ( /obj/structure/machinery/light/small, /obj/structure/sign/safety/nonpress_0g{ @@ -20651,32 +18819,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_umbilical) -"bJP" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bJQ" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"bJR" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bJS" = ( /obj/structure/surface/rack, /obj/item/tool/wrench, @@ -20875,50 +19017,12 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"bKO" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/plating, -/area/almayer/engineering/engineering_workshop) "bKQ" = ( /obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) -"bKT" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bKU" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bKV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bKW" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "bKX" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/masks, @@ -20939,41 +19043,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_p) -"bLc" = ( -/obj/structure/machinery/light, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bLd" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) -"bLe" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bLf" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bLg" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bLh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -21299,15 +19368,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"bMB" = ( -/obj/structure/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) "bMC" = ( /turf/open/floor/almayer{ dir = 9; @@ -21324,15 +19384,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"bMF" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_full" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bMJ" = ( /obj/structure/machinery/light, /obj/structure/machinery/portable_atmospherics/canister/oxygen, @@ -21348,13 +19399,6 @@ /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine, /area/almayer/engineering/airmix) -"bMM" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) -"bMN" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "bMO" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/CICmap, @@ -21369,14 +19413,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/navigation) -"bMQ" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 1" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bMR" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -21420,38 +19456,6 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) -"bMV" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 7" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bMW" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 13" - }, -/obj/structure/sign/safety/rad_haz{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bMX" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bMY" = ( /obj/structure/mirror{ pixel_x = 28 @@ -21730,24 +19734,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) -"bNZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) -"bOc" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bOe" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -21764,68 +19750,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"bOh" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 16" - }, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOi" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bOk" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 2" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOl" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 8" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOm" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 14" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bOn" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Exterior Airlock"; - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_a_s) -"bOo" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "bOq" = ( /obj/structure/prop/almayer/cannon_cables, /turf/open/floor/almayer{ @@ -21997,20 +19921,6 @@ icon_state = "emeraldcorner" }, /area/almayer/squads/charlie) -"bPd" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 3" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bPe" = ( -/obj/structure/machinery/portable_atmospherics/powered/pump, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bPg" = ( /obj/vehicle/powerloader, /obj/structure/machinery/light{ @@ -22203,14 +20113,6 @@ icon_state = "logo_c" }, /area/almayer/living/briefing) -"bPR" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) "bPS" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ @@ -22241,23 +20143,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"bPZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bQa" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) "bQc" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1 @@ -22277,60 +20162,12 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) -"bQe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bQi" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orangecorner" - }, -/area/almayer/engineering/engine_core) -"bQk" = ( -/obj/structure/machinery/power/smes/buildable, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/obj/structure/sign/safety/high_voltage{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "tcomms" - }, -/area/almayer/engineering/engine_core) -"bQm" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bQt" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ icon_state = "red" }, /area/almayer/shipboard/weapon_room) -"bQu" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "bQz" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -22474,41 +20311,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"bRi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bRj" = ( -/obj/structure/ladder{ - height = 1; - id = "engineeringladder" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engineering_workshop) -"bRk" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bRr" = ( -/obj/structure/machinery/fuelcell_recycler, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bRs" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/bridge{ @@ -22522,20 +20324,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"bRu" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop) "bRx" = ( /obj/structure/machinery/door/poddoor/railing{ id = "vehicle_elevator_railing_aux" @@ -22703,34 +20491,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"bSk" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) -"bSl" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"bSm" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "orangefull" - }, -/area/almayer/engineering/engineering_workshop) "bSn" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -22742,31 +20502,9 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"bSt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bSv" = ( /turf/closed/wall/almayer, /area/almayer/living/tankerbunks) -"bSx" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orangecorner" - }, -/area/almayer/engineering/engine_core) -"bSy" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "bSD" = ( /obj/item/reagent_container/glass/bucket{ pixel_x = -4; @@ -22786,12 +20524,15 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) -"bSG" = ( -/obj/structure/machinery/power/smes/buildable, +"bSH" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "tcomms" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "bSJ" = ( /turf/closed/wall/almayer, /area/almayer/squads/delta) @@ -22879,24 +20620,6 @@ }, /turf/open/space, /area/space) -"bTi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bTl" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 4" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bTn" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -22910,12 +20633,6 @@ icon_state = "cargo" }, /area/almayer/living/tankerbunks) -"bTp" = ( -/obj/structure/machinery/portable_atmospherics/powered/scrubber, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "bTq" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "\improper Evacuation Airlock PL-3"; @@ -22953,15 +20670,6 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"bTz" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "bTA" = ( /turf/open/floor/almayer, /area/almayer/squads/delta) @@ -23260,31 +20968,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"bUI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) -"bUJ" = ( -/obj/structure/platform_decoration{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bUL" = ( -/obj/structure/platform_decoration, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bUM" = ( /turf/open/floor/almayer{ dir = 8; @@ -23330,43 +21013,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"bUW" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 5" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bUX" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 11" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bUY" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 17" - }, -/obj/structure/sign/safety/rad_haz{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bUZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "bVb" = ( /turf/open/floor/almayer{ icon_state = "blue" @@ -23424,6 +21070,10 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"bVv" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "bVw" = ( /turf/open/floor/almayer{ dir = 4; @@ -23478,6 +21128,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"bVN" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "bVR" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -23594,40 +21250,6 @@ icon_state = "test_floor4" }, /area/almayer/living/chapel) -"bWs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"bWw" = ( -/obj/structure/pipes/vents/pump{ - dir = 8; - id_tag = "mining_outpost_pump" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"bWC" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hallways/aft_hallway) -"bWE" = ( -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "bWJ" = ( /obj/structure/machinery/shower{ dir = 4 @@ -23647,9 +21269,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"bWM" = ( -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "bWP" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -23662,16 +21281,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"bWS" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/bucket/mopbucket, -/obj/item/reagent_container/glass/bucket/mopbucket{ - pixel_y = 10 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "bWT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -23697,19 +21306,6 @@ icon_state = "orange" }, /area/almayer/hallways/port_hallway) -"bWZ" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop) "bXe" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) @@ -23721,42 +21317,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"bXl" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bXm" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bXn" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "bXo" = ( /obj/structure/ladder{ height = 1; @@ -23770,41 +21330,12 @@ icon_state = "plate" }, /area/almayer/shipboard/navigation) -"bXr" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 6" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "bXs" = ( /obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"bXt" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 12" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bXu" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 18" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) -"bXv" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bXw" = ( /obj/structure/machinery/bioprinter{ stored_metal = 125 @@ -23817,12 +21348,6 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"bXE" = ( -/obj/structure/machinery/door_control/cl/office/door{ - pixel_y = 25 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bXH" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -23832,80 +21357,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"bXP" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/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/engineering/engine_core) -"bXQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bXR" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" - }, -/obj/structure/platform{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) -"bXS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) -"bXU" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bXV" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) "bXX" = ( /obj/structure/machinery/light{ dir = 8 @@ -23973,9 +21424,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"bYj" = ( -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bYn" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/upper_engineering/port) @@ -24011,18 +21459,6 @@ /obj/structure/disposalpipe/junction, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) -"bYy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "bYz" = ( /obj/structure/sign/safety/south{ pixel_x = 32; @@ -24047,87 +21483,13 @@ icon_state = "orangecorner" }, /area/almayer/hallways/port_hallway) -"bYI" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bYK" = ( -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"bYM" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) -"bYO" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bYP" = ( +"bYF" = ( /obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"bYQ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"bYS" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) -"bYU" = ( -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) -"bYV" = ( -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"bYW" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/engineering/engine_core) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "bYY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -24218,50 +21580,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"bZA" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Engineering Hallway" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/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/engineering/lower_engineering) -"bZD" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) -"bZE" = ( -/obj/structure/pipes/binary/pump/on{ - dir = 4 - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "bZH" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -24459,42 +21777,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_umbilical) -"cay" = ( -/obj/structure/closet/emcloset{ - pixel_x = 8 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"caz" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/book/manual/engineering_guide, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"caA" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/fire, -/obj/item/device/lightreplacer, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"caB" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight, -/obj/item/storage/firstaid/rad, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "caC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -24528,15 +21810,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_p) -"caF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "caM" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -24701,51 +21974,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"cbG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) -"cbH" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "cbM" = ( /obj/structure/closet/crate, /obj/item/clothing/glasses/welding, /obj/item/circuitboard, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north1) -"cbN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"cbO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cbQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -24843,31 +22077,34 @@ icon_state = "red" }, /area/almayer/living/cryo_cells) -"ccd" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" +"ccc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/area/almayer/living/cryo_cells) -"cce" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Atmospherics Wing" +/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"; + closeOtherId = "containment_n" + }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/engineering/lower_engineering) -"ccf" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, +/area/almayer/medical/containment) +"ccd" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, /turf/open/floor/almayer{ - icon_state = "redfull" + dir = 5; + icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/living/cryo_cells) "ccg" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -24942,95 +22179,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"ccx" = ( -/obj/structure/surface/table/almayer, -/obj/structure/largecrate/random/case/small{ - pixel_y = 5 - }, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; - pixel_y = -2 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccy" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/machinery/suit_storage_unit/carbon_unit, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccA" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccB" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Oxygen Supply Console" - }, -/obj/structure/pipes/standard/simple/hidden/universal{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccC" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Nitrogen Control Console" - }, -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccD" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 10 - }, -/obj/structure/machinery/meter, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"ccE" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/general_air_control/large_tank_control{ - name = "Lower Mixed Air Control" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "ccG" = ( /obj/structure/largecrate/random/secure, /obj/effect/decal/warning_stripes{ @@ -25065,32 +22213,6 @@ /obj/effect/landmark/late_join, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) -"ccR" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 6 - }, -/obj/structure/machinery/meter, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccS" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccT" = ( -/obj/structure/pipes/trinary/mixer{ - dir = 4; - name = "Gas mixer N2/O2" - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "ccU" = ( /obj/structure/pipes/vents/pump{ dir = 8; @@ -25098,38 +22220,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) -"ccV" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 10 - }, -/obj/structure/machinery/meter, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccW" = ( -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccX" = ( -/obj/structure/pipes/binary/pump/high_power/on{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) -"ccY" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cdb" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -25196,24 +22286,6 @@ }, /turf/open/floor/plating, /area/almayer/living/cryo_cells) -"cdr" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) -"cdu" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cdw" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, @@ -25350,27 +22422,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"ceo" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/obj/structure/closet/cabinet, -/obj/item/clipboard, -/obj/item/storage/lockbox/loyalty, -/obj/item/storage/briefcase, -/obj/item/reagent_container/spray/pepper, -/obj/item/device/eftpos{ - eftpos_name = "Weyland-Yutani EFTPOS scanner" - }, -/obj/item/device/portable_vendor/corporate, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"cer" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/lower_engineering) "ces" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -25657,12 +22708,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_umbilical) -"cgI" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cgJ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -25689,6 +22734,24 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"chb" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "chf" = ( /obj/structure/window/reinforced{ dir = 4; @@ -26103,6 +23166,11 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) +"cjt" = ( +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "cjw" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/light{ @@ -26343,6 +23411,10 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) +"ckW" = ( +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, +/area/almayer/engineering/lower) "ckX" = ( /turf/open/floor/almayer{ dir = 1; @@ -26772,9 +23844,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"cmp" = ( -/turf/closed/wall/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "cmq" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor/plating/plating_catwalk, @@ -26844,7 +23913,8 @@ access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + closeOtherId = "astroladder_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -26856,7 +23926,8 @@ access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + closeOtherId = "astroladder_s" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -26873,6 +23944,17 @@ /obj/docking_port/stationary/escape_pod/west, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_m_p) +"cna" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "cnd" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -26883,6 +23965,20 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"cnn" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "cno" = ( /obj/structure/stairs, /obj/effect/projector{ @@ -27156,6 +24252,15 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"coH" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "coJ" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 10 @@ -27359,17 +24464,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"csp" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - access_modified = 1; - req_access_txt = "200"; - req_one_access = null - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/backdoor, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) "csz" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -27460,6 +24554,10 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cryo) +"cuq" = ( +/obj/structure/machinery/computer/arcade, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "cus" = ( /obj/docking_port/stationary/lifeboat_dock/starboard, /turf/open/floor/almayer_hull{ @@ -27481,6 +24579,18 @@ "cuC" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/upper_engineering/starboard) +"cuN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "cuY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27501,12 +24611,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"cvj" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "cvH" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -27528,18 +24632,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"cwd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/machinery/status_display{ - pixel_x = -32 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "cwo" = ( /obj/structure/largecrate/random/mini/chest{ pixel_x = 4 @@ -27595,13 +24687,6 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) -"cxe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "cxk" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -27624,6 +24709,14 @@ icon_state = "green" }, /area/almayer/squads/req) +"cyy" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "cyE" = ( /obj/structure/platform_decoration{ dir = 8 @@ -27897,12 +24990,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"cDj" = ( -/obj/structure/machinery/portable_atmospherics/canister/air, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "cDn" = ( /obj/structure/surface/table/almayer, /obj/item/ashtray/glass{ @@ -28000,15 +25087,6 @@ icon_state = "plating" }, /area/almayer/command/cic) -"cEx" = ( -/obj/structure/machinery/vending/cola, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "cEC" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28094,11 +25172,25 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"cGe" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "cGr" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hallways/aft_hallway) +"cGI" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "cGV" = ( /turf/open/floor/almayer{ icon_state = "cargo_arrow" @@ -28147,14 +25239,12 @@ icon_state = "blue" }, /area/almayer/command/cichallway) -"cHO" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"cHG" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "cHP" = ( /obj/structure/machinery/light/small, /obj/effect/decal/warning_stripes{ @@ -28206,23 +25296,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) -"cII" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/airlock{ - pixel_x = -17; - pixel_y = 7 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = -17; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "cIU" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -28361,19 +25434,18 @@ icon_state = "cargo_arrow" }, /area/almayer/command/airoom) -"cLp" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"cLq" = ( +/obj/structure/machinery/light/small{ + dir = 8 }, /obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 + icon_state = "W" }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "plating" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/shipboard/stern_point_defense) "cLA" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -28424,6 +25496,10 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) +"cMz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "cMN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -28495,6 +25571,20 @@ icon_state = "plate" }, /area/almayer/command/combat_correspondent) +"cNM" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "cNX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28544,6 +25634,18 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"cPK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/stairs{ + pixel_x = -15 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "cQc" = ( /turf/open/floor/almayer{ dir = 1; @@ -28597,6 +25699,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"cQW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "cRb" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28639,6 +25751,19 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"cRL" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/starboard) +"cSa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "cSk" = ( /obj/structure/machinery/door/window/southleft, /turf/open/floor/almayer{ @@ -28677,20 +25802,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"cSN" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "cSQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28724,16 +25835,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"cUb" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "cUv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -28748,6 +25849,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north2) +"cVq" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "cVs" = ( /obj/structure/platform_decoration{ dir = 8 @@ -28828,12 +25935,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"cWt" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "cWv" = ( /turf/open/floor/almayer{ dir = 8; @@ -28952,6 +26053,14 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"cYN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "cYT" = ( /obj/structure/machinery/light{ dir = 8 @@ -28998,14 +26107,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"cZJ" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - name = "\improper Core Hatch" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "cZV" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/fancy/cigarettes/wypacket, @@ -29041,12 +26142,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"cZZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "dac" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -29064,6 +26159,19 @@ "daz" = ( /turf/closed/wall/almayer/white/hull, /area/almayer/command/airoom) +"dbc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "dbe" = ( /obj/structure/largecrate/random/case/double, /obj/structure/machinery/camera/autoname/almayer{ @@ -29183,34 +26291,37 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) -"ddj" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +"ddf" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "ddk" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ icon_state = "redfull" }, /area/almayer/living/briefing) +"ddw" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "ddz" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/weapon_room) -"ddK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/cleanable/blood/oil/streak, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) +"ddM" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop/hangar) "deg" = ( /obj/structure/platform_decoration{ dir = 1 @@ -29373,21 +26484,19 @@ icon_state = "plating_striped" }, /area/almayer/shipboard/brig/execution) -"dhQ" = ( -/obj/structure/sign/safety/terminal{ - pixel_x = -17 +"dho" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 }, -/obj/structure/surface/table/almayer, -/obj/item/clipboard{ - pixel_x = -4 +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, -/obj/item/device/taperecorder{ - pixel_x = 3; - pixel_y = 3 +/turf/open/floor/almayer{ + icon_state = "red" }, -/obj/item/device/camera, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) +/area/almayer/hallways/upper/starboard) "dhR" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -29429,21 +26538,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) -"diF" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_y = -32 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 14; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "diJ" = ( /obj/structure/window/reinforced{ dir = 8; @@ -29462,56 +26556,13 @@ dir = 1 }, /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Brig Lobby" + name = "\improper Brig Lobby"; + closeOtherId = "brignorth" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/lobby) -"djp" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/plastic{ - amount = 5 - }, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/plasteel{ - amount = 30; - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) -"djL" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_10" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"djM" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/reagentgrinder/industrial{ - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "djQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -29819,13 +26870,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/delta) -"dpV" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "dqb" = ( /obj/structure/sign/safety/security{ pixel_x = -16 @@ -29998,7 +27042,8 @@ }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ id_tag = "cic_exterior"; - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_s" }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -30115,13 +27160,6 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) -"dvF" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/wooden_tv/ot{ - pixel_y = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "dwl" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -30196,18 +27234,14 @@ icon_state = "red" }, /area/almayer/command/lifeboat) -"dxL" = ( -/obj/structure/sign/safety/fire_haz{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/structure/reagent_dispensers/ethanoltank{ - anchored = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" +"dxT" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/safety/rewire{ + pixel_x = 32 }, -/area/almayer/engineering/engineering_workshop/hangar) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "dya" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ dir = 2; @@ -30285,6 +27319,9 @@ icon_state = "orange" }, /area/almayer/engineering/ce_room) +"dzp" = ( +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "dzF" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 8; @@ -30514,15 +27551,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) -"dCS" = ( -/obj/structure/sign/safety/rad_shield{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "dDp" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -30568,6 +27596,19 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"dDM" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "dEm" = ( /obj/structure/machinery/power/apc/almayer, /obj/effect/decal/warning_stripes{ @@ -30713,16 +27754,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"dGw" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "dGz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30776,18 +27807,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) -"dHr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "dHu" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -30851,6 +27870,15 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"dIH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/engineering/lower/workshop) "dII" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/shared/alpha_bravo, /obj/effect/decal/warning_stripes{ @@ -30891,6 +27919,14 @@ icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_f_s) +"dKc" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 9" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "dKm" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -30923,6 +27959,16 @@ dir = 4 }, /area/almayer/medical/containment/cell/cl) +"dKK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "dKL" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/airmix) @@ -30943,6 +27989,14 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"dLi" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 4" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "dLt" = ( /obj/structure/sign/safety/hazard{ pixel_x = -17; @@ -31021,10 +28075,6 @@ }, /turf/open/floor/plating, /area/almayer/living/cryo_cells) -"dNx" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) "dNB" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ @@ -31050,6 +28100,18 @@ icon_state = "redfull" }, /area/almayer/command/cic) +"dOe" = ( +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/reagent_dispensers/ethanoltank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "dOl" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/fancy/cigar, @@ -31074,6 +28136,23 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/lifeboat) +"dPH" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"dPQ" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/pen, +/obj/item/paper_bin/uscm, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "dPT" = ( /obj/structure/machinery/brig_cell/cell_2{ pixel_x = 32; @@ -31142,6 +28221,15 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) +"dQA" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) "dQE" = ( /obj/structure/machinery/light{ dir = 1 @@ -31216,6 +28304,17 @@ icon_state = "red" }, /area/almayer/hallways/starboard_hallway) +"dRP" = ( +/obj/structure/bed/chair/comfy/orange, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "dRT" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -31239,19 +28338,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"dSs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/hazard{ - pixel_x = -17; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "dSA" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/plating/plating_catwalk, @@ -31278,23 +28364,19 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) -"dTc" = ( -/obj/structure/sign/poster{ - desc = "One of those hot, tanned babes back the beaches of good ol' Earth."; - icon_state = "poster12"; - name = "Beach Babe Pinup"; - pixel_x = -30; - pixel_y = 6; - serial_number = 12 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, +"dTn" = ( /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "red" }, -/area/almayer/command/corporateliason) +/area/almayer/hallways/upper/starboard) +"dTr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) "dTt" = ( /obj/structure/surface/table/almayer, /obj/item/device/camera, @@ -31319,6 +28401,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"dTS" = ( +/obj/structure/machinery/fuelcell_recycler, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "dTZ" = ( /turf/open/floor/almayer{ icon_state = "sterile_green_side" @@ -31385,6 +28473,20 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_f_p) +"dVn" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "dVs" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -31411,12 +28513,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"dVZ" = ( -/obj/structure/machinery/pipedispenser, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "dWg" = ( /obj/effect/landmark/start/cargo, /obj/structure/machinery/light, @@ -31480,6 +28576,15 @@ icon_state = "plate" }, /area/almayer/squads/req) +"dXI" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Exterior Airlock"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/stern_point_defense) "dXO" = ( /obj/structure/sign/safety/maint{ pixel_x = -19; @@ -31522,6 +28627,17 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) +"dYC" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/obj/item/frame/fire_alarm, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "dYK" = ( /obj/item/folder/red{ desc = "A red folder. The previous contents are a mystery, though the number 28 has been written on the inside of each flap numerous times. Smells faintly of cough syrup."; @@ -31575,6 +28691,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"dZu" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "eaf" = ( /obj/structure/machinery/cm_vending/clothing/military_police{ density = 0; @@ -31643,6 +28765,18 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"ebt" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "ebv" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -31668,14 +28802,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"ebJ" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "ebN" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/command/airoom) @@ -31708,13 +28834,6 @@ "ecr" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/captain_mess) -"ect" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "ecM" = ( /obj/structure/bed/chair{ dir = 4 @@ -31725,28 +28844,6 @@ /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"ecQ" = ( -/obj/structure/machinery/door_display/research_cell{ - dir = 4; - id = "Containment Cell 4"; - name = "Control Panel"; - pixel_x = -15; - req_access_txt = "200" - }, -/obj/item/storage/fancy/cigarettes/blackpack{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/structure/surface/table/woodentable/fancy, -/obj/item/storage/fancy/cigarettes/wypacket{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/tool/lighter/zippo/gold{ - pixel_x = 2 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "ecR" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -31769,6 +28866,20 @@ icon_state = "plate" }, /area/almayer/shipboard/navigation) +"edn" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/structure/sign/poster{ + desc = "Koorlander Golds, lovingly machine rolled for YOUR pleasure."; + icon_state = "poster10"; + name = "Koorlander Gold Poster"; + pixel_x = 29; + pixel_y = 6; + serial_number = 10 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "edo" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -31854,6 +28965,21 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"efj" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) +"efC" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/obj/structure/machinery/suit_storage_unit/carbon_unit, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "efK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31943,6 +29069,19 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"ehc" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "ehi" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -31970,6 +29109,24 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"ehL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "ehR" = ( /obj/structure/window/reinforced{ dir = 4; @@ -32165,6 +29322,16 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"elv" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/port) +"elx" = ( +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "elA" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -32243,15 +29410,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"emO" = ( -/obj/structure/machinery/door/airlock/almayer/generic/corporate{ - dir = 1; - name = "Corporate Liaison's Bedroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) "ene" = ( /turf/open/floor/almayer{ dir = 4; @@ -32266,6 +29424,14 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"eni" = ( +/obj/structure/machinery/power/monitor{ + name = "Main Power Grid Monitoring" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "enx" = ( /obj/structure/pipes/vents/pump, /obj/structure/machinery/status_display{ @@ -32295,19 +29461,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) -"eoT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "epu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -32329,6 +29482,15 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"epJ" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "eqb" = ( /obj/structure/surface/table/almayer, /obj/item/tool/stamp/denied{ @@ -32391,6 +29553,14 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"eqL" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "eqN" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/synthcloset) @@ -32438,6 +29608,21 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"ern" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) +"erF" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/toxin{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/book/manual/engineering_guide, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "erG" = ( /obj/structure/disposalpipe/junction{ dir = 2; @@ -32625,6 +29810,15 @@ icon_state = "logo_c" }, /area/almayer/command/cic) +"euW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/engineering_materials, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "eva" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 @@ -32857,6 +30051,12 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"eAI" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/engine_core) "eAL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -32864,6 +30064,9 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"eAN" = ( +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "eAT" = ( /obj/structure/machinery/door_control/cl/office/door{ pixel_y = -20 @@ -32976,25 +30179,30 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"eCG" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_10" +"eCt" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/plasteel{ + amount = 30; + pixel_x = 4; + pixel_y = 4 }, -/obj/structure/closet/secure_closet/cmdcabinet{ - desc = "A bulletproof cabinet containing communications equipment."; - name = "communications cabinet"; - pixel_y = 24; - req_access = null; - req_one_access_txt = "207;203" +/obj/item/stack/sheet/metal{ + amount = 50 }, -/obj/item/device/radio, -/obj/item/device/radio/listening_bug/radio_linked/wy, -/obj/item/device/radio/listening_bug/radio_linked/wy{ - pixel_x = 4; - pixel_y = -3 +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/obj/item/stack/sheet/mineral/uranium{ + amount = 5 + }, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "eCI" = ( /obj/structure/window/reinforced/ultra{ pixel_y = -12 @@ -33189,6 +30397,26 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"eFY" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/ashtray/bronze{ + pixel_x = 2; + pixel_y = 9 + }, +/obj/structure/machinery/door_control/cl/office/window{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/structure/machinery/door_control/cl/office/door{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/item/spacecash/c500{ + pixel_x = -10; + pixel_y = 8 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "eGb" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_2" @@ -33241,12 +30469,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/surgery) -"eGs" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - icon_state = "cargo_arrow" - }, -/area/almayer/engineering/engineering_workshop/hangar) "eGz" = ( /obj/structure/sign/safety/storage{ pixel_x = -17 @@ -33292,12 +30514,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) -"eHj" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) "eHx" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/faxmachine/uscm/command, @@ -33319,6 +30535,30 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"eIT" = ( +/obj/structure/surface/table/almayer, +/obj/item/book/manual/engineering_particle_accelerator, +/obj/item/folder/yellow, +/obj/structure/machinery/keycard_auth{ + pixel_x = -8; + pixel_y = 25 + }, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 14; + pixel_y = 26 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "eJd" = ( /obj/structure/platform_decoration{ dir = 4 @@ -33360,7 +30600,8 @@ "eKa" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ dir = 2; - name = "\improper Brig Lobby" + name = "\improper Brig Lobby"; + closeOtherId = "briglobby" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -33374,6 +30615,17 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"eKy" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 6 + }, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "eKD" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/almayer{ @@ -33410,22 +30662,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"eKK" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/command/corporateliason) "eKM" = ( /obj/structure/surface/rack, /obj/effect/decal/cleanable/dirt, @@ -33442,6 +30678,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) +"eKQ" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "eKT" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/black, @@ -33499,6 +30741,17 @@ /obj/structure/largecrate/random, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) +"eNw" = ( +/obj/structure/machinery/atm{ + name = "Weyland-Yutani Automatic Teller Machine"; + pixel_y = 30 + }, +/obj/structure/surface/table/almayer, +/obj/item/spacecash/c1000/counterfeit, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/fancy/cigar, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "eNx" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/almayer{ @@ -33552,6 +30805,16 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"eON" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "ePk" = ( /obj/structure/airlock_assembly, /turf/open/floor/plating, @@ -33572,31 +30835,47 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"ePY" = ( -/obj/structure/pipes/vents/pump{ - dir = 8; - id_tag = "mining_outpost_pump" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) -"eQi" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = 32 +"ePM" = ( +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = 32 }, /obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 + icon_state = "SE-out"; + pixel_x = 1 }, /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; + pixel_x = 1; pixel_y = 1 }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) +"ePN" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/plastic{ + amount = 5 + }, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/plasteel{ + amount = 30; + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "cargo" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/lower/workshop/hangar) "eRe" = ( /obj/structure/bed/chair/comfy/orange{ dir = 8 @@ -33659,6 +30938,28 @@ icon_state = "plate" }, /area/almayer/living/starboard_garden) +"eRS" = ( +/turf/open/floor/almayer{ + icon_state = "cargo_arrow" + }, +/area/almayer/engineering/lower/workshop/hangar) +"eSk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/airlock{ + pixel_x = -17; + pixel_y = 7 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "eSo" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -33740,16 +31041,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"eUR" = ( -/obj/structure/bed/chair/comfy/orange, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "eUZ" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -33785,6 +31076,14 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) +"eVE" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/lightreplacer, +/obj/item/device/radio, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "eVQ" = ( /obj/structure/machinery/light{ dir = 4 @@ -33900,6 +31199,10 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"eYn" = ( +/obj/structure/filingcabinet/security, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "eYr" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -33939,6 +31242,17 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"eYD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "eYF" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -33982,10 +31296,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering/port) -"eYW" = ( -/obj/structure/filingcabinet/security, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "eZi" = ( /obj/effect/projector{ name = "Almayer_Up4"; @@ -34009,6 +31319,20 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"eZp" = ( +/obj/structure/platform{ + dir = 4; + layer = 2.7 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "eZz" = ( /obj/structure/sign/safety/water{ pixel_x = 8; @@ -34116,6 +31440,16 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"fbu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/platform, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "fbw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34138,6 +31472,28 @@ icon_state = "dark_sterile" }, /area/almayer/medical/upper_medical) +"fbH" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"fbR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "fcf" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -34177,12 +31533,6 @@ /obj/structure/largecrate/random/case, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"fcI" = ( -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) "fcM" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" @@ -34200,6 +31550,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"fcS" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "fcX" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/light{ @@ -34220,6 +31576,15 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) +"fdx" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "fdA" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -34363,13 +31728,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"fgF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "fgR" = ( /obj/structure/machinery/door/poddoor/almayer/open{ id = "Brig Lockdown Shutters"; @@ -34413,20 +31771,42 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) +"fie" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "fiq" = ( /turf/closed/wall/almayer, /area/almayer/hull/lower_hull/l_m_p) -"fir" = ( +"fiE" = ( +/obj/structure/machinery/computer/cameras/containment/hidden{ + dir = 4; + pixel_x = -17 + }, /obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver, -/obj/item/tool/weldingtool, -/obj/item/tool/wrench, -/obj/item/tool/wirecutters, +/obj/item/storage/photo_album, +/obj/item/device/camera_film, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) +"fiI" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/hull/lower_hull/stern) +"fiQ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "fjO" = ( /obj/item/tool/wet_sign, /obj/effect/decal/cleanable/blood, @@ -34553,6 +31933,12 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"fnH" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "fnI" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -34567,6 +31953,18 @@ icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_a_s) +"foC" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/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/engineering/lower/engine_core) "foL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34614,12 +32012,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) -"fps" = ( -/obj/structure/machinery/chem_master/industry_mixer, +"fpA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/light{ + dir = 8 + }, /turf/open/floor/almayer{ - icon_state = "orange" + dir = 5; + icon_state = "red" }, -/area/almayer/engineering/engineering_workshop/hangar) +/area/almayer/hallways/upper/port) "fpO" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -34673,6 +32077,12 @@ icon_state = "silver" }, /area/almayer/hull/upper_hull/u_m_p) +"fqC" = ( +/obj/structure/machinery/vending/cigarette, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "fqO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -34680,6 +32090,12 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) +"fqW" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "fqZ" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -34796,6 +32212,13 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"fsR" = ( +/obj/structure/pipes/vents/pump{ + dir = 8; + id_tag = "mining_outpost_pump" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "fsU" = ( /obj/structure/machinery/floodlight/landing{ name = "bolted floodlight" @@ -34985,12 +32408,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie_delta_shared) -"fxu" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8 - }, -/turf/closed/wall/almayer, -/area/almayer/engineering/lower_engineering) "fxz" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -35034,15 +32451,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"fxW" = ( -/obj/structure/platform_decoration{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "fxZ" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -35064,6 +32472,14 @@ icon_state = "plate" }, /area/almayer/shipboard/weapon_room) +"fyd" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 1" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "fyp" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -35131,13 +32547,6 @@ icon_state = "red" }, /area/almayer/living/offices/flight) -"fAo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/light, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "fAr" = ( /obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, /turf/open/floor/plating/plating_catwalk, @@ -35154,16 +32563,6 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/main_office) -"fAN" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "fAS" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -35171,6 +32570,19 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"fBd" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "fBf" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -35294,17 +32706,12 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"fEg" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 15" - }, -/obj/structure/machinery/light{ - dir = 8 - }, +"fEe" = ( +/obj/structure/machinery/pipedispenser, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "fEk" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -35472,16 +32879,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"fHC" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "fHF" = ( /turf/open/floor/almayer{ icon_state = "greenfull" @@ -35500,12 +32897,6 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"fIx" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "fIH" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -35610,10 +33001,11 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) -"fKg" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +"fKh" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/window, +/turf/open/floor/plating, +/area/almayer/command/corporateliaison) "fKi" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -35708,23 +33100,35 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"fLu" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Oxygen Supply Console" + }, +/obj/structure/pipes/standard/simple/hidden/universal{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"fLv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "fLF" = ( /obj/structure/machinery/brig_cell/perma_2{ pixel_x = -32 }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) -"fLX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "fMe" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp{ @@ -35919,6 +33323,16 @@ /obj/structure/largecrate/random, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"fQn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "fQu" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "CMO Shutters"; @@ -35939,6 +33353,16 @@ /obj/effect/step_trigger/clone_cleaner, /turf/closed/wall/almayer, /area/almayer/hull/upper_hull/u_m_p) +"fQS" = ( +/obj/structure/bed/chair/comfy/orange, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "fQY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/largecrate/supply/weapons/m39{ @@ -36000,6 +33424,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"fSF" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight, +/obj/item/storage/firstaid/rad, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "fSK" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -36014,6 +33447,17 @@ icon_state = "red" }, /area/almayer/hull/upper_hull/u_a_p) +"fTj" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "fTm" = ( /obj/structure/bed/chair/office/dark, /turf/open/floor/almayer, @@ -36089,6 +33533,13 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"fVo" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "fVz" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -36101,6 +33552,15 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"fVF" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "fVG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -36121,19 +33581,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"fWT" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop) "fXd" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -36196,6 +33643,13 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"fXZ" = ( +/obj/docking_port/stationary/emergency_response/port3, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "fYb" = ( /turf/open/floor/almayer{ dir = 8; @@ -36221,18 +33675,37 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"fYG" = ( +"fYN" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, /turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" + icon_state = "plate" }, -/area/almayer/engineering/engine_core) +/area/almayer/hull/lower_hull/stern) "fYZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"fZl" = ( +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) +"fZo" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "fZq" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -36253,6 +33726,19 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) +"fZA" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 9 + }, +/obj/structure/machinery/meter, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) "fZF" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ @@ -36401,12 +33887,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"gbQ" = ( -/obj/structure/toilet{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/corporateliason) "gcc" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -36416,19 +33896,29 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"gcK" = ( -/obj/structure/machinery/light/small{ - dir = 1 +"gcm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 +/area/almayer/hallways/upper/port) +"gcq" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_s) +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "gcN" = ( /obj/structure/machinery/door/airlock/almayer/command{ access_modified = 1; @@ -36488,6 +33978,12 @@ icon_state = "silvercorner" }, /area/almayer/hallways/repair_bay) +"gdJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "gdS" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -36565,6 +34061,12 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"gfs" = ( +/obj/effect/landmark/yautja_teleport, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "gfu" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -36582,6 +34084,23 @@ /obj/structure/machinery/recharge_station, /turf/open/floor/plating, /area/almayer/command/airoom) +"gfG" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"gfN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "gfS" = ( /obj/structure/sign/safety/cryo{ pixel_y = -26 @@ -36646,6 +34165,14 @@ /obj/effect/landmark/start/liaison, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"ghX" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 14" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "gio" = ( /obj/structure/closet/emcloset, /obj/structure/sign/safety/restrictedarea{ @@ -36667,9 +34194,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"gir" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/engineering/engineering_workshop) "giB" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -36841,6 +34365,19 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"glH" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop) "glM" = ( /obj/structure/window/reinforced{ dir = 8; @@ -36888,19 +34425,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"gnz" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/airlock{ - pixel_x = 32; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "gob" = ( /obj/structure/closet/fireaxecabinet{ pixel_y = 32 @@ -37030,15 +34554,19 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) -"grX" = ( -/obj/structure/machinery/light/small{ - dir = 4 +"gsd" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/hand_labeler{ + pixel_x = 7 + }, +/obj/item/storage/firstaid/fire{ + pixel_x = -6 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 1; + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/engineering/lower/workshop/hangar) "gsg" = ( /obj/structure/pipes/vents/pump, /obj/structure/mirror{ @@ -37064,6 +34592,16 @@ icon_state = "dark_sterile" }, /area/almayer/living/port_emb) +"gsi" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "gsm" = ( /obj/structure/machinery/status_display{ pixel_x = -32 @@ -37072,6 +34610,13 @@ /obj/effect/landmark/late_join, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) +"gsC" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "gsH" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; @@ -37089,6 +34634,12 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_p) +"gsM" = ( +/obj/structure/machinery/portable_atmospherics/powered/pump, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "gsZ" = ( /obj/structure/desertdam/decals/road_edge{ pixel_x = 2; @@ -37146,16 +34697,15 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"guC" = ( -/obj/item/paper_bin/wy, -/obj/structure/surface/table/woodentable/fancy, -/obj/item/tool/pen/clicky, -/obj/item/tool/pen/clicky, -/obj/structure/machinery/status_display{ - pixel_x = -32 +"guo" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/lifeboat_pumps/south2) "guS" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -37316,12 +34866,6 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"gwW" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "gwY" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; @@ -37360,6 +34904,12 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_p) +"gxn" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "gxr" = ( /obj/structure/largecrate/random/barrel/green, /obj/structure/sign/safety/maint{ @@ -37484,17 +35034,9 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"gzr" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, -/obj/structure/platform, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) +"gzq" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "gzw" = ( /obj/structure/closet/hydrant{ pixel_x = 30 @@ -37555,6 +35097,11 @@ icon_state = "emeraldfull" }, /area/almayer/living/briefing) +"gAk" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "gAl" = ( /obj/structure/machinery/light{ dir = 8 @@ -37608,11 +35155,12 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"gBt" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/window, -/turf/open/floor/plating, -/area/almayer/command/corporateliason) +"gBM" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "gBW" = ( /obj/structure/machinery/floodlight/landing{ name = "bolted floodlight" @@ -37669,6 +35217,13 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"gDp" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "gDt" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/crew/alt{ @@ -37685,6 +35240,12 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"gDH" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) "gDP" = ( /obj/structure/closet/crate, /obj/item/ammo_box/magazine/l42a, @@ -37726,16 +35287,12 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"gEK" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +"gEC" = ( +/obj/structure/machinery/suit_storage_unit/carbon_unit, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower) "gFa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37765,6 +35322,9 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) +"gFP" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/shipboard/stern_point_defense) "gFR" = ( /obj/structure/machinery/light, /obj/structure/machinery/cm_vending/gear/commanding_officer, @@ -37861,6 +35421,13 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"gHh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "gHj" = ( /obj/structure/machinery/light, /obj/structure/closet/secure_closet/fridge/groceries/stock, @@ -37868,6 +35435,12 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"gHl" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "gHo" = ( /obj/structure/machinery/door/airlock/almayer/marine/delta/tl, /turf/open/floor/almayer{ @@ -37944,22 +35517,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_p) -"gJq" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/mousetraps, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" +"gJO" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door/window/southleft{ + desc = "A window, that is also a door. A windoor if you will. This one is stronger."; + health = 500; + name = "Reinforced Glass door"; + req_one_access_txt = "2;35" }, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "gJP" = ( /obj/structure/machinery/light, /obj/structure/disposalpipe/segment{ @@ -37969,6 +35536,16 @@ icon_state = "green" }, /area/almayer/living/offices) +"gKd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "gKB" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/firealarm{ @@ -38052,6 +35629,10 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) +"gLD" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "gLE" = ( /obj/structure/platform{ dir = 1 @@ -38068,6 +35649,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"gLG" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "gLN" = ( /obj/structure/machinery/light, /obj/structure/flora/pottedplant{ @@ -38100,6 +35690,15 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"gMd" = ( +/obj/structure/surface/table/almayer, +/obj/item/clipboard, +/obj/item/tool/lighter, +/obj/item/device/flashlight/lamp, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "gMx" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating/plating_catwalk, @@ -38155,13 +35754,6 @@ dir = 4 }, /area/almayer/living/briefing) -"gNd" = ( -/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "gNp" = ( /turf/open/floor/almayer{ dir = 9; @@ -38187,6 +35779,28 @@ /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"gNG" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"gNO" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "gOs" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -38214,6 +35828,20 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"gOC" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"gOR" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "gPc" = ( /obj/structure/machinery/power/terminal{ dir = 1 @@ -38247,32 +35875,14 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"gQl" = ( +"gQk" = ( /obj/structure/surface/table/almayer, -/obj/item/reagent_container/glass/bucket{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = -6; - pixel_y = 8 - }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/reagent_container/glass/bucket{ - pixel_x = 6; - pixel_y = -2 - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "orange" +/obj/structure/sign/safety/terminal{ + pixel_x = -17 }, -/area/almayer/engineering/engineering_workshop/hangar) +/obj/structure/machinery/faxmachine/corporate/liaison, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "gQF" = ( /obj/structure/bed/chair/comfy{ buckling_y = 2; @@ -38308,6 +35918,17 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"gSa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "gSj" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -38384,14 +36005,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) -"gUI" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/pen, -/obj/item/paper_bin/uscm, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "gUL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38417,6 +36030,18 @@ icon_state = "cargo_arrow" }, /area/almayer/command/airoom) +"gUS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "gUV" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -38465,6 +36090,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"gWu" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "gWE" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/marine/spec/alpha, @@ -38502,19 +36132,6 @@ icon_state = "mono" }, /area/almayer/medical/upper_medical) -"gXq" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "gXs" = ( /obj/effect/step_trigger/ares_alert/terminals, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -38529,15 +36146,6 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"gXv" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "gXx" = ( /obj/structure/bed/chair{ dir = 8 @@ -38556,15 +36164,9 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"gXY" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) +"gXZ" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/hull/lower_hull/stern) "gYe" = ( /obj/structure/machinery/vending/sea, /turf/open/floor/almayer{ @@ -38693,6 +36295,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) +"haz" = ( +/obj/structure/machinery/floodlight, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "haB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -38706,22 +36314,18 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"haI" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 3 +"haD" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/door_control/cl/office/evac{ - pixel_x = -5; - pixel_y = 4 +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 }, -/obj/structure/machinery/door_control/cl/office/divider{ - pixel_x = -5; - pixel_y = -3 +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower) "haM" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/constructable_frame, @@ -38748,6 +36352,14 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"hbs" = ( +/obj/structure/surface/table/almayer, +/obj/item/frame/fire_alarm, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "hbu" = ( /obj/structure/bed/chair{ dir = 1 @@ -38767,19 +36379,6 @@ icon_state = "redfull" }, /area/almayer/medical/upper_medical) -"hbZ" = ( -/obj/structure/surface/table/almayer, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/obj/structure/machinery/computer/working_joe{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "hcf" = ( /obj/item/bedsheet/brown{ layer = 3.2 @@ -38835,12 +36434,6 @@ icon_state = "plate" }, /area/almayer/living/cryo_cells) -"hcC" = ( -/obj/structure/disposalpipe/up/almayer{ - id = "almayerlink_OT_req" - }, -/turf/closed/wall/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "hcI" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -38868,15 +36461,6 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"hdg" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "hdh" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -38936,12 +36520,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"heg" = ( -/obj/structure/machinery/floodlight, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engine_core) "heo" = ( /obj/structure/machinery/power/apc/almayer{ cell_type = /obj/item/cell/hyper; @@ -38972,6 +36550,12 @@ icon_state = "test_floor4" }, /area/almayer/living/port_emb) +"heS" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "heV" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -38998,6 +36582,16 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) +"hfb" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) "hfk" = ( /obj/item/trash/crushed_cup, /turf/open/floor/almayer{ @@ -39008,15 +36602,6 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) -"hfO" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/spray/cleaner, -/obj/item/frame/light_fixture, -/obj/item/frame/light_fixture, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "hfQ" = ( /obj/structure/window/framed/almayer, /turf/open/floor/almayer{ @@ -39047,12 +36632,15 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"hgt" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 4 +"hgo" = ( +/obj/structure/machinery/light{ + dir = 8 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "hgB" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/intel, @@ -39061,6 +36649,21 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) +"hgD" = ( +/obj/structure/reagent_dispensers/fueltank/gas/hydrogen{ + anchored = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "hgH" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -39078,6 +36681,17 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"hgV" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 15" + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "hgZ" = ( /obj/structure/machinery/door_control{ dir = 1; @@ -39135,6 +36749,14 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"hip" = ( +/obj/item/device/multitool, +/obj/structure/platform_decoration, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "hit" = ( /obj/structure/surface/table/almayer, /obj/item/storage/bag/trash{ @@ -39153,12 +36775,6 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/north1) -"hiB" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "hiM" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -39327,12 +36943,35 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"hlH" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "hlI" = ( /obj/structure/girder, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"hlT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "hlU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -39383,6 +37022,30 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/hydroponics) +"hmj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) +"hmw" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "hmy" = ( /obj/structure/machinery/light{ dir = 1 @@ -39527,6 +37190,11 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) +"hqc" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "hqh" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -39548,6 +37216,21 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_f_s) +"hqJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/obj/structure/sign/poster{ + desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; + icon_state = "poster14"; + name = "propaganda poster"; + pixel_y = 32 + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "hqU" = ( /obj/structure/bed/chair{ dir = 8; @@ -39623,15 +37306,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/main_office) -"hrX" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "hsg" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -39659,6 +37333,9 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"hsy" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/engineering/lower/engine_core) "hsW" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -39703,6 +37380,15 @@ icon_state = "greenfull" }, /area/almayer/living/offices) +"htP" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "huK" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -39781,6 +37467,16 @@ /obj/effect/landmark/start/professor, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices) +"hwd" = ( +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "hwC" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -39803,20 +37499,6 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/almayer, /area/almayer/command/cic) -"hxp" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "hxG" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -39939,7 +37621,8 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ - name = "\improper Combat Information Center" + name = "\improper Combat Information Center"; + closeOtherId = "ciclobby_s" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -39995,6 +37678,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"hAY" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "hAZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -40153,6 +37844,12 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"hEl" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "hEt" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/glass/bucket/mopbucket{ @@ -40171,29 +37868,15 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"hED" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/pen/blue/clicky{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/tool/pen/red/clicky{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/tool/pen/clicky{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/paper_bin/wy{ - pixel_x = -5; - pixel_y = 5 +"hEw" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 10 }, -/obj/structure/machinery/light{ - dir = 8 +/obj/structure/machinery/meter, +/turf/open/floor/almayer{ + icon_state = "orange" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower) "hEV" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -40233,6 +37916,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"hGG" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "hGN" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -40259,12 +37949,31 @@ icon_state = "silver" }, /area/almayer/living/briefing) +"hGV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "hGZ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) +"hHe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "hHl" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/storage/pouch/general/large, @@ -40294,21 +38003,6 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) -"hHM" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; - name = "\improper Weyland-Yutani Office" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/door, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) "hHR" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -40328,6 +38022,16 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"hIs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/command/corporateliaison) "hII" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -40348,6 +38052,15 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"hJg" = ( +/obj/structure/pipes/trinary/mixer{ + dir = 4; + name = "Gas mixer N2/O2" + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "hJk" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -40377,12 +38090,31 @@ }, /turf/closed/wall/almayer, /area/almayer/hull/lower_hull/l_f_s) +"hJI" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "hJJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"hJN" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/airlock{ + pixel_x = 32; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "hKe" = ( /obj/structure/sign/poster/safety, /turf/closed/wall/almayer, @@ -40416,11 +38148,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"hKQ" = ( -/turf/open/floor/almayer{ - icon_state = "cargo_arrow" - }, -/area/almayer/engineering/engineering_workshop/hangar) "hLB" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -40487,16 +38214,6 @@ icon_state = "red" }, /area/almayer/living/cryo_cells) -"hLO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "hLS" = ( /obj/structure/machinery/door/airlock/almayer/marine/delta{ dir = 1 @@ -40526,6 +38243,10 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"hMG" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "hMI" = ( /obj/structure/surface/table/almayer, /obj/item/device/binoculars, @@ -40569,6 +38290,14 @@ /obj/item/tool/shovel/etool/folded, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"hNP" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Core Hatch" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "hNY" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -40578,19 +38307,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) -"hOe" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/airlock{ - pixel_x = 32; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "hOR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -40675,6 +38391,19 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"hQw" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) +"hQP" = ( +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "hQU" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -40720,6 +38449,21 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"hRc" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) "hRd" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/almayer{ @@ -40732,6 +38476,15 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_p) +"hRk" = ( +/obj/structure/machinery/cm_vending/clothing/senior_officer{ + density = 0; + pixel_y = 30 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/numbertwobunks) "hRW" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -40855,17 +38608,6 @@ /obj/structure/machinery/light, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"hTy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "hTF" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm{ isopen = 1; @@ -40921,6 +38663,12 @@ /obj/effect/landmark/yautja_teleport, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"hUk" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "hUz" = ( /obj/structure/largecrate/supply/supplies/mre{ desc = "A supply crate containing everything you need to stop a CLF uprising."; @@ -41042,6 +38790,12 @@ icon_state = "blue" }, /area/almayer/command/cichallway) +"hWS" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "hWU" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -41113,6 +38867,17 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"hXX" = ( +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 + }, +/turf/open/floor/almayer{ + allow_construction = 0; + icon_state = "plate" + }, +/area/almayer/hallways/upper/port) "hXY" = ( /turf/open/floor/almayer{ dir = 4; @@ -41153,12 +38918,19 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"hYN" = ( -/obj/structure/machinery/door_control/cl/quarter/officedoor{ - pixel_x = 25 +"hZe" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/obj/structure/machinery/disposal/delivery{ + density = 0; + desc = "A pneumatic delivery unit. Sends items to the requisitions."; + icon_state = "delivery_engi"; + name = "Requisitions Delivery Unit"; + pixel_y = 28 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "hZj" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -41168,6 +38940,15 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"hZE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "hZJ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -41229,12 +39010,6 @@ icon_state = "plate" }, /area/almayer/command/cichallway) -"iaj" = ( -/obj/structure/bed/chair/comfy/orange{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "ial" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -41452,22 +39227,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"igp" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/flashlight/lamp{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/clothing/glasses/monocle, -/obj/item/reagent_container/food/drinks/coffee{ - pixel_x = -7; - pixel_y = -2 - }, -/obj/item/weapon/pole/fancy_cane{ - pixel_x = 5 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "igr" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -41546,7 +39305,8 @@ }, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ dir = 1; - name = "\improper Brig Prison Yard And Offices" + name = "\improper Brig Prison Yard And Offices"; + closeOtherId = "brigcells" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -41573,25 +39333,6 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) -"iiz" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/reagent_container/food/drinks/bottle/sake, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = -4 - }, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) "iiC" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -41621,28 +39362,15 @@ icon_state = "red" }, /area/almayer/hull/upper_hull/u_a_p) -"ijn" = ( -/obj/structure/surface/rack, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/farwacube{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/neaeracube{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/stokcube{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/reagent_container/food/snacks/monkeycube/wrapped/yirencube{ - pixel_x = 4; - pixel_y = -4 - }, +"ijf" = ( +/obj/structure/surface/table/almayer, +/obj/item/cell/crap, +/obj/item/tool/crowbar, +/obj/structure/machinery/cell_charger, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower/workshop) "ijp" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical, @@ -41682,16 +39410,26 @@ /obj/item/tool/wet_sign, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_s) -"ikE" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 +"iks" = ( +/obj/structure/pipes/binary/pump/high_power/on{ + dir = 1 }, -/obj/structure/machinery/door_control/cl/quarter/windows{ - pixel_x = 11; - pixel_y = 37 +/turf/open/floor/almayer{ + icon_state = "orange" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower) +"ikv" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "ikQ" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/tool/stamp/hop{ @@ -41713,23 +39451,16 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"ilq" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "ils" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/hull/upper_hull/u_f_p) -"ilv" = ( -/obj/structure/surface/table/almayer, -/obj/item/folder/black_random{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/tool/stamp{ - name = "Corporate Liaison's stamp"; - pixel_x = -8; - pixel_y = 6 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "ily" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -41852,6 +39583,28 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) +"ioH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"ioP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/hazard{ + pixel_x = -17; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "ioU" = ( /turf/closed/wall/almayer, /area/almayer/command/securestorage) @@ -42023,6 +39776,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"ish" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "isC" = ( /obj/effect/projector{ name = "Almayer_AresDown"; @@ -42095,6 +39854,18 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"ito" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "itR" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -42120,6 +39891,11 @@ /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"iup" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "iur" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -42155,6 +39931,10 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) +"iuA" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "iuE" = ( /obj/structure/machinery/vending/coffee, /obj/structure/machinery/light{ @@ -42165,6 +39945,11 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"iuG" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "ivf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/camera, @@ -42205,6 +39990,19 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"ivS" = ( +/obj/structure/machinery/suit_storage_unit/carbon_unit, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"iwf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "iwh" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -42337,6 +40135,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"iyF" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 9 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "iyH" = ( /obj/structure/surface/table/reinforced/almayer_B{ climbable = 0; @@ -42438,6 +40245,14 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"iAE" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "iAT" = ( /obj/structure/sign/safety/south{ pixel_x = -17; @@ -42485,19 +40300,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"iCe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/status_display{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "iCu" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -42596,6 +40398,20 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_p) +"iEw" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "iEx" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_y = 26 @@ -42713,26 +40529,6 @@ "iHc" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/notunnel) -"iHC" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/ashtray/bronze{ - pixel_x = 2; - pixel_y = 9 - }, -/obj/structure/machinery/door_control/cl/office/window{ - pixel_x = 6; - pixel_y = 4 - }, -/obj/structure/machinery/door_control/cl/office/door{ - pixel_x = 6; - pixel_y = -3 - }, -/obj/item/spacecash/c500{ - pixel_x = -10; - pixel_y = 8 - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "iHF" = ( /obj/structure/largecrate/random, /obj/item/reagent_container/food/snacks/cheesecakeslice{ @@ -42755,6 +40551,17 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cells) +"iIj" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "iIl" = ( /obj/structure/sink{ dir = 8; @@ -43326,6 +41133,14 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) +"iUm" = ( +/obj/structure/closet/emcloset{ + pixel_x = 8 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "iUo" = ( /obj/structure/sign/safety/terminal{ pixel_x = 7; @@ -43462,6 +41277,12 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"iXA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "iXT" = ( /obj/item/trash/uscm_mre, /turf/open/floor/almayer, @@ -43579,6 +41400,19 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"iZE" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "iZH" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -43607,6 +41441,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"iZV" = ( +/obj/structure/machinery/door_control/cl/quarter/officedoor{ + pixel_x = 25 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "iZX" = ( /obj/structure/surface/rack, /obj/item/clothing/glasses/meson, @@ -43668,6 +41508,12 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) +"jaM" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "jaR" = ( /obj/structure/largecrate/random/mini/small_case/b{ pixel_x = 8; @@ -43716,15 +41562,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"jbB" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "jbH" = ( /obj/structure/machinery/light{ dir = 8 @@ -43795,12 +41632,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/shipboard/brig/processing) -"jcK" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "jcP" = ( /turf/open/floor/almayer{ icon_state = "plating_striped" @@ -43826,19 +41657,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"jdy" = ( -/obj/structure/sign/safety/autoopenclose{ - pixel_x = 7; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) -"jdF" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "jdG" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -43954,18 +41772,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"jfM" = ( -/obj/structure/machinery/power/monitor{ - name = "Core Power Monitoring" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "jfY" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/map_item, @@ -44351,6 +42157,18 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"jkB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "jkD" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm{ @@ -44373,6 +42191,12 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"jlc" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "jlA" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -44485,12 +42309,6 @@ icon_state = "blue" }, /area/almayer/command/cichallway) -"jnf" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "jnk" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -44521,6 +42339,12 @@ icon_state = "silvercorner" }, /area/almayer/shipboard/brig/cic_hallway) +"jnI" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "jnX" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -44553,6 +42377,22 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"jpn" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 + }, +/turf/open/floor/plating/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/port) "jpp" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ name = "\improper Medical Bay"; @@ -44608,6 +42448,9 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) +"jqT" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "jqY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -44705,6 +42548,12 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/port_emb) +"juF" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "juX" = ( /obj/structure/platform_decoration{ dir = 1 @@ -44762,6 +42611,16 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"jvM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "jvP" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -44849,12 +42708,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"jyi" = ( -/obj/structure/machinery/power/port_gen/pacman, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "jyE" = ( /obj/structure/machinery/light, /turf/open/floor/wood/ship, @@ -44891,6 +42744,13 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"jAe" = ( +/obj/structure/surface/rack, +/obj/item/storage/beer_pack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "jAi" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/hallways/vehiclehangar) @@ -44967,6 +42827,17 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"jCn" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/tool/weldingtool, +/obj/item/tool/wrench, +/obj/item/tool/wirecutters, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "jCK" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -44977,6 +42848,40 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"jDk" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/transmitter{ + dir = 8; + name = "OT Telephone"; + phone_category = "Almayer"; + phone_id = "Ordnance Tech"; + pixel_x = 14 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) +"jDO" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/light, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"jDP" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + dir = 1; + name = "\improper Spare Bomb Suit"; + req_one_access = null; + req_one_access_txt = "35" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "jDV" = ( /obj/effect/projector{ name = "Almayer_AresDown"; @@ -45057,6 +42962,32 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_f_s) +"jFx" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/reagent_container/glass/bucket{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "jFE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -45187,6 +43118,15 @@ /obj/structure/machinery/faxmachine/uscm/brig/chief, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"jIV" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "jJe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -45401,6 +43341,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"jMy" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/extinguisher, +/obj/item/device/lightreplacer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "jMG" = ( /obj/structure/largecrate/random/case/small, /obj/structure/largecrate/random/mini/wooden{ @@ -45420,6 +43368,10 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"jML" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "jMQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -45494,6 +43446,14 @@ "jNT" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/execution) +"jOc" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null; + pixel_y = 17; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/living/numbertwobunks) "jOi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -45553,6 +43513,19 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"jOD" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"jOE" = ( +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "jOG" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/firealarm{ @@ -45564,6 +43537,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) +"jPd" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "jPf" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -45593,6 +43576,15 @@ dir = 8 }, /area/almayer/medical/containment/cell) +"jRc" = ( +/obj/structure/machinery/cm_vending/sorted/tech/tool_storage, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "jRz" = ( /obj/effect/step_trigger/teleporter/random{ affect_ghosts = 1; @@ -45696,17 +43688,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"jSY" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "jTi" = ( /obj/item/reagent_container/glass/bucket/janibucket{ pixel_x = -1; @@ -45729,6 +43710,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_p) +"jTB" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) "jTI" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -45753,16 +43740,14 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"jUn" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/door/window/southleft{ - desc = "A window, that is also a door. A windoor if you will. This one is stronger."; - health = 500; - name = "Reinforced Glass door"; - req_one_access_txt = "2;35" +"jUl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "jUq" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -45774,18 +43759,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"jUs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "jUx" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -45796,6 +43769,14 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"jUF" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "jUG" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -45823,19 +43804,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/medical_science) -"jUW" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/sign/safety/stairs{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "jUY" = ( /turf/open/floor/almayer{ icon_state = "silver" @@ -45844,6 +43812,15 @@ "jVa" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"jVg" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "jVr" = ( /obj/structure/machinery/cm_vending/clothing/marine/alpha{ density = 0; @@ -45878,6 +43855,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/execution) +"jWb" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "jWh" = ( /turf/closed/wall/almayer, /area/almayer/engineering/upper_engineering/port) @@ -45995,16 +43981,6 @@ icon_state = "mono" }, /area/almayer/hallways/vehiclehangar) -"jYA" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_18"; - pixel_y = 7 - }, -/obj/structure/machinery/door_control/cl/quarter/officedoor{ - pixel_x = -25 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "jYR" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -46065,6 +44041,18 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"jZC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "jZO" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -46083,6 +44071,17 @@ icon_state = "redfull" }, /area/almayer/medical/upper_medical) +"kag" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 16" + }, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "kaj" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -46185,6 +44184,21 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) +"kbv" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) +"kbw" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "kbx" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -46275,6 +44289,18 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) +"kdn" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + layer = 2.5; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "kdt" = ( /obj/structure/machinery/door_control{ id = "OuterShutter"; @@ -46321,6 +44347,23 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) +"kfo" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) "kfv" = ( /obj/structure/surface/table/almayer, /obj/item/stack/nanopaste{ @@ -46341,6 +44384,14 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"kfI" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "kfP" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -46426,6 +44477,19 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) +"khf" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap"; + layer = 3.5 + }, +/obj/structure/platform{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "khD" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -46488,13 +44552,23 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"kiF" = ( -/obj/effect/decal/cleanable/blood/oil, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" +"kiG" = ( +/obj/structure/machinery/power/smes/buildable, +/obj/structure/machinery/status_display{ + pixel_y = 30 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/obj/structure/sign/safety/high_voltage{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) "kiM" = ( /obj/structure/surface/table/reinforced/almayer_B, /turf/open/floor/almayer{ @@ -46546,6 +44620,37 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) +"kjD" = ( +/obj/structure/machinery/computer/demo_sim{ + dir = 4; + pixel_x = -17; + pixel_y = 8 + }, +/obj/structure/machinery/computer/working_joe{ + dir = 4; + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"kjO" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/engine_core) +"kkk" = ( +/obj/structure/machinery/power/monitor{ + name = "Core Power Monitoring" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "kkt" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/marine_law, @@ -46581,16 +44686,15 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"kkO" = ( -/obj/structure/stairs/perspective{ - dir = 8; - icon_state = "p_stair_full" - }, +"kkW" = ( +/obj/structure/surface/table/almayer, +/obj/item/book/manual/atmospipes, +/obj/item/circuitboard/airalarm, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "klH" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -46640,26 +44744,6 @@ /obj/item/tool/mop, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_p) -"kmL" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/firstaid/regular{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = -7 - }, -/obj/item/reagent_container/spray/cleaner{ - pixel_x = -10; - pixel_y = 14 - }, -/obj/item/storage/xeno_tag_case/full{ - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) "kmM" = ( /obj/structure/sink{ pixel_y = 24 @@ -46746,19 +44830,19 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"koT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "kpc" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/almayer/command/airoom) +"kph" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "kpo" = ( /obj/structure/machinery/floodlight/landing{ name = "bolted floodlight" @@ -46779,18 +44863,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"kpX" = ( -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12 - }, -/obj/structure/prop/invuln/overhead_pipe{ - pixel_x = 12; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "kpY" = ( /obj/structure/surface/table/almayer, /obj/item/clothing/head/hardhat{ @@ -46810,30 +44882,6 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"kqc" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/glasses/welding, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) -"kqf" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) "kqt" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -47020,15 +45068,6 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_m_s) -"ktO" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "ktP" = ( /obj/structure/curtain/red, /turf/open/floor/almayer{ @@ -47078,6 +45117,21 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"kvf" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop) "kvh" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/station_alert{ @@ -47087,14 +45141,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"kvz" = ( -/obj/structure/machinery/power/terminal{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "tcomms" - }, -/area/almayer/engineering/engine_core) "kvU" = ( /obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk, @@ -47199,6 +45245,25 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) +"kyh" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/pipes/vents/scrubber{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"kyr" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "kyN" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/safety/distribution_pipes{ @@ -47269,6 +45334,14 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"kzC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/engineering/lower/workshop) "kzK" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -47303,6 +45376,15 @@ icon_state = "plate" }, /area/almayer/living/port_emb) +"kzO" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "kzP" = ( /turf/open/floor/almayer{ dir = 9; @@ -47345,16 +45427,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"kAt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/command/corporateliason) "kAL" = ( /obj/structure/closet/secure_closet/brig, /turf/open/floor/almayer{ @@ -47603,26 +45675,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"kFq" = ( -/obj/structure/surface/table/almayer, -/obj/item/book/manual/engineering_construction, -/obj/item/folder/black_random, -/obj/structure/sign/safety/high_rad{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "kFs" = ( /obj/structure/machinery/light{ dir = 4 @@ -47711,12 +45763,6 @@ icon_state = "containment_corner_variant_2" }, /area/almayer/medical/containment/cell) -"kGX" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) "kHa" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/surgery) @@ -47797,16 +45843,18 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"kJC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" +"kJn" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 17" }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/obj/structure/sign/safety/rad_haz{ + pixel_x = 8; + pixel_y = 32 }, -/turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "kJG" = ( /obj/item/toy/deck{ pixel_y = 12 @@ -47819,6 +45867,19 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"kJH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/freezer/industry, +/obj/item/reagent_container/glass/beaker/silver, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "kJL" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_2" @@ -47950,6 +46011,18 @@ icon_state = "greencorner" }, /area/almayer/squads/req) +"kMp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "kMq" = ( /obj/structure/sign/poster{ desc = "It says DRUG."; @@ -48084,24 +46157,18 @@ icon_state = "bluefull" }, /area/almayer/living/pilotbunks) -"kOG" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 2 +"kOH" = ( +/obj/structure/machinery/light{ + dir = 8 }, /obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 + icon_state = "E"; + pixel_x = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "dark_sterile" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/command/corporateliaison) "kPx" = ( /obj/structure/surface/table/almayer, /obj/item/device/mass_spectrometer, @@ -48231,6 +46298,23 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"kRD" = ( +/obj/item/reagent_container/glass/bucket/janibucket, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/item/reagent_container/glass/bucket/janibucket{ + pixel_y = 11 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "kRP" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/item/prop/magazine/dirty/torn, @@ -48417,6 +46501,13 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"kVV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "kVX" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -48529,6 +46620,19 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"kXm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/press_area_ag{ + pixel_x = -17; + pixel_y = -7 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "kXu" = ( /turf/open/floor/almayer{ dir = 8; @@ -48550,13 +46654,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"kXK" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "kXN" = ( /obj/item/clothing/glasses/sunglasses/aviator{ pixel_x = -1; @@ -48600,6 +46697,18 @@ icon_state = "plate" }, /area/almayer/living/port_emb) +"kYL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "kYP" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -48670,25 +46779,19 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"lab" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/glass/bucket/janibucket, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "lah" = ( /turf/open/floor/almayer{ dir = 6; icon_state = "emerald" }, /area/almayer/living/gym) -"laj" = ( -/obj/structure/platform{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "lau" = ( /obj/structure/sign/safety/autoopenclose{ pixel_x = 7; @@ -48696,6 +46799,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"laM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "laO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48833,6 +46948,9 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"ldc" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/engineering/lower/workshop) "ldl" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -48934,6 +47052,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"lft" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/fire, +/obj/item/device/lightreplacer, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "lfH" = ( /obj/structure/machinery/light{ dir = 4 @@ -48943,16 +47069,22 @@ icon_state = "blue" }, /area/almayer/living/basketball) -"lfQ" = ( +"lgt" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, /obj/effect/decal/warning_stripes{ icon_state = "N"; - pixel_y = 1 + pixel_y = 2 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "dark_sterile" }, -/area/almayer/engineering/engine_core) +/area/almayer/command/corporateliaison) "lgy" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -48986,13 +47118,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"lgK" = ( -/obj/structure/machinery/cm_vending/clothing/senior_officer{ - density = 0; - pixel_y = 30 - }, -/turf/open/floor/almayer, -/area/almayer/living/numbertwobunks) "lgX" = ( /obj/structure/sign/safety/storage{ pixel_y = 32 @@ -49073,6 +47198,10 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"lhW" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "lhX" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -49262,6 +47391,12 @@ icon_state = "plate" }, /area/almayer/squads/charlie) +"lkV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "lkW" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/belt/medical/lifesaver/full, @@ -49274,6 +47409,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"llK" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "llM" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -49311,6 +47455,14 @@ "lmz" = ( /turf/closed/wall/almayer/white/hull, /area/space) +"lmA" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/numbertwobunks) "lmK" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/securestorage) @@ -49436,6 +47588,13 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"loz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "loK" = ( /obj/structure/closet/crate/medical, /obj/item/storage/firstaid/adv, @@ -49598,14 +47757,6 @@ "lrq" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/armory) -"lrs" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "lrF" = ( /obj/structure/machinery/light, /obj/structure/surface/table/almayer, @@ -49816,6 +47967,25 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) +"lvb" = ( +/obj/structure/machinery/door_control/cl/office/door{ + pixel_y = 25 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"lvh" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 10 + }, +/obj/structure/machinery/meter, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "lvA" = ( /turf/open/floor/almayer{ dir = 1; @@ -49850,6 +48020,15 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"lwp" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/machinery/cm_vending/sorted/tech/circuits, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "lwC" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -50016,18 +48195,6 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) -"lzW" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/stairs{ - pixel_x = -15 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "lzY" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 @@ -50092,24 +48259,18 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"lAU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "lBg" = ( /obj/structure/bedsheetbin, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"lBi" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "lBv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -50144,18 +48305,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_p) -"lBY" = ( -/obj/structure/closet{ - name = "backpack storage" - }, -/obj/item/storage/backpack/marine/grenadepack, -/obj/item/storage/backpack/marine/grenadepack, -/obj/item/storage/backpack/marine/mortarpack, -/obj/item/storage/backpack/marine/mortarpack, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "lCp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -50173,20 +48322,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/containment) -"lCz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = -28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "lCE" = ( /obj/structure/bed/chair/comfy/delta, /obj/effect/decal/cleanable/dirt, @@ -50194,15 +48329,16 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"lCS" = ( +"lCL" = ( /obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 10; + icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/hallways/upper/port) "lDg" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "laddernorthwest"; @@ -50315,10 +48451,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"lEW" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "lFb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -50343,14 +48475,6 @@ icon_state = "blue" }, /area/almayer/living/port_emb) -"lFj" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/window, -/turf/open/floor/plating, -/area/almayer/command/corporateliason) "lFm" = ( /turf/open/floor/almayer{ dir = 8; @@ -50366,6 +48490,9 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/morgue) +"lFp" = ( +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop/hangar) "lFt" = ( /obj/structure/machinery/portable_atmospherics/powered/pump, /obj/structure/sign/safety/maint{ @@ -50405,7 +48532,8 @@ /area/almayer/hull/lower_hull/l_m_p) "lFJ" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Brig Prisoner Yard" + name = "\improper Brig Prisoner Yard"; + closeOtherId = "brigcells" }, /obj/structure/disposalpipe/segment{ dir = 8 @@ -50431,6 +48559,13 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) +"lGg" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "lGh" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/sign/safety/maint{ @@ -50576,12 +48711,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_f_p) -"lJa" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) "lJg" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ @@ -50695,6 +48824,17 @@ icon_state = "red" }, /area/almayer/hallways/stern_hallway) +"lKM" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"lKO" = ( +/obj/structure/sign/safety/refridgeration{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "lLC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer, @@ -50712,6 +48852,12 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"lMb" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "lMc" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -50745,15 +48891,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) -"lMM" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/hallways/aft_hallway) "lMY" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -50799,18 +48936,11 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) -"lOl" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/command/corporateliason) +"lNR" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/plating, +/area/almayer/engineering/lower/workshop) "lOr" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -50851,6 +48981,26 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) +"lOX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"lPm" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "lPB" = ( /obj/structure/surface/table/almayer, /obj/item/device/lightreplacer, @@ -50883,6 +49033,18 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"lQa" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "lQj" = ( /obj/structure/machinery/door_control{ id = "InnerShutter"; @@ -51047,7 +49209,8 @@ /area/almayer/hull/upper_hull/u_f_p) "lUm" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Brig Cells" + name = "\improper Brig Cells"; + closeOtherId = "briglobby" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -51249,17 +49412,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/hydroponics) -"maq" = ( -/obj/structure/sign/safety/cryo{ - pixel_x = 7; - pixel_y = -26 - }, -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "maw" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/almayer/maint{ @@ -51285,6 +49437,16 @@ icon_state = "plate" }, /area/almayer/living/gym) +"maO" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "maT" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -51297,11 +49459,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/upper_medical) -"mbn" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +"mbx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "mce" = ( /turf/open/floor/almayer{ icon_state = "greencorner" @@ -51443,6 +49609,13 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"mgd" = ( +/obj/structure/machinery/autolathe/armylathe/full, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "mgj" = ( /obj/structure/reagent_dispensers/water_cooler/stacks{ density = 0; @@ -51453,6 +49626,21 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"mgu" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + name = "\improper Engineering Hallway" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/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/engineering/lower) "mgy" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, @@ -51636,13 +49824,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"mkh" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "mki" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -51662,6 +49843,17 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"mkn" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "OTStore"; + name = "\improper Secure Storage"; + unacidable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop/hangar) "mko" = ( /obj/item/tool/weldpack{ pixel_y = 15 @@ -51695,6 +49887,39 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"mkI" = ( +/obj/structure/machinery/pipedispenser, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) +"mkL" = ( +/obj/structure/pipes/valve/digital/open{ + dir = 4 + }, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"mkP" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop) "mlb" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -51733,12 +49958,29 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"mlF" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "mlH" = ( /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"mlP" = ( +/obj/structure/machinery/door/airlock/almayer/generic/corporate{ + dir = 1; + name = "Corporate Liaison's Bedroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) "mmC" = ( /obj/structure/closet/secure_closet/engineering_welding{ req_one_access_txt = "7;23;27" @@ -51887,6 +50129,12 @@ icon_state = "redfull" }, /area/almayer/living/briefing) +"mpP" = ( +/obj/structure/machinery/door/airlock/almayer/maint, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) "mqb" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -52118,6 +50366,15 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"mtZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "mub" = ( /obj/structure/barricade/handrail{ dir = 4 @@ -52152,6 +50409,14 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"muQ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "muV" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/faxmachine/uscm/command/capt{ @@ -52290,6 +50555,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_p) +"mxT" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "myl" = ( /obj/structure/machinery/power/apc/almayer/hardened{ cell_type = /obj/item/cell/hyper; @@ -52410,6 +50682,17 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/hydroponics) +"mzs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "mzz" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -52418,15 +50701,6 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) -"mzO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orangecorner" - }, -/area/almayer/engineering/engine_core) "mzR" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -52434,6 +50708,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"mzS" = ( +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/north2) "mzV" = ( /turf/open/floor/almayer{ dir = 1; @@ -52445,6 +50725,20 @@ /obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"mAF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "mAV" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -52501,7 +50795,8 @@ access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + closeOtherId = "astroladder_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -52579,6 +50874,22 @@ "mDJ" = ( /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/starboard) +"mDL" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/mousetraps, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "mDT" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -52692,6 +51003,19 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"mFP" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "mGe" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, @@ -52707,6 +51031,21 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"mGT" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/obj/structure/closet/cabinet, +/obj/item/clipboard, +/obj/item/storage/lockbox/loyalty, +/obj/item/storage/briefcase, +/obj/item/reagent_container/spray/pepper, +/obj/item/device/eftpos{ + eftpos_name = "Weyland-Yutani EFTPOS scanner" + }, +/obj/item/device/portable_vendor/corporate, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "mHb" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -52945,6 +51284,18 @@ /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"mKi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "mKq" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/living/bridgebunks) @@ -53013,20 +51364,6 @@ icon_state = "plate" }, /area/almayer/living/port_emb) -"mKX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "mKY" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -53035,6 +51372,19 @@ /obj/structure/pipes/standard/manifold/fourway/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"mLe" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/structure/machinery/door_control/cl/quarter/backdoor{ + pixel_x = 25 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "mLu" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -53200,15 +51550,6 @@ "mOi" = ( /turf/closed/wall/almayer/outer, /area/almayer/command/airoom) -"mOr" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/tool/lighter, -/obj/item/device/flashlight/lamp, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "mOL" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -53280,6 +51621,15 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"mQn" = ( +/obj/structure/sign/safety/rad_shield{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "mQC" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/port_atmos) @@ -53570,16 +51920,16 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) -"mUZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +"mVr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +/area/almayer/engineering/lower/engine_core) "mVE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -53672,12 +52022,6 @@ "mXj" = ( /turf/closed/wall/almayer, /area/almayer/living/commandbunks) -"mXU" = ( -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "mYs" = ( /obj/structure/machinery/light{ dir = 4 @@ -53763,6 +52107,16 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) +"mZL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "mZM" = ( /obj/structure/machinery/light{ dir = 8 @@ -53783,6 +52137,16 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/general_equipment) +"nac" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "naf" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -53801,6 +52165,16 @@ }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"naw" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + id = "OTStore"; + name = "\improper Secure Storage"; + unacidable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop/hangar) "naB" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/perma) @@ -53843,6 +52217,14 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) +"nbv" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 3" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "ncf" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -53880,6 +52262,22 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"ncG" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) +"ncT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "ndx" = ( /obj/structure/sign/safety/nonpress_ag{ pixel_x = 15; @@ -53943,14 +52341,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"nel" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/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{ @@ -53997,6 +52387,15 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"neT" = ( +/obj/structure/transmitter/rotary{ + name = "CL Office Telephone"; + phone_category = "Almayer"; + phone_id = "CL Office" + }, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "nff" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -54110,6 +52509,14 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"ngE" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "ngI" = ( /turf/open/floor/almayer{ dir = 8; @@ -54123,6 +52530,28 @@ /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/starboard) +"ngV" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/farwacube{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/neaeracube{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/stokcube{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/reagent_container/food/snacks/monkeycube/wrapped/yirencube{ + pixel_x = 4; + pixel_y = -4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "nhi" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -54136,6 +52565,16 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"nhr" = ( +/obj/structure/ladder{ + height = 1; + id = "engineeringladder" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/workshop) "nhx" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/toy/deck{ @@ -54272,6 +52711,17 @@ icon_state = "red" }, /area/almayer/squads/alpha) +"njk" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "njy" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -54352,6 +52802,20 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/processing) +"nkH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "nkX" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/almayer_network{ @@ -54389,16 +52853,15 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"nmb" = ( +"nme" = ( /obj/effect/decal/warning_stripes{ - icon_state = "S" + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = 32 +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) +/area/almayer/hallways/upper/port) "nmh" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -54446,6 +52909,9 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"nmY" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/engineering/lower/workshop/hangar) "nnc" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -54500,6 +52966,12 @@ /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"nnL" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/corporateliaison) "nnX" = ( /obj/structure/machinery/sentry_holder/almayer, /turf/open/floor/almayer{ @@ -54516,6 +52988,12 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) +"nop" = ( +/obj/structure/machinery/portable_atmospherics/powered/scrubber, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "nos" = ( /obj/structure/machinery/chem_storage/medbay{ dir = 1 @@ -54529,6 +53007,22 @@ icon_state = "test_floor4" }, /area/almayer/medical/hydroponics) +"nou" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"noP" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "noV" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -54543,6 +53037,17 @@ }, /turf/open/floor/plating, /area/almayer/engineering/starboard_atmos) +"npn" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "npt" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -54558,6 +53063,13 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) +"npA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "npO" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -54621,6 +53133,23 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) +"nqW" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) +"nri" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/working_joe{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "nrt" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -54735,14 +53264,6 @@ "ntj" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/computerlab) -"ntr" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/item/seeds/goldappleseed, -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "ntt" = ( /obj/item/stool, /obj/effect/decal/warning_stripes{ @@ -54828,6 +53349,12 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"nuM" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south2) "nuN" = ( /obj/effect/landmark/start/marine/medic/alpha, /obj/effect/landmark/late_join/alpha, @@ -54962,6 +53489,13 @@ icon_state = "green" }, /area/almayer/squads/req) +"nxb" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "nxc" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -54971,6 +53505,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) +"nxx" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "nxK" = ( /obj/structure/sign/safety/high_voltage{ pixel_y = -32 @@ -54983,6 +53523,17 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"nxZ" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 10" + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "nyj" = ( /obj/effect/decal/medical_decals{ icon_state = "docdecal2" @@ -55025,6 +53576,13 @@ "nyQ" = ( /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"nyS" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "nzv" = ( /obj/structure/filingcabinet/filingcabinet, /obj/item/clipboard, @@ -55045,6 +53603,10 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"nzD" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/port) "nzO" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/warning_stripes{ @@ -55056,6 +53618,21 @@ }, /turf/open/floor/almayer, /area/almayer/squads/req) +"nAd" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) +"nAY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "nBa" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad{ req_access = null; @@ -55075,6 +53652,22 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"nBi" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/clothing/glasses/monocle, +/obj/item/reagent_container/food/drinks/coffee{ + pixel_x = -7; + pixel_y = -2 + }, +/obj/item/weapon/pole/fancy_cane{ + pixel_x = 5 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "nBw" = ( /turf/open/floor/almayer{ dir = 1; @@ -55087,6 +53680,12 @@ icon_state = "mono" }, /area/almayer/living/pilotbunks) +"nBK" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/north2) "nBW" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -55101,6 +53700,12 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"nCn" = ( +/obj/structure/pipes/vents/pump/on, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "nCp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -55165,6 +53770,14 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"nDa" = ( +/obj/structure/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) "nDd" = ( /obj/structure/sign/safety/ammunition{ pixel_x = 15; @@ -55178,15 +53791,6 @@ icon_state = "redfull" }, /area/almayer/hull/lower_hull/l_f_s) -"nDh" = ( -/obj/structure/transmitter/rotary{ - name = "CL Office Telephone"; - phone_category = "Almayer"; - phone_id = "CL Office" - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "nDo" = ( /obj/structure/closet/l3closet/general, /obj/structure/window/reinforced{ @@ -55347,6 +53951,14 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"nFM" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 18" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "nFV" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -55413,6 +54025,20 @@ icon_state = "plating_striped" }, /area/almayer/living/cryo_cells) +"nHL" = ( +/obj/structure/machinery/vending/coffee, +/obj/structure/sign/safety/coffee{ + pixel_x = -17; + pixel_y = -8 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "nIj" = ( /turf/open/floor/almayer{ icon_state = "green" @@ -55473,6 +54099,14 @@ }, /turf/open/floor/almayer, /area/almayer/living/basketball) +"nJa" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/engine_core) "nJs" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -55515,6 +54149,17 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"nKP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "nLa" = ( /obj/structure/bed/chair{ dir = 4 @@ -55665,6 +54310,17 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"nNx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "nNA" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -55673,6 +54329,13 @@ icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_m_p) +"nNC" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "nNH" = ( /turf/open/floor/almayer{ dir = 1; @@ -55706,6 +54369,25 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) +"nOb" = ( +/obj/structure/surface/rack, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/reagent_container/food/drinks/bottle/sake, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -4 + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "nOC" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/execution) @@ -55832,6 +54514,9 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"nQA" = ( +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "nRq" = ( /obj/effect/decal/cleanable/blood/oil/streak, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -55898,6 +54583,14 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) +"nTi" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "nTl" = ( /turf/open/floor/almayer{ dir = 1; @@ -55925,6 +54618,10 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"nTR" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "nTZ" = ( /turf/open/floor/almayer{ dir = 5; @@ -56166,6 +54863,15 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"nYn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "nYp" = ( /obj/structure/machinery/light{ dir = 4 @@ -56182,6 +54888,13 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"nYC" = ( +/obj/structure/sign/safety/autoopenclose{ + pixel_x = 7; + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "nYD" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/almayer{ @@ -56447,6 +55160,13 @@ damage_cap = 15000 }, /area/almayer/squads/delta) +"oex" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "oeB" = ( /turf/open/floor/almayer{ dir = 8; @@ -56494,6 +55214,20 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"ofU" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "ofZ" = ( /obj/structure/bed/sofa/south/grey, /turf/open/floor/almayer{ @@ -56660,19 +55394,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"ojv" = ( -/obj/structure/machinery/door/airlock/almayer/generic/corporate, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/door, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +"ojh" = ( +/obj/structure/disposalpipe/junction{ + dir = 8 }, -/area/almayer/command/corporateliason) +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "ojF" = ( /obj/structure/machinery/cm_vending/clothing/tl/charlie{ density = 0; @@ -56683,6 +55411,24 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"ojH" = ( +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 + }, +/turf/open/floor/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/starboard) +"ojQ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_17"; + pixel_x = -5; + pixel_y = 10 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "ojR" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -56736,19 +55482,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) -"okz" = ( -/obj/structure/platform{ - dir = 4; - layer = 2.7 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "okD" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer6" @@ -56757,6 +55490,14 @@ icon_state = "outerhull_dir" }, /area/space) +"okQ" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 12" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "olM" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -56776,6 +55517,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices) +"olN" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "olO" = ( /obj/structure/closet/secure_closet/personal/cabinet{ req_access = null @@ -56932,6 +55684,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) +"opH" = ( +/obj/structure/machinery/light, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "opI" = ( /obj/structure/closet/secure_closet, /obj/item/device/camera_film, @@ -56953,6 +55714,12 @@ /obj/docking_port/stationary/emergency_response/external/port4, /turf/open/space/basic, /area/space) +"oqt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "oqu" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -57075,26 +55842,21 @@ /obj/structure/largecrate/random/secure, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_p) -"orw" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/photocopier{ - anchored = 0 - }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "orH" = ( /turf/open/floor/almayer/uscm/directional{ dir = 10 }, /area/almayer/command/lifeboat) +"orN" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "osc" = ( /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep, /obj/structure/machinery/light{ @@ -57158,12 +55920,19 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"osE" = ( -/obj/structure/closet/emcloset, +"osI" = ( /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/engineering/lower/workshop) +"osM" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 8" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "osT" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/prop/ice_colony/hula_girl{ @@ -57185,19 +55954,20 @@ "otu" = ( /turf/closed/wall/almayer/research/containment/wall/connect_w, /area/almayer/medical/containment/cell) -"otX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"ouf" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" }, -/obj/structure/sign/safety/press_area_ag{ - pixel_x = -17; - pixel_y = -7 +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +/turf/open/floor/plating/almayer{ + allow_construction = 0 }, -/area/almayer/hull/lower_hull/l_a_p) +/area/almayer/hallways/upper/starboard) "oug" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/pipes/standard/simple/hidden/supply, @@ -57230,6 +56000,15 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"ouw" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/bombcloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "ouB" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, @@ -57263,12 +56042,6 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering/port) -"ovn" = ( -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "ovp" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/flora/pottedplant{ @@ -57338,6 +56111,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/sea_office) +"oxc" = ( +/obj/structure/bed, +/obj/item/toy/plush/farwa{ + pixel_x = 5 + }, +/obj/item/clothing/under/redpyjamas, +/obj/item/bedsheet/orange, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "oxi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -57397,17 +56179,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) -"ozi" = ( -/obj/structure/surface/table/almayer, -/obj/item/fuelCell, -/obj/item/fuelCell, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, +"oyR" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "ozq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -57467,19 +56244,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"oAd" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/sign/safety/life_support{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "oAB" = ( /obj/structure/platform{ dir = 8; @@ -57675,6 +56439,13 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"oEy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "oEE" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -57710,6 +56481,13 @@ icon_state = "red" }, /area/almayer/living/port_emb) +"oFm" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "oFG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -57756,6 +56534,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"oGF" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) +"oGJ" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "oGP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -57764,6 +56553,22 @@ icon_state = "orange" }, /area/almayer/living/port_emb) +"oGY" = ( +/obj/item/device/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/door_control/cl/office/evac{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/structure/machinery/door_control/cl/office/divider{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "oHc" = ( /obj/structure/machinery/light, /obj/effect/decal/warning_stripes{ @@ -57805,6 +56610,18 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) +"oIa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "oIh" = ( /turf/open/floor/almayer{ dir = 8; @@ -57833,7 +56650,8 @@ }, /obj/structure/machinery/door/airlock/almayer/research/reinforced{ dir = 8; - name = "\improper Containment Airlock" + name = "\improper Containment Airlock"; + closeOtherId = "containment_n" }, /obj/structure/machinery/door/poddoor/almayer/biohazard/white{ dir = 4 @@ -57851,6 +56669,9 @@ "oIB" = ( /turf/closed/wall/almayer, /area/almayer/command/combat_correspondent) +"oJk" = ( +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop) "oJp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -57974,6 +56795,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/lobby) +"oLN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "oLT" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -58083,6 +56913,37 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"oNY" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_18"; + pixel_y = 7 + }, +/obj/structure/machinery/door_control/cl/quarter/officedoor{ + pixel_x = -25 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) +"oOw" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) +"oON" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/power/apc/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "oOO" = ( /obj/structure/sign/safety/debark_lounge{ pixel_x = 15; @@ -58160,18 +57021,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"oPD" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "oPE" = ( /turf/open/floor/almayer{ dir = 1; @@ -58295,6 +57144,15 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"oRW" = ( +/obj/structure/surface/table/almayer, +/obj/item/frame/table, +/obj/item/frame/table, +/obj/item/clipboard, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "oSq" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -58398,6 +57256,19 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"oTO" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "oUG" = ( /obj/structure/machinery/light{ dir = 8 @@ -58458,6 +57329,16 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"oWx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "oWz" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -58481,12 +57362,32 @@ /obj/effect/decal/cleanable/ash, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"oXt" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "oXJ" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"oXM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "oXY" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -58551,6 +57452,12 @@ icon_state = "red" }, /area/almayer/living/offices/flight) +"oZy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "oZD" = ( /obj/structure/sign/poster/music{ pixel_x = -27 @@ -58757,23 +57664,31 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_p) -"pef" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +"pdy" = ( +/obj/structure/machinery/door_control{ + id = "OTStore"; + name = "Shutters"; + pixel_y = 24 }, /obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 + icon_state = "NE-out"; + pixel_y = 1 }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"pdK" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "plating" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/lower/engine_core) "peO" = ( /obj/structure/sign/safety/medical{ pixel_x = -17; @@ -58806,14 +57721,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"pfh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "pfp" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Up4"; @@ -58890,6 +57797,22 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"pgN" = ( +/obj/structure/pipes/binary/pump/on{ + dir = 4 + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "pgP" = ( /obj/structure/disposalpipe/segment{ dir = 8 @@ -58952,20 +57875,6 @@ /obj/item/trash/barcardine, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"pjb" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "pje" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -58974,6 +57883,15 @@ "pji" = ( /turf/closed/wall/almayer, /area/almayer/hallways/stern_hallway) +"pjj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "pjw" = ( /turf/open/floor/almayer{ dir = 10; @@ -59011,12 +57929,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"pjP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "pjR" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -59039,15 +57951,16 @@ icon_state = "redfull" }, /area/almayer/squads/alpha_bravo_shared) -"plE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" +"pkA" = ( +/obj/structure/closet/firecloset, +/obj/structure/machinery/status_display{ + pixel_y = 30 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower) "plI" = ( /obj/structure/machinery/cm_vending/sorted/medical/blood, /turf/open/floor/almayer{ @@ -59155,12 +58068,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"pop" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) "poq" = ( /obj/item/pipe{ dir = 4; @@ -59168,6 +58075,16 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"poA" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/glass/bucket/mopbucket, +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_y = 10 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "poR" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -59190,6 +58107,28 @@ }, /turf/open/floor/almayer, /area/almayer/living/auxiliary_officer_office) +"ppn" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"ppF" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/obj/structure/surface/table/almayer, +/obj/item/clipboard{ + pixel_x = -4 + }, +/obj/item/device/taperecorder{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/camera, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "pqc" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -59237,6 +58176,15 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"pqP" = ( +/obj/structure/machinery/cm_vending/sorted/tech/comp_storage, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "pqQ" = ( /turf/open/floor/almayer{ dir = 5; @@ -59276,6 +58224,12 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) +"prP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "prY" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray, @@ -59294,17 +58248,6 @@ "psm" = ( /turf/closed/wall/almayer, /area/almayer/hull/upper_hull/u_a_s) -"psp" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "psy" = ( /obj/structure/machinery/door/airlock/almayer/security{ dir = 2; @@ -59381,9 +58324,39 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"ptA" = ( +/obj/structure/stairs{ + dir = 1; + icon_state = "ramptop" + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 + }, +/turf/open/floor/plating/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/starboard) "ptK" = ( /turf/closed/wall/almayer, /area/almayer/engineering/upper_engineering/starboard) +"ptZ" = ( +/obj/structure/platform{ + dir = 4; + layer = 2.7 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "pun" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -59397,13 +58370,6 @@ icon_state = "silver" }, /area/almayer/living/cryo_cells) -"put" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop) "puv" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -59522,6 +58488,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/starboard_missiles) +"pwG" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "pwK" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -59612,6 +58584,28 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/bravo) +"pyx" = ( +/obj/structure/machinery/door_display/research_cell{ + dir = 4; + id = "Containment Cell 4"; + name = "Control Panel"; + pixel_x = -15; + req_access_txt = "200" + }, +/obj/item/storage/fancy/cigarettes/blackpack{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/tool/lighter/zippo/gold{ + pixel_x = 2 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "pyy" = ( /obj/structure/filingcabinet, /turf/open/floor/almayer{ @@ -59646,6 +58640,16 @@ icon_state = "red" }, /area/almayer/shipboard/weapon_room) +"pzd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "pzG" = ( /obj/docking_port/stationary/emergency_response/port1, /turf/open/floor/almayer{ @@ -59659,6 +58663,12 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"pzM" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "pzO" = ( /obj/item/tool/warning_cone{ pixel_y = 13 @@ -59683,6 +58693,9 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"pAm" = ( +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) "pAR" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -59702,6 +58715,9 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"pBG" = ( +/turf/closed/wall/almayer, +/area/almayer/command/corporateliaison) "pBW" = ( /turf/open/floor/almayer{ icon_state = "orangecorner" @@ -59710,6 +58726,17 @@ "pCi" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/upper_hull/u_f_s) +"pCq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "pCr" = ( /obj/structure/machinery/cm_vending/sorted/attachments/blend, /turf/open/floor/almayer{ @@ -59870,15 +58897,6 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) -"pFA" = ( -/obj/structure/pipes/standard/simple/visible{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orangecorner" - }, -/area/almayer/engineering/lower_engineering) "pFM" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -59908,34 +58926,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"pGN" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/aluminum{ - amount = 20 - }, -/obj/item/stack/sheet/copper{ - amount = 20; - pixel_y = 4 - }, -/obj/item/stack/sheet/mineral/gold{ - amount = 3; - pixel_y = 4 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 5; - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/stack/sheet/mineral/phoron{ - amount = 25 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engineering_workshop/hangar) "pGP" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/lights/bulbs{ @@ -59949,6 +58939,12 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/general_equipment) +"pHc" = ( +/obj/structure/machinery/autolathe, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "pHp" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/perma) @@ -59976,13 +58972,6 @@ /obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"pIf" = ( -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/lower_engineering) "pIk" = ( /obj/structure/ladder{ height = 1; @@ -60017,6 +59006,26 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/north1) +"pJr" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) +"pJt" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "pJv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -60093,6 +59102,26 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"pLa" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) +"pLt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "pLO" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -60141,6 +59170,12 @@ icon_state = "plate" }, /area/almayer/medical/morgue) +"pMA" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "pMJ" = ( /obj/structure/bed/chair{ dir = 1 @@ -60225,17 +59260,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) -"pNQ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "pOi" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, @@ -60339,28 +59363,12 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) -"pQq" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "pQr" = ( /obj/structure/bed, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) -"pQu" = ( -/obj/structure/machinery/chem_dispenser/soda{ - pixel_y = 20 - }, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "pQy" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -60471,6 +59479,20 @@ icon_state = "test_floor5" }, /area/almayer/medical/hydroponics) +"pRY" = ( +/obj/structure/sign/safety/water{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) +"pRZ" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/engineering/lower/workshop) "pSL" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -60480,6 +59502,14 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"pSQ" = ( +/obj/structure/reagent_dispensers/fueltank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "pSU" = ( /obj/structure/machinery/light, /obj/structure/machinery/photocopier, @@ -60549,6 +59579,10 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"pUj" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "pUp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -60562,6 +59596,12 @@ icon_state = "test_floor5" }, /area/almayer/squads/req) +"pUv" = ( +/obj/structure/machinery/power/smes/buildable, +/turf/open/floor/almayer{ + icon_state = "tcomms" + }, +/area/almayer/engineering/lower/engine_core) "pUA" = ( /obj/structure/surface/table/almayer, /obj/structure/window/reinforced/ultra{ @@ -60659,21 +59699,6 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"pWf" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - dir = 2; - name = "\improper Engineering Workshop" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engineering_workshop) "pWr" = ( /obj/structure/surface/rack, /obj/item/tool/minihoe{ @@ -60718,13 +59743,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"pXj" = ( -/obj/structure/closet/radiation, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "pXl" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -60814,6 +59832,15 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"pYS" = ( +/obj/structure/pipes/binary/pump/on{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "pYX" = ( /turf/open/floor/almayer{ dir = 8; @@ -60826,6 +59853,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_umbilical) +"pZH" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/machinery/door/window/westright, +/obj/structure/window/reinforced/tinted/frosted, +/obj/item/tool/soap/deluxe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/corporateliaison) "pZK" = ( /turf/open/floor/almayer{ dir = 1; @@ -60914,6 +59950,15 @@ icon_state = "redcorner" }, /area/almayer/living/briefing) +"qbD" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "qbO" = ( /turf/open/floor/almayer{ dir = 6; @@ -61030,6 +60075,16 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"qec" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "qee" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -61265,6 +60320,18 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"qhD" = ( +/obj/structure/closet{ + name = "backpack storage" + }, +/obj/item/storage/backpack/marine/grenadepack, +/obj/item/storage/backpack/marine/grenadepack, +/obj/item/storage/backpack/marine/mortarpack, +/obj/item/storage/backpack/marine/mortarpack, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop/hangar) "qhU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -61360,6 +60427,9 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"qjZ" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/stern_point_defense) "qkb" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -61427,6 +60497,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/starboard_umbilical) +"qlm" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "qlp" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/prop/tableflag/uscm{ @@ -61483,19 +60560,6 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"qmt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "qmy" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door_control{ @@ -61539,7 +60603,8 @@ }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Brig" + name = "\improper Brig"; + closeOtherId = "brigmaint_n" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -61587,6 +60652,13 @@ /obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) +"qmY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "qnd" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -61680,6 +60752,24 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"qoL" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/reagentgrinder/industrial{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) +"qoR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "qoY" = ( /obj/structure/machinery/vending/hydroseeds, /turf/open/floor/almayer{ @@ -61765,6 +60855,19 @@ /obj/structure/machinery/cm_vending/clothing/military_police_warden, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) +"qqW" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) +"qra" = ( +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "qrc" = ( /obj/structure/flora/pottedplant{ desc = "It is made of Fiberbush(tm). It contains asbestos. Studies say that greenery calms the mind due to some sort evolved mechanism in the brain. This plant is not calming."; @@ -61796,20 +60899,25 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) -"qsF" = ( -/obj/structure/sign/safety/nonpress_0g{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "qsL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/ce_room) +"qtj" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) "qtn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -61895,6 +61003,12 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) +"quS" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "quT" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ layer = 1.9 @@ -61933,6 +61047,21 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) +"qvL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Weyland-Yutani Office" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/office/door, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) "qwo" = ( /obj/structure/machinery/washing_machine, /obj/structure/machinery/washing_machine{ @@ -62108,16 +61237,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"qyz" = ( -/obj/structure/machinery/computer/cameras/containment/hidden{ - dir = 4; - pixel_x = -17 - }, -/obj/structure/surface/table/almayer, -/obj/item/storage/photo_album, -/obj/item/device/camera_film, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "qyD" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -62140,6 +61259,13 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"qyK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "qyW" = ( /obj/structure/bed/chair{ dir = 4 @@ -62171,6 +61297,15 @@ icon_state = "plating" }, /area/almayer/shipboard/port_point_defense) +"qAs" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "qAA" = ( /obj/structure/machinery/power/monitor{ name = "Main Power Grid Monitoring" @@ -62182,6 +61317,15 @@ icon_state = "mono" }, /area/almayer/engineering/ce_room) +"qAB" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 5 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "qAT" = ( /obj/structure/machinery/light, /obj/structure/surface/table/almayer, @@ -62371,6 +61515,19 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) +"qEL" = ( +/obj/structure/surface/table/almayer, +/obj/structure/largecrate/random/case/small{ + pixel_y = 5 + }, +/obj/item/storage/firstaid/toxin{ + pixel_x = 8; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "qEW" = ( /obj/structure/sign/poster/ad{ pixel_x = 30 @@ -62435,15 +61592,6 @@ icon_state = "bluefull" }, /area/almayer/squads/delta) -"qFQ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "qFW" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -62468,6 +61616,14 @@ icon_state = "red" }, /area/almayer/shipboard/brig/lobby) +"qGw" = ( +/obj/structure/reagent_dispensers/ammoniatank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "qGF" = ( /obj/structure/machinery/optable, /turf/open/floor/almayer{ @@ -62532,6 +61688,17 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"qIx" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + req_access_txt = "200"; + req_one_access = null + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/backdoor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) "qIL" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/camera/autoname/almayer{ @@ -62626,15 +61793,6 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"qJU" = ( -/obj/structure/bed, -/obj/item/toy/plush/farwa{ - pixel_x = 5 - }, -/obj/item/clothing/under/redpyjamas, -/obj/item/bedsheet/orange, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "qJY" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/bottle/orangejuice{ @@ -62728,6 +61886,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"qLg" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "qLi" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -62818,20 +61982,6 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"qMe" = ( -/obj/structure/machinery/portable_atmospherics/hydroponics, -/obj/item/tool/minihoe{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/reagent_container/glass/fertilizer/ez, -/obj/item/seeds/ambrosiavulgarisseed, -/obj/item/tool/plantspray/weeds, -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "qMf" = ( /obj/structure/bed/chair, /turf/open/floor/almayer{ @@ -62898,6 +62048,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) +"qNI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/distribution_pipes{ + pixel_x = -17 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "qNR" = ( /obj/structure/disposalpipe/junction, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -62999,6 +62158,13 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"qQy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "qQP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -63040,6 +62206,19 @@ icon_state = "silvercorner" }, /area/almayer/shipboard/brig/cic_hallway) +"qRr" = ( +/obj/structure/machinery/door/airlock/almayer/generic/corporate, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/door, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) "qSm" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -63125,6 +62304,16 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"qUx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "qUz" = ( /obj/structure/machinery/light{ dir = 8; @@ -63158,6 +62347,22 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"qUZ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/door_control{ + id = "MTline"; + name = "Next button"; + pixel_x = 5; + pixel_y = 10; + req_one_access_txt = "2;7" + }, +/obj/item/paper_bin/uscm, +/obj/item/tool/pen, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "qVC" = ( /obj/structure/surface/table/reinforced/almayer_B, /turf/open/floor/almayer{ @@ -63221,6 +62426,15 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"qWQ" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "qWR" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 4 @@ -63232,6 +62446,11 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"qXk" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "qXo" = ( /obj/structure/machinery/seed_extractor, /obj/structure/machinery/light{ @@ -63252,17 +62471,6 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) -"qXx" = ( -/obj/structure/platform, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "qXE" = ( /obj/structure/machinery/brig_cell/perma_1{ pixel_x = 32 @@ -63295,6 +62503,22 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"qXR" = ( +/turf/closed/wall/almayer, +/area/almayer/hull/lower_hull/stern) +"qXS" = ( +/obj/structure/stairs{ + icon_state = "ramptop" + }, +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 + }, +/turf/open/floor/plating/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/port) "qXZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -63311,6 +62535,20 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"qYo" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 6" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) +"qYq" = ( +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "qYr" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down3"; @@ -63440,6 +62678,12 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"rae" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "rav" = ( /obj/structure/platform{ dir = 4 @@ -63480,12 +62724,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"rbp" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_p) "rbv" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -63879,19 +63117,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) -"riA" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "riE" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -63926,14 +63151,15 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"riQ" = ( -/obj/item/device/multitool, -/obj/structure/platform_decoration, +"riT" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "plating" }, -/area/almayer/engineering/engine_core) +/area/almayer/shipboard/stern_point_defense) "rjn" = ( /obj/structure/machinery/light, /obj/structure/reagent_dispensers/water_cooler/stacks, @@ -63947,13 +63173,16 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"rjH" = ( -/obj/structure/surface/rack, -/obj/item/storage/beer_pack, +"rjO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower/engine_core) "rjV" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/wooden_tv/prop{ @@ -64022,6 +63251,14 @@ /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, /area/almayer/living/gym) +"rlc" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "rlf" = ( /obj/structure/machinery/cm_vending/clothing/synth/snowflake, /turf/open/floor/almayer{ @@ -64140,9 +63377,19 @@ "rna" = ( /turf/closed/wall/almayer/white, /area/almayer/command/airoom) -"rne" = ( -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) +"rnF" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Engineering Workshop" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop) "rnH" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -64541,6 +63788,10 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) +"ruL" = ( +/obj/structure/window/framed/almayer/hull/hijack_bustable, +/turf/open/floor/plating, +/area/almayer/engineering/lower/workshop/hangar) "rvA" = ( /turf/open/floor/almayer, /area/almayer/living/numbertwobunks) @@ -64556,6 +63807,17 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"rwq" = ( +/obj/structure/sign/safety/cryo{ + pixel_x = 7; + pixel_y = -26 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "rwv" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/bed/chair/comfy/bravo, @@ -64563,6 +63825,12 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"rwB" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "rwS" = ( /obj/structure/machinery/light/small, /obj/structure/largecrate/random/case/double, @@ -64634,6 +63902,14 @@ icon_state = "redfull" }, /area/almayer/command/cic) +"ryY" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/disposalpipe/down/almayer{ + dir = 1; + id = "almayerlink" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "rzN" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" @@ -64755,6 +64031,12 @@ icon_state = "orange" }, /area/almayer/hallways/port_umbilical) +"rBv" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "rBx" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/tool/stamp/ro{ @@ -64789,6 +64071,16 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"rCl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "rCp" = ( /obj/structure/largecrate/random/case/small, /obj/structure/machinery/light/small{ @@ -64845,7 +64137,8 @@ /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ dir = 1; - name = "\improper Warden's Office" + name = "\improper Warden's Office"; + closeOtherId = "brigwarden" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -64917,6 +64210,26 @@ icon_state = "plate" }, /area/almayer/living/offices) +"rDy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"rDB" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 13" + }, +/obj/structure/sign/safety/rad_haz{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "rDI" = ( /obj/structure/largecrate/supply, /obj/structure/sign/safety/bulkhead_door{ @@ -64951,6 +64264,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/chief_mp_office) +"rEb" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "rEf" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -64961,6 +64279,12 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"rEm" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "rEn" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/adv{ @@ -65051,15 +64375,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"rFu" = ( -/obj/structure/platform_decoration{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "rFy" = ( /turf/open/floor/almayer{ dir = 1; @@ -65139,6 +64454,13 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) +"rGU" = ( +/obj/structure/machinery/computer/skills{ + req_one_access_txt = "200" + }, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "rHc" = ( /turf/open/floor/carpet, /area/almayer/command/cichallway) @@ -65419,6 +64741,12 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"rLp" = ( +/obj/structure/machinery/chem_dispenser/soda{ + pixel_y = 20 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "rLv" = ( /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 4; @@ -65442,6 +64770,12 @@ dir = 8 }, /area/almayer/medical/containment/cell/cl) +"rMT" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/command/corporateliaison) "rNa" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/paper_bin/uscm{ @@ -65500,6 +64834,12 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"rNK" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "rOc" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -65535,6 +64875,13 @@ icon_state = "plate" }, /area/almayer/command/cic) +"rOI" = ( +/obj/structure/pipes/vents/pump{ + dir = 8; + id_tag = "mining_outpost_pump" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "rOJ" = ( /obj/structure/barricade/handrail, /obj/structure/disposalpipe/segment, @@ -65565,6 +64912,18 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"rPQ" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + name = "\improper Engineering Hallway" + }, +/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/lower) "rQc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -65880,6 +65239,12 @@ icon_state = "test_floor4" }, /area/almayer/squads/delta) +"rYh" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) "rYi" = ( /obj/structure/bed/chair, /obj/structure/machinery/power/apc/almayer{ @@ -65960,37 +65325,14 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) -"sah" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) -"saB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) -"saW" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 +"saL" = ( +/obj/structure/machinery/door/airlock/almayer/generic/corporate{ + name = "Corporate Liaison's Closet" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/command/corporateliaison) "sbq" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ icon_state = "almayer_pdoor"; @@ -66020,21 +65362,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cryo) -"sbZ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "scg" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -66079,6 +65406,19 @@ icon_state = "outerhull_dir" }, /area/space) +"scE" = ( +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/obj/structure/sign/safety/life_support{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "scH" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -66114,6 +65454,16 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"sdf" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "sdl" = ( /obj/structure/surface/rack{ density = 0; @@ -66143,6 +65493,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"sdv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "sdw" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -66179,12 +65539,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) -"sfU" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, +"sfT" = ( /turf/open/floor/almayer, -/area/almayer/engineering/lower_engineering) +/area/almayer/hallways/upper/port) +"sfV" = ( +/obj/structure/machinery/alarm/almayer, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "sgc" = ( /obj/structure/closet/crate/freezer/cooler{ pixel_x = -7 @@ -66248,6 +65609,23 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"sgs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/press_area_ag{ + pixel_x = -17; + pixel_y = 7 + }, +/obj/structure/sign/safety/airlock{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "sgw" = ( /obj/structure/surface/table/almayer, /obj/item/prop/almayer/flight_recorder{ @@ -66290,12 +65668,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) -"sgM" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "sgR" = ( /obj/structure/surface/table/almayer, /obj/item/toy/deck{ @@ -66312,10 +65684,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) -"shb" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "shh" = ( /obj/structure/machinery/autolathe, /turf/open/floor/almayer, @@ -66359,6 +65727,17 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"shL" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "siz" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/hangar{ @@ -66375,6 +65754,21 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) +"siN" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Nitrogen Control Console" + }, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "siW" = ( /obj/structure/machinery/body_scanconsole, /obj/structure/disposalpipe/segment{ @@ -66420,6 +65814,15 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"sjz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "skj" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -66447,11 +65850,45 @@ icon_state = "sterile_green_side" }, /area/almayer/shipboard/brig/surgery) +"skC" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 6 + }, +/obj/structure/machinery/meter, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "skF" = ( /turf/open/floor/almayer{ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"skL" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) +"skR" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10" + }, +/obj/structure/closet/secure_closet/cmdcabinet{ + desc = "A bulletproof cabinet containing communications equipment."; + name = "communications cabinet"; + pixel_y = 24; + req_access = null; + req_one_access_txt = "207;203" + }, +/obj/item/device/radio, +/obj/item/device/radio/listening_bug/radio_linked/wy, +/obj/item/device/radio/listening_bug/radio_linked/wy{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "sld" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66501,12 +65938,15 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"smr" = ( +"smW" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engineering_workshop) +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "smZ" = ( /obj/structure/window/framed/almayer/hull/hijack_bustable, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -66549,6 +65989,12 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"snt" = ( +/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "snw" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -66655,6 +66101,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"sov" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "sow" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -66719,6 +66171,14 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"spH" = ( +/obj/structure/pipes/standard/simple/hidden/universal{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "spK" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -66737,18 +66197,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"spT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "sqa" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -66762,6 +66210,9 @@ "sqf" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/upper_medical) +"sqg" = ( +/turf/closed/wall/almayer, +/area/almayer/engineering/lower) "sql" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -66928,7 +66379,8 @@ dir = 2; name = "\improper Brig Armoury"; req_access = null; - req_one_access_txt = "1;3" + req_one_access_txt = "1;3"; + closeOtherId = "brignorth" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -66944,6 +66396,18 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"suJ" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Core Hatch" + }, +/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/lower/engine_core) "suT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66958,12 +66422,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"svd" = ( -/obj/structure/machinery/recharge_station, +"suY" = ( +/obj/structure/platform_decoration, /turf/open/floor/almayer{ - icon_state = "cargo" + dir = 5; + icon_state = "plating" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower/engine_core) "svf" = ( /obj/structure/machinery/light{ dir = 1 @@ -67080,6 +66545,19 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"sxE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "sxT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/guncabinet, @@ -67132,17 +66610,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"szm" = ( -/obj/structure/machinery/power/fusion_engine{ - name = "\improper S-52 fusion reactor 10" - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "szE" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -67213,6 +66680,15 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"sAz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "sAA" = ( /obj/structure/machinery/light{ dir = 1 @@ -67289,6 +66765,19 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"sCV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "sDu" = ( /obj/item/clothing/under/marine/dress, /turf/open/floor/almayer{ @@ -67558,6 +67047,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) +"sHm" = ( +/obj/structure/disposalpipe/up/almayer{ + id = "almayerlink_OT_req" + }, +/turf/closed/wall/almayer, +/area/almayer/engineering/lower/workshop/hangar) "sHo" = ( /obj/structure/pipes/unary/outlet_injector{ dir = 8; @@ -67577,6 +67072,13 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"sHx" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "sHM" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -67610,6 +67112,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) +"sIr" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) "sIx" = ( /obj/effect/landmark/yautja_teleport, /turf/open/floor/plating/plating_catwalk, @@ -67663,6 +67171,34 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"sJI" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/aluminum{ + amount = 20 + }, +/obj/item/stack/sheet/copper{ + amount = 20; + pixel_y = 4 + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 3; + pixel_y = 4 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 5; + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/stack/sheet/mineral/phoron{ + amount = 25 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "sJY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -67678,6 +67214,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"sKM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "sKY" = ( /obj/structure/bed/chair/office/dark{ dir = 8; @@ -67801,6 +67345,16 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"sOv" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/structure/machinery/door_control/cl/quarter/windows{ + pixel_x = 11; + pixel_y = 37 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "sOw" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -67845,15 +67399,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"sPA" = ( -/obj/structure/sign/safety/ladder{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "sPF" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -67972,15 +67517,12 @@ icon_state = "plate" }, /area/almayer/command/cic) -"sSR" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" +"sSP" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" }, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "sSY" = ( /obj/structure/pipes/vents/scrubber{ dir = 8 @@ -68113,6 +67655,26 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"sVT" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/obj/item/storage/toolbox/electrical{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) +"sVV" = ( +/turf/open/floor/almayer, +/area/almayer/hallways/upper/starboard) "sWs" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ @@ -68227,13 +67789,6 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"sXV" = ( -/obj/structure/machinery/recharge_station, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "sYh" = ( /turf/open/floor/almayer{ dir = 1; @@ -68495,6 +68050,17 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell) +"taV" = ( +/obj/effect/projector{ + name = "Almayer_Down1"; + vector_x = 19; + vector_y = -98 + }, +/turf/open/floor/almayer{ + allow_construction = 0; + icon_state = "plate" + }, +/area/almayer/hallways/upper/starboard) "tbD" = ( /obj/structure/ladder{ height = 2; @@ -68506,12 +68072,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) -"tce" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "tcZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -68548,14 +68108,19 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"tdx" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +"tdv" = ( +/obj/structure/surface/table/almayer, +/obj/structure/sign/safety/terminal{ + pixel_x = -17 + }, +/obj/structure/machinery/computer/working_joe{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "orangecorner" + dir = 8; + icon_state = "orange" }, -/area/almayer/engineering/engine_core) +/area/almayer/engineering/lower/engine_core) "tdy" = ( /obj/structure/bed/sofa/south/grey/right, /obj/structure/sign/safety/restrictedarea{ @@ -68731,13 +68296,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"tgS" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/sign/safety/maint{ - pixel_x = -17 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) "tgV" = ( /obj/structure/bed, /obj/item/bedsheet/medical, @@ -68747,6 +68305,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"thc" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "thq" = ( /obj/structure/machinery/vending/cola{ density = 0; @@ -68956,6 +68525,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) +"tkn" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "tkq" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -68973,6 +68553,14 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) +"tkR" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hallways/upper/starboard) "tld" = ( /obj/structure/machinery/prop/almayer/computer{ dir = 8; @@ -69052,18 +68640,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"tmA" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "tmB" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -69137,17 +68713,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"tnm" = ( -/obj/structure/machinery/atm{ - name = "Weyland-Yutani Automatic Teller Machine"; - pixel_y = 30 - }, -/obj/structure/surface/table/almayer, -/obj/item/spacecash/c1000/counterfeit, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/fancy/cigar, -/turf/open/floor/almayer, -/area/almayer/command/corporateliason) "tnY" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -69159,6 +68724,17 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"tos" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "tou" = ( /obj/structure/bed/chair{ dir = 4 @@ -69183,6 +68759,26 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) +"toO" = ( +/obj/structure/surface/table/almayer, +/obj/item/book/manual/engineering_construction, +/obj/item/folder/black_random, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "tpa" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/window/reinforced{ @@ -69304,10 +68900,38 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"tqE" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/reagent_dispensers/fueltank/custom, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"tqO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/stairs{ + pixel_x = -15 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "trb" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/lifeboat_pumps/south1) +"trh" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) "trB" = ( /turf/open/floor/almayer{ dir = 10; @@ -69354,6 +68978,29 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/medical_science) +"trU" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/pen/blue/clicky{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/tool/pen/red/clicky{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/tool/pen/clicky{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/paper_bin/wy{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "trW" = ( /obj/item/stack/tile/carpet{ amount = 20 @@ -69410,15 +69057,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/upper_medical) -"tsH" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "tsM" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -69485,6 +69123,26 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) +"ttX" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/firstaid/regular{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = -7 + }, +/obj/item/reagent_container/spray/cleaner{ + pixel_x = -10; + pixel_y = 14 + }, +/obj/item/storage/xeno_tag_case/full{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "tuf" = ( /obj/structure/platform_decoration{ dir = 4 @@ -69750,14 +69408,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lockerroom) -"tzz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop) "tzL" = ( /obj/structure/sign/safety/waterhazard{ pixel_x = 8; @@ -69887,6 +69537,24 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"tCx" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) "tCN" = ( /turf/open/floor/almayer{ dir = 8; @@ -69919,6 +69587,12 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"tEd" = ( +/obj/structure/reagent_dispensers/acidtank, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "tEi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -70097,6 +69771,14 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) +"tHQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "tHS" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -70107,6 +69789,15 @@ icon_state = "cargo" }, /area/almayer/command/airoom) +"tIe" = ( +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "tIp" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Dorms" @@ -70290,33 +69981,22 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"tLy" = ( -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/engine_core) "tLM" = ( /obj/structure/sign/safety/storage{ pixel_x = -17 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) -"tMf" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/stairs{ - pixel_x = -15 - }, +"tMc" = ( +/obj/structure/machinery/chem_master/industry_mixer, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "orange" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/engineering/lower/workshop/hangar) "tMH" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Warden's Office" + name = "\improper Warden's Office"; + closeOtherId = "brigwarden" }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -70370,16 +70050,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"tOd" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) "tOr" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -70393,6 +70063,13 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/hydroponics) +"tOu" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "tOC" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -70487,6 +70164,23 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"tQM" = ( +/obj/structure/sign/poster{ + desc = "One of those hot, tanned babes back the beaches of good ol' Earth."; + icon_state = "poster12"; + name = "Beach Babe Pinup"; + pixel_x = -30; + pixel_y = 6; + serial_number = 12 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/command/corporateliaison) "tQV" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/south1) @@ -70500,6 +70194,15 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"tRs" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/spray/cleaner, +/obj/item/frame/light_fixture, +/obj/item/frame/light_fixture, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "tRD" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -70527,21 +70230,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_f_s) -"tSc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - layer = 2.5 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) "tSp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -70634,6 +70322,17 @@ /obj/item/tool/wet_sign, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"tUN" = ( +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; + dir = 1; + req_one_access = null; + req_one_access_txt = "35" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop/hangar) "tUS" = ( /obj/item/toy/beach_ball/holoball, /obj/structure/holohoop{ @@ -70868,6 +70567,23 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) +"tZg" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) "tZm" = ( /obj/structure/closet/crate/freezer{ desc = "A freezer crate. There is a note attached, it reads: Do not open, property of Pvt. Mendoza." @@ -70882,18 +70598,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"tZF" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_p) "tZP" = ( /obj/structure/surface/rack, /obj/item/clothing/glasses/meson, @@ -71019,6 +70723,19 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"ubI" = ( +/obj/structure/surface/table/almayer, +/obj/item/folder/black_random{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/tool/stamp{ + name = "Corporate Liaison's stamp"; + pixel_x = -8; + pixel_y = 6 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "ucp" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -71326,6 +71043,15 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) +"uiC" = ( +/obj/structure/machinery/alarm/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "uiG" = ( /turf/open/floor/almayer{ dir = 9; @@ -71404,10 +71130,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"uku" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/turf/open/floor/plating, -/area/almayer/engineering/engineering_workshop/hangar) +"ukP" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "ukU" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -71436,6 +71164,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/commandbunks) +"ulp" = ( +/obj/structure/platform, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "uly" = ( /obj/structure/bed/stool, /turf/open/floor/almayer{ @@ -71542,6 +71281,14 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) +"unx" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "unJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -71569,6 +71316,18 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"unZ" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "uoi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -71600,12 +71359,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_s) -"upe" = ( -/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "upt" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -71678,6 +71431,15 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) +"uqh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) "uqo" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) @@ -71726,6 +71488,14 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"urW" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 7" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "usi" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -71749,12 +71519,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) -"usw" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/engine_core) "usy" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -71766,6 +71530,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"usL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/port) "usX" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -71774,6 +71547,21 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"usZ" = ( +/obj/structure/pipes/unary/outlet_injector, +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower) +"utn" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "uto" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/plasteel{ @@ -71854,6 +71642,18 @@ icon_state = "test_floor4" }, /area/almayer/powered) +"uuD" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Atmospherics Wing" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) "uuR" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal8"; @@ -71905,23 +71705,6 @@ icon_state = "orangecorner" }, /area/almayer/squads/bravo) -"uvG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/press_area_ag{ - pixel_x = -17; - pixel_y = 7 - }, -/obj/structure/sign/safety/airlock{ - pixel_x = -17; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/hull/lower_hull/l_a_s) "uvP" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -72065,6 +71848,10 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"uxX" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "uxZ" = ( /obj/structure/machinery/door_control{ id = "laddersouthwest"; @@ -72077,6 +71864,19 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"uyd" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "uys" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/squads/req) @@ -72093,15 +71893,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"uzg" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/lower_hull/l_a_s) "uzy" = ( /obj/item/reagent_container/glass/bucket, /obj/effect/decal/cleanable/blood/oil, @@ -72178,6 +71969,15 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) +"uAK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/engine_core) "uAL" = ( /obj/structure/bed/chair/wood/normal, /obj/item/bedsheet/brown, @@ -72322,12 +72122,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"uEc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/engine_core) "uEv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -72347,6 +72141,10 @@ icon_state = "plate" }, /area/almayer/living/offices) +"uFg" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "uFo" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/eastright{ @@ -72413,23 +72211,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"uGo" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) "uGt" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -72454,6 +72235,12 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"uHr" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south2) "uId" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -72481,6 +72268,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"uIA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "uII" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -72640,13 +72433,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"uLN" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "uLW" = ( /obj/item/tool/mop{ pixel_x = -6; @@ -72703,6 +72489,20 @@ icon_state = "cargo" }, /area/almayer/living/bridgebunks) +"uNq" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "uNB" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -72780,6 +72580,16 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) +"uPP" = ( +/obj/structure/machinery/door/airlock/almayer/engineering{ + dir = 2; + name = "\improper Atmospherics Wing" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower) "uPW" = ( /obj/structure/bed/chair{ dir = 4 @@ -72836,15 +72646,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"uRr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/engineering_materials, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/engineering_workshop/hangar) "uRs" = ( /obj/structure/machinery/light{ dir = 8 @@ -72904,6 +72705,19 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"uRY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "uSq" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -72934,25 +72748,32 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"uSL" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/sign/safety/stairs{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "uSS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/lockerroom) +"uSW" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4; + layer = 2.7 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) +"uTa" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 12 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/lower_hull/stern) "uTv" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -72982,6 +72803,16 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) +"uTV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/engineering/lower/workshop) "uTY" = ( /obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer{ @@ -73070,6 +72901,12 @@ icon_state = "orange" }, /area/almayer/hull/lower_hull/l_m_s) +"uVc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/workshop) "uVd" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 @@ -73108,12 +72945,6 @@ icon_state = "plating_striped" }, /area/almayer/living/cryo_cells) -"uVR" = ( -/obj/structure/machinery/power/apc/almayer, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "uVV" = ( /obj/structure/machinery/light{ dir = 4 @@ -73188,6 +73019,11 @@ dir = 8 }, /area/almayer/medical/containment/cell) +"uXk" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/engine_core) "uXu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73229,6 +73065,15 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"uYn" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "uZo" = ( /obj/structure/bed/stool, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -73239,6 +73084,12 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) +"uZF" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "uZH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -73252,6 +73103,18 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/repair_bay) +"uZV" = ( +/obj/structure/reagent_dispensers/fueltank/gas/methane{ + anchored = 1 + }, +/obj/structure/sign/safety/fire_haz{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "uZZ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Basketball Court" @@ -73270,6 +73133,16 @@ }, /turf/closed/wall/almayer, /area/almayer/hallways/starboard_umbilical) +"vaZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "vbf" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 @@ -73582,6 +73455,18 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"vgv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) +"vgw" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/engineering/lower) "vgx" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -73783,13 +73668,6 @@ icon_state = "plate" }, /area/almayer/squads/bravo) -"vim" = ( -/obj/structure/sign/safety/water{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/lower_hull/l_a_p) "vit" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" @@ -73877,6 +73755,13 @@ icon_state = "plating" }, /area/almayer/shipboard/port_missiles) +"vjv" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "vjx" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ @@ -73915,6 +73800,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/shipboard/port_missiles) +"vjW" = ( +/obj/structure/reagent_dispensers/watertank{ + anchored = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "vka" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) @@ -74077,6 +73970,19 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) +"vmE" = ( +/turf/open/floor/almayer{ + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower) +"vmJ" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "vmK" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -74169,6 +74075,16 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_m_p) +"vpe" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/airlock/almayer/engineering/reinforced/OT{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/workshop/hangar) "vpn" = ( /turf/open/floor/almayer{ dir = 9; @@ -74328,6 +74244,19 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"vrJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Liasion's Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/corporateliaison) "vrM" = ( /obj/structure/closet/secure_closet{ name = "secure evidence locker"; @@ -74337,6 +74266,15 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/evidence_storage) +"vrR" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Deck Waste Tank Control" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "vrW" = ( /turf/open/floor/almayer{ dir = 8; @@ -74484,6 +74422,15 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/briefing) +"vuD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "vuF" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ access_modified = 1; @@ -74598,6 +74545,17 @@ icon_state = "dark_sterile" }, /area/almayer/living/port_emb) +"vwC" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "vwF" = ( /obj/structure/machinery/light{ dir = 1 @@ -74663,10 +74621,21 @@ icon_state = "cargo_arrow" }, /area/almayer/command/cic) +"vwY" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "vxb" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"vxu" = ( +/obj/structure/machinery/meter, +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "vxG" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -74842,6 +74811,26 @@ "vAG" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/chief_mp_office) +"vAH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hallways/upper/port) +"vAI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "vAQ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/reagent_analyzer{ @@ -74989,10 +74978,26 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) +"vEG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "vEH" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/almayer, /area/almayer/living/briefing) +"vEV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "vFb" = ( /obj/structure/surface/table/almayer, /obj/item/attachable/lasersight, @@ -75004,6 +75009,13 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) +"vFn" = ( +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "vFv" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -75019,6 +75031,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"vFH" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "vGk" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) @@ -75143,6 +75161,22 @@ icon_state = "plate" }, /area/almayer/command/cic) +"vHA" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "vHO" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -75465,13 +75499,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie) -"vNF" = ( -/obj/structure/reagent_dispensers/fueltank/custom, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "vNW" = ( /turf/open/floor/almayer/uscm/directional{ dir = 9 @@ -75484,6 +75511,15 @@ "vOy" = ( /turf/closed/wall/almayer/white/reinforced, /area/almayer/medical/medical_science) +"vON" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "vOP" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -75581,6 +75617,20 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"vPR" = ( +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/closet/secure_closet/guncabinet/red, +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/lower/workshop/hangar) "vQe" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down2"; @@ -75605,6 +75655,10 @@ /obj/item/device/camera, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"vQR" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "vRa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -75649,6 +75703,19 @@ "vRz" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/lower_hull/l_f_p) +"vRR" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/stairs{ + pixel_x = -17 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "vRX" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/medical_diagnostics_manual, @@ -75776,6 +75843,30 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/cryo_cells) +"vTT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) +"vTV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/obj/structure/machinery/door_control{ + id = "OTStore"; + name = "Shutters"; + pixel_y = -24 + }, +/obj/structure/surface/rack, +/obj/item/reagent_container/glass/bucket/janibucket, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "vUb" = ( /obj/effect/landmark/start/marine/alpha, /obj/effect/landmark/late_join/alpha, @@ -75881,6 +75972,16 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"vVI" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "vVW" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecaltopright" @@ -75890,6 +75991,20 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"vVX" = ( +/obj/structure/surface/table/almayer, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/fuelCell, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "vWc" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -76004,15 +76119,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"vWK" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "vXd" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -76022,6 +76128,18 @@ }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) +"vXf" = ( +/obj/structure/reagent_dispensers/pacidtank{ + anchored = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "vXh" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -76035,6 +76153,16 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"vXo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) "vXX" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, @@ -76133,6 +76261,12 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"vZf" = ( +/obj/structure/sign/safety/hvac_old{ + pixel_x = 8 + }, +/turf/closed/wall/almayer, +/area/almayer/engineering/lower) "vZv" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, @@ -76149,6 +76283,25 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull) +"vZU" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/obj/structure/machinery/cell_charger, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "wan" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/brown, @@ -76162,21 +76315,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) -"wba" = ( -/obj/structure/sign/safety/distribution_pipes{ - pixel_x = 32 - }, +"waJ" = ( /obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 + icon_state = "S" }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/area/almayer/hallways/upper/port) "wbh" = ( /obj/structure/machinery/light{ dir = 4 @@ -76186,17 +76333,6 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) -"wbj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/hallways/aft_hallway) "wbu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname/almayer{ @@ -76277,9 +76413,25 @@ icon_state = "silver" }, /area/almayer/command/cic) +"wcm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/lifeboat_pumps/south2) "wcn" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"wct" = ( +/obj/structure/closet/radiation, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "wcN" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -76333,7 +76485,8 @@ "wdo" = ( /obj/structure/machinery/door/airlock/almayer/research/reinforced{ dir = 8; - name = "\improper Containment Airlock" + name = "\improper Containment Airlock"; + closeOtherId = "containment_s" }, /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -76348,6 +76501,21 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) +"wdv" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + name = "\improper Core Hatch" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/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/engineering/lower/engine_core) "wdz" = ( /obj/effect/landmark/start/marine/engineer/charlie, /obj/effect/landmark/late_join/charlie, @@ -76376,6 +76544,14 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/starboard) +"wed" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/belt/utility/full, +/obj/item/clothing/glasses/welding, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/engine_core) "wee" = ( /obj/effect/landmark/start/police, /obj/effect/decal/warning_stripes{ @@ -76434,12 +76610,21 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) -"wft" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"wfn" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/almayer{ + icon_state = "cargo_arrow" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/engineering/lower/workshop/hangar) +"wfx" = ( +/obj/structure/machinery/vending/cola, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "wfB" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -76491,6 +76676,15 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"wgf" = ( +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/stern_point_defense) "wgi" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/main_office) @@ -76557,22 +76751,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"whZ" = ( -/obj/structure/sign/safety/refridgeration{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"wie" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/sorted/tech/circuits, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop) "wiz" = ( /obj/structure/bed/chair{ dir = 4 @@ -76655,6 +76833,21 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"wjE" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hallways/upper/starboard) "wjY" = ( /obj/structure/closet/secure_closet/warrant_officer, /turf/open/floor/wood/ship, @@ -76783,30 +76976,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/execution) -"wlj" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel{ - amount = 30; - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 5 - }, -/obj/structure/sign/safety/fire_haz{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/engine_core) "wlp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -76872,6 +77041,11 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"wmP" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "wmQ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ dir = 2; @@ -76969,6 +77143,16 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"wph" = ( +/obj/item/paper_bin/wy, +/obj/structure/surface/table/woodentable/fancy, +/obj/item/tool/pen/clicky, +/obj/item/tool/pen/clicky, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "wpw" = ( /obj/structure/bed/chair/comfy/ares{ dir = 1 @@ -76998,6 +77182,16 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"wpS" = ( +/obj/structure/pipes/standard/simple/visible, +/obj/structure/sign/safety/nonpress_0g{ + pixel_x = 32 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower) "wqc" = ( /obj/structure/sign/poster{ pixel_y = 32 @@ -77081,6 +77275,15 @@ icon_state = "cargo" }, /area/almayer/hallways/hangar) +"wrX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "wse" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 @@ -77179,7 +77382,8 @@ name = "\improper Brig Medbay"; req_access = null; req_one_access = null; - req_one_access_txt = "20;3" + req_one_access_txt = "20;3"; + closeOtherId = "brigmed" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -77189,21 +77393,21 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/surgery) +"wud" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/engineering/lower/workshop) "wul" = ( /obj/structure/machinery/light/small{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) -"wun" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/lower_engineering) "wup" = ( /obj/structure/supply_drop/echo, /turf/open/floor/almayer, @@ -77220,6 +77424,12 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) +"wuB" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop) "wuH" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, @@ -77255,6 +77465,10 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"wvo" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "wvE" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/almayer_network{ @@ -77438,19 +77652,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) -"wzA" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/structure/machinery/door_control/cl/quarter/backdoor{ - pixel_x = 25 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "wzZ" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ dir = 1; @@ -77489,6 +77690,13 @@ icon_state = "red" }, /area/almayer/shipboard/brig/lobby) +"wBI" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/upper/starboard) "wBY" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -77502,6 +77710,13 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"wCk" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/wooden_tv/ot{ + pixel_y = 4 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "wCs" = ( /obj/structure/machinery/vending/security, /obj/structure/machinery/power/apc/almayer{ @@ -77544,6 +77759,16 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_f_p) +"wDg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "wDm" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -77653,6 +77878,39 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"wEe" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/under/liaison_suit/formal, +/obj/item/clothing/under/liaison_suit, +/obj/item/clothing/under/liaison_suit/outing, +/obj/item/clothing/under/liaison_suit/suspenders, +/obj/item/clothing/under/blackskirt{ + desc = "A stylish skirt, in a business-black and red colour scheme."; + name = "liaison's skirt" + }, +/obj/item/clothing/under/suit_jacket/charcoal{ + desc = "A professional black suit and blue tie. A combination popular among government agents and corporate Yes-Men alike."; + name = "liaison's black suit" + }, +/obj/item/clothing/under/suit_jacket/navy{ + desc = "A navy suit and red tie, intended for the Almayer's finest. And accountants."; + name = "liaison's navy suit" + }, +/obj/item/clothing/under/suit_jacket/trainee, +/obj/item/clothing/under/liaison_suit/charcoal, +/obj/item/clothing/under/liaison_suit/outing/red, +/obj/item/clothing/under/liaison_suit/blazer, +/obj/item/clothing/suit/storage/snow_suit/liaison, +/obj/item/clothing/gloves/black, +/obj/item/clothing/gloves/marine/dress, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/clothing/accessory/blue, +/obj/item/clothing/accessory/red, +/obj/structure/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "wEg" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "agentshuttle"; @@ -78209,12 +78467,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/aft_hallway) -"wQv" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "wQx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -78224,6 +78476,19 @@ icon_state = "orange" }, /area/almayer/hull/upper_hull/u_a_s) +"wQA" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 5 + }, +/obj/structure/machinery/light, +/turf/open/floor/almayer, +/area/almayer/engineering/lower) +"wQD" = ( +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/lower/engine_core) "wRa" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/safety/bulkhead_door{ @@ -78318,6 +78583,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"wSV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "wSX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -78408,6 +78685,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"wUK" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "orangecorner" + }, +/area/almayer/engineering/lower/workshop/hangar) "wUN" = ( /obj/structure/machinery/optable, /turf/open/floor/almayer{ @@ -78464,6 +78747,10 @@ "wVb" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/lower_hull/l_a_s) +"wVt" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "wVy" = ( /obj/structure/window/reinforced{ dir = 8 @@ -78487,6 +78774,14 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) +"wVA" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "wVB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -78532,6 +78827,15 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) +"wWl" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/general_air_control/large_tank_control{ + name = "Lower Mixed Air Control" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "wWm" = ( /turf/open/floor/almayer/research/containment/corner_var1{ icon_state = "containment_corner_variant_2" @@ -78624,6 +78928,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/hangar) +"wYa" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/north2) "wYj" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -78684,16 +78994,6 @@ icon_state = "outerhull_dir" }, /area/almayer/engineering/upper_engineering/port) -"wZy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "wZE" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/book/manual/surgery, @@ -78786,22 +79086,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"xaF" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hallways/aft_hallway) "xaM" = ( /obj/structure/surface/table/almayer, /obj/item/newspaper{ @@ -78868,19 +79152,12 @@ /obj/item/tool/mop, /turf/open/floor/plating, /area/almayer/command/airoom) -"xcp" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_ew_full_cap"; - layer = 3.5 - }, -/obj/structure/platform{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" +"xci" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" }, -/area/almayer/engineering/engine_core) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "xct" = ( /obj/item/reagent_container/food/snacks/wrapped/barcardine, /obj/structure/surface/rack, @@ -78946,15 +79223,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) -"xfi" = ( -/obj/structure/machinery/power/smes/buildable, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "tcomms" - }, -/area/almayer/engineering/engine_core) "xfk" = ( /obj/structure/surface/rack, /obj/item/stack/cable_coil, @@ -79039,12 +79307,6 @@ }, /turf/open/floor/plating/almayer, /area/almayer/hull/lower_hull/l_f_p) -"xgr" = ( -/obj/structure/machinery/alarm/almayer{ - dir = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "xgx" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -79100,6 +79362,12 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"xgZ" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/lower_hull/stern) "xhn" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -79122,7 +79390,8 @@ "xhM" = ( /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ dir = 1; - name = "\improper Brig" + name = "\improper Brig"; + closeOtherId = "brigmaint_n" }, /obj/structure/machinery/door/poddoor/almayer/open{ id = "Brig Lockdown Shutters"; @@ -79165,16 +79434,20 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) -"xiC" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +"xiU" = ( +/obj/structure/machinery/portable_atmospherics/hydroponics, +/obj/item/tool/minihoe{ + pixel_x = -4; + pixel_y = -4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/item/reagent_container/glass/fertilizer/ez, +/obj/item/seeds/ambrosiavulgarisseed, +/obj/item/tool/plantspray/weeds, +/obj/structure/machinery/firealarm{ + pixel_y = 28 }, -/turf/open/floor/almayer, -/area/almayer/engineering/engine_core) +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "xjb" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ access_modified = 1; @@ -79198,17 +79471,6 @@ icon_state = "plating_striped" }, /area/almayer/command/lifeboat) -"xjC" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "xjD" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -79320,26 +79582,20 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"xlX" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_a_s) -"xlY" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/structure/machinery/light{ +"xlO" = ( +/obj/structure/filingcabinet, +/obj/item/folder/yellow, +/obj/structure/machinery/power/apc/almayer{ dir = 1 }, -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/item/storage/toolbox/electrical{ - pixel_y = 8 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, -/area/almayer/engineering/engineering_workshop) +/area/almayer/engineering/lower/workshop/hangar) +"xlX" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_a_s) "xmg" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -79387,25 +79643,6 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) -"xne" = ( -/obj/structure/machinery/door/poddoor/almayer/blended{ - id = "RoomDivider"; - layer = 3.1; - name = "\improper Room Divider" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/corporateliason) -"xnl" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Exterior Airlock"; - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/lower_hull/l_a_p) "xns" = ( /obj/structure/machinery/door_control{ id = "ARES JoeCryo"; @@ -79470,6 +79707,9 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) +"xoj" = ( +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop) "xoJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -79562,6 +79802,18 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"xpZ" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/engineering/lower/engine_core) "xqp" = ( /obj/structure/machinery/body_scanconsole{ dir = 8; @@ -79611,13 +79863,16 @@ }, /turf/closed/wall/almayer, /area/almayer/command/securestorage) -"xqS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 +"xqQ" = ( +/obj/structure/machinery/door/poddoor/almayer/blended{ + id = "RoomDivider"; + layer = 3.1; + name = "\improper Room Divider" }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/corporateliaison) "xrq" = ( /obj/structure/closet/firecloset, /obj/item/clothing/mask/gas, @@ -79644,6 +79899,28 @@ icon_state = "red" }, /area/almayer/shipboard/brig/chief_mp_office) +"xry" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) +"xrI" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower/workshop) "xrN" = ( /obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ @@ -79785,16 +80062,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"xuU" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/reagent_dispensers/fueltank/custom, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/engineering/engine_core) "xuY" = ( /obj/structure/sign/safety/escapepod{ pixel_x = 8; @@ -79901,15 +80168,12 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"xwG" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, +"xwX" = ( /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 9; + icon_state = "red" }, -/area/almayer/hallways/aft_hallway) +/area/almayer/lifeboat_pumps/south2) "xxa" = ( /obj/item/stack/sheet/cardboard{ amount = 50 @@ -79957,6 +80221,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"xxl" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 2" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "xxm" = ( /obj/structure/bed{ can_buckle = 0 @@ -80087,6 +80359,16 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"xyB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/port) "xyE" = ( /obj/structure/toilet{ dir = 1 @@ -80236,6 +80518,12 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"xCf" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliaison) "xCj" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating/plating_catwalk, @@ -80269,6 +80557,16 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_p) +"xDe" = ( +/obj/effect/projector{ + name = "Almayer_Down4"; + vector_x = 19; + vector_y = -104 + }, +/turf/open/floor/almayer{ + allow_construction = 0 + }, +/area/almayer/hallways/upper/port) "xDj" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -80300,6 +80598,23 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"xDF" = ( +/obj/structure/machinery/autolathe, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) +"xDV" = ( +/obj/effect/step_trigger/clone_cleaner, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/hallways/upper/port) "xEz" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/book/manual/surgery, @@ -80427,6 +80742,18 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) +"xHS" = ( +/obj/structure/reagent_dispensers/oxygentank{ + anchored = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/lower/workshop/hangar) "xHW" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -80499,6 +80826,14 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"xIO" = ( +/obj/structure/machinery/power/fusion_engine{ + name = "\improper S-52 fusion reactor 11" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/lower/engine_core) "xIQ" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -80545,14 +80880,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"xJC" = ( -/obj/structure/machinery/door/airlock/almayer/generic/corporate{ - name = "Corporate Liaison's Closet" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/corporateliason) "xJH" = ( /turf/open/floor/almayer{ icon_state = "cargo" @@ -80683,9 +81010,29 @@ allow_construction = 0 }, /area/almayer/hallways/aft_hallway) +"xMl" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "xMs" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/operating_room_two) +"xMz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "xMA" = ( /obj/structure/machinery/computer/med_data, /obj/structure/sign/safety/terminal{ @@ -80712,6 +81059,18 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"xMO" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/upper/starboard) "xMR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -80730,6 +81089,23 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"xNf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower/engine_core) +"xNg" = ( +/obj/structure/pipes/binary/pump/on{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/lower) "xNj" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage{ req_access = null; @@ -80820,6 +81196,14 @@ dir = 4 }, /area/almayer/medical/containment/cell) +"xPq" = ( +/obj/structure/filingcabinet, +/obj/item/folder/yellow, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/lower/workshop/hangar) "xPE" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/plating_catwalk, @@ -81038,6 +81422,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/stern_hallway) +"xTu" = ( +/obj/structure/pipes/vents/scrubber{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/engine_core) "xTH" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -81045,6 +81435,18 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"xTL" = ( +/obj/structure/machinery/cm_vending/gear/executive_officer{ + pixel_y = 30; + density = 0 + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/numbertwobunks) "xTR" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -81084,6 +81486,12 @@ icon_state = "orange" }, /area/almayer/living/port_emb) +"xUa" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliaison) "xUA" = ( /obj/structure/surface/table/almayer, /obj/item/storage/pouch/tools/tank, @@ -81130,6 +81538,18 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"xVe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/hallways/upper/starboard) "xVj" = ( /obj/structure/surface/table/almayer, /obj/item/tool/weldingtool{ @@ -81160,20 +81580,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"xVO" = ( -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/closet/secure_closet/guncabinet/red, -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/engineering_workshop/hangar) "xVS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -81267,6 +81673,16 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/perma) +"xXl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer, +/area/almayer/engineering/lower/workshop/hangar) "xXr" = ( /obj/item/reagent_container/glass/beaker/bluespace, /obj/structure/machinery/chem_dispenser/research, @@ -81274,6 +81690,15 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"xXT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hallways/upper/starboard) "xXW" = ( /obj/structure/bed/chair/comfy/bravo, /turf/open/floor/almayer{ @@ -81425,6 +81850,21 @@ icon_state = "test_floor4" }, /area/almayer/living/officer_study) +"yaF" = ( +/obj/structure/pipes/standard/simple/visible{ + dir = 4 + }, +/obj/structure/sign/safety/fire_haz{ + pixel_y = -32 + }, +/obj/structure/sign/safety/hazard{ + pixel_x = 14; + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/lower) "yaG" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, @@ -81845,13 +82285,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"yiE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer, -/area/almayer/engineering/engineering_workshop/hangar) "yiW" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -81947,6 +82380,12 @@ icon_state = "orange" }, /area/almayer/hull/lower_hull/l_m_s) +"ykI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/lower) "ykP" = ( /obj/structure/filingcabinet{ density = 0; @@ -81974,7 +82413,8 @@ }, /obj/structure/machinery/door/airlock/almayer/research/reinforced{ dir = 8; - name = "\improper Containment Airlock" + name = "\improper Containment Airlock"; + closeOtherId = "containment_s" }, /obj/structure/machinery/door/poddoor/almayer/biohazard/white{ dir = 4 @@ -81990,6 +82430,12 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"ylh" = ( +/obj/structure/closet/radiation, +/turf/open/floor/almayer{ + icon_state = "test_floor5" + }, +/area/almayer/engineering/lower/engine_core) "ylJ" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -104819,7 +105265,7 @@ dum wVW wVW wVW -lgK +jOc aGZ awF cST @@ -105426,7 +105872,7 @@ asl amO aGO awF -aFj +hRk aGY rvA aKO @@ -105629,8 +106075,8 @@ asp amO avj awF -aFo -aGY +xTL +lmA rvA aqm awF @@ -106959,13 +107405,13 @@ gfW bGQ bHB qnd -cmp -cmp -cmp -cmp -cmp -cmp -cmp +lFp +lFp +lFp +lFp +lFp +lFp +lFp vwN oFG nqU @@ -107162,13 +107608,13 @@ gfW rHw wTg aYu -cmp -bTz -apV -are -apV -djM -cmp +lFp +ddw +gHl +kjD +gHl +qoL +lFp mjR oFG nqU @@ -107365,13 +107811,13 @@ gfW aZZ aYC aZZ -cmp -apM -eGs -bWM -bWM -bWS -cmp +lFp +mgd +wfn +aId +aId +poA +lFp mjR bVR oeo @@ -107568,20 +108014,20 @@ gfW bLT cbQ ccq -cmp -apO -bWM -bWM -bWM -gQl -asE -asE -asE -asE -asE -asE -asE -asE +lFp +lGg +aId +aId +aId +jFx +nmY +nmY +nmY +nmY +nmY +nmY +nmY +nmY clO gUv vRz @@ -107771,20 +108217,20 @@ gfW bGT bHH bGT -cmp -apP -hKQ -bWM -bWM -fps -asE -asB -atA -bWM -aur -auI -auY -asE +lFp +xDF +eRS +aId +aId +tMc +nmY +ouw +jDP +aId +xHS +tEd +vjW +nmY caE pdk vRz @@ -107974,20 +108420,20 @@ gfW bUe cbR ccr -hcC -lEW -aqd -bWM -bWM -ask -asE -asE -asE -atJ -aus -aus -ava -asE +sHm +ddM +hZe +aId +aId +rNK +nmY +nmY +nmY +dZu +dKK +dKK +xry +nmY clP ovF yhQ @@ -108178,19 +108624,19 @@ iRx iEb bHa apm -jUn -avT -bWM -bWM -aso -asv -xVO -asE -bWM -auw -auM -avb -asE +gJO +pwG +aId +aId +wUK +dDM +vPR +nmY +aId +vXf +qGw +uZV +nmY scI oed yhQ @@ -108381,19 +108827,19 @@ buH iEb buH app -uku -aqD -bWM -arE -ast -pjP -atd -uku -bWM -aux -aus -ava -asE +ruL +qUZ +aId +hJI +vwY +uIA +acd +ruL +aId +kyh +dKK +xry +nmY suT ftl yhQ @@ -108584,19 +109030,19 @@ buH iEb buH app -uku -aqT -bWM -gwW -dvF -bWM -ate -uku -bWM -auC -auN -dxL -asE +ruL +gsd +aId +oqt +wCk +aId +lab +ruL +aId +hgD +pSQ +dOe +nmY tqk iBG yhQ @@ -108787,19 +109233,19 @@ oLv iEb buH app -uku -aqW -bWM -arZ -mkh -bWM -ath -asE -atZ -auE -auP -wZy -asE +ruL +xPq +aId +vjv +gOR +aId +vTV +nmY +pdy +smW +prP +xXl +nmY iTz vfJ yhQ @@ -108990,19 +109436,19 @@ buH iEb buH eDG -cmp -ard -bWM -gwW -saB -bWM -ati -atE -aua -gwW -xqS -yiE -avk +lFp +xlO +aId +oqt +iXA +aId +oZy +naw +npA +oqt +oEy +qmY +tUN wlp vXX yhQ @@ -109193,19 +109639,19 @@ bFu mKY hvp mWw -apT -apA -arC -asi -cSN -asy -atw -atF -aud -auF -ati -cUb -asE +vpe +dxT +olN +jDk +uNq +tOu +qyK +mkn +tHQ +uxX +oZy +orN +nmY luu gNx yhQ @@ -109404,11 +109850,11 @@ yhQ yhQ yhQ yhQ -auh -gwW -ati -lBY -asE +iZE +oqt +oZy +qhD +nmY wlp oDf yhQ @@ -109607,11 +110053,11 @@ azy azy azy yhQ -aup -gwW -kiF -ave -asE +kJH +oqt +qlm +kRD +nmY scI oDf yhQ @@ -109810,11 +110256,11 @@ azy azy azy yhQ -uRr -bWw -bWM -avi -asE +euW +rOI +aId +hQP +nmY suT oed yhQ @@ -110013,11 +110459,11 @@ azy azy azy yhQ -pGN -bWM -bWM -avi -asE +sJI +aId +aId +hQP +nmY scI oed bVU @@ -110216,11 +110662,11 @@ azD azD azD yhQ -djp -bWM -bWM -avi -asE +ePN +aId +aId +hQP +nmY nyz tVB bSf @@ -112344,9 +112790,9 @@ iBt iBt iBt iUZ -awE -pQu -kmL +pBG +rLp +ttX qVM csz qVM @@ -112547,9 +112993,9 @@ iBt iBt iBt iBt -awE +pBG jZU -rjH +jAe qVM vGk qVM @@ -112750,9 +113196,9 @@ iBt iBt iBt iBt -awE -cvj -iiz +pBG +cVq +nOb qVM oLw qVM @@ -112953,9 +113399,9 @@ iBt iBt iBt iBt -awE -aGt -ijn +pBG +dzp +ngV qVM vGk vGk @@ -113151,14 +113597,14 @@ ybf aii avj qVM -awE -awE -awE +pBG +pBG +pBG nec -awE -awE -xJC -awE +pBG +pBG +saL +pBG qVM qVM qVM @@ -113354,14 +113800,14 @@ ahM kSJ avj cGr -awE -sbZ -wQv -rne -guC -ecQ -whZ -awE +pBG +hqJ +cHG +nQA +wph +pyx +lKO +pBG lEf gel gel @@ -113557,14 +114003,14 @@ bYe bnD aWH aYn -hHM -bXv -bXv -bph -iHC -rne -bYj -xne +qvL +wmP +wmP +dRP +eFY +nQA +eAN +xqQ rfb cXF rLU @@ -113760,14 +114206,14 @@ qLK akU avj eAT -awE -bXE -bYj -btz -bsc -iaj -bYj -xne +pBG +lvb +eAN +jVg +rGU +xCf +eAN +xqQ rLv bHk vZw @@ -113962,15 +114408,15 @@ vOy ayT akU avj -awE -awE -xgr -bYj -eUR -haI -nDh -bYj -xne +pBG +pBG +hEl +eAN +fQS +oGY +neT +eAN +xqQ cNH vzp vZw @@ -114165,15 +114611,15 @@ kgs ayT aii avj -lFj -aWS -bYj -bYj -btz -rne -rne -bYj -xne +bvX +ojQ +eAN +eAN +jVg +nQA +nQA +eAN +xqQ rfb bHk vZw @@ -114368,15 +114814,15 @@ kgs ayT aii avj -lFj -aZJ -baD -baD -tsH -bqw -bqw -hiB -xne +bvX +kVV +vQR +vQR +epJ +jML +jML +fnH +xqQ rLv pRy wwW @@ -114571,15 +115017,15 @@ mmN ayT aii avj -lFj -fAN -dpV -hYN -bqo -bse -bvc -djL -awE +bvX +maO +lPm +iZV +fdx +cuq +edn +fVF +pBG qWR wJH wJH @@ -114774,16 +115220,16 @@ vOy aTL aii avm -awE -awE -awE -awE -ojv -awE -awE -awE -awE -awE +pBG +pBG +pBG +pBG +qRr +pBG +pBG +pBG +pBG +pBG qVM qVM qVM @@ -114977,16 +115423,16 @@ vOy ayT akU avj -gBt -baa -hED -jYA -bqo -awE -tnm -dhQ -qyz -awE +fKh +gQk +trU +oNY +fdx +pBG +eNw +ppF +fiE +pBG vGk vGk gYS @@ -115166,7 +115612,7 @@ mSK mSK vOy vOy -ylc +ccc wKP ylc vOy @@ -115180,16 +115626,16 @@ vOy atV akU avj -gBt -bac -ikE -bYj -bqo -aRD -aGt -byp -aGt -awE +fKh +iuG +sOv +eAN +fdx +gAk +dzp +rMT +dzp +pBG vGk qVM qVM @@ -115383,16 +115829,16 @@ vOy vIN aii avj -gBt -ilv -rne -rne -gEK -eHj -bvl -byq -maq -awE +fKh +ubI +nQA +nQA +jvM +pLa +nTR +gDp +rwq +pBG vGk qVM riM @@ -115586,16 +116032,16 @@ vOy ayT aii avj -awE -ceo -rne -rne -wft -awE -awE -awE -awE -awE +pBG +mGT +nQA +nQA +vEG +pBG +pBG +pBG +pBG +pBG vGk xCX vGk @@ -115789,16 +116235,16 @@ amD ajr aii avm -awE -orw -rne -rne -fAo -awE -bhM -wQv -bBi -awE +pBG +bfO +nQA +nQA +jDO +pBG +aYH +cHG +wEe +pBG ieH qVM tUI @@ -115992,16 +116438,16 @@ akT amC bKe avj -gBt -eYW -rne -rne -wft -emO -bYj -bYj -bYj -awE +fKh +eYn +nQA +nQA +vEG +mlP +eAN +eAN +eAN +pBG csz qVM qVM @@ -116195,16 +116641,16 @@ akU abg abg avj -gBt -aSP -rne -rne -wft -awE -eCG -qJU -igp -awE +fKh +wvo +nQA +nQA +vEG +pBG +skR +oxc +nBi +pBG hoX qVM oks @@ -116398,16 +116844,16 @@ aii aow hee ioX -gBt -aLQ -bYj -bYj -wft -awE -awE -awE -awE -awE +fKh +sSP +eAN +eAN +vEG +pBG +pBG +pBG +pBG +pBG csz iid csz @@ -116601,16 +117047,16 @@ aii avj qVM qVM -awE -ntr -bYj -bYj -wft -bvU -dTc -lOl -kAt -awE +pBG +aGs +eAN +eAN +vEG +vrJ +tQM +kOH +hIs +pBG ieH qVM dYK @@ -116804,16 +117250,16 @@ amO avj qVM csz -awE -qMe -jdF -bYj -wzA -awE -bzs -gbQ -eKK -awE +pBG +xiU +xUa +eAN +mLe +pBG +pZH +nnL +lgt +pBG oLw qVM jmR @@ -117007,16 +117453,16 @@ akU avj qVM csz -awE -awE -awE -csp -awE -awE -awE -awE -awE -awE +pBG +pBG +pBG +qIx +pBG +pBG +pBG +pBG +pBG +pBG vGk qVM qVM @@ -118173,19 +118619,19 @@ aaa aaa aaa lYA -aaG -aaG -aaI -abC -abC -abC -abC -abC -abC -abC -jUW -tgS -ady +ojH +ojH +taV +ouf +ouf +ouf +ouf +ouf +ouf +ouf +aLc +wBI +hGG aar aIZ aIZ @@ -118239,19 +118685,19 @@ iBt iBt iBt qVM -aCX -tgS -uSL -asx -asx -asx -asx -asx -asx -asx -aLX -bbp -bbp +vmJ +elv +vRR +qXS +qXS +qXS +qXS +qXS +qXS +qXS +hXX +xDe +xDe czu aaa aaa @@ -118376,19 +118822,19 @@ aaa aaa aaa lYA -aaG -aaG -aaI -abC -abC -abC -abC -abC -abC -abC -acg -bAF -ady +ojH +ojH +taV +ouf +ouf +ouf +ouf +ouf +ouf +ouf +sdf +cRL +hGG aar aar aar @@ -118442,19 +118888,19 @@ ayo qVM qVM qVM -aEJ -bAF -aKB -asx -asx -asx -asx -asx -asx -asx -aLX -bbp -bbp +cna +nzD +xDV +qXS +qXS +qXS +qXS +qXS +qXS +qXS +hXX +xDe +xDe czu aaa aaa @@ -118579,30 +119025,30 @@ aaa aaa aaa lYA -aaG -aaG -aaI -abC -abC -abC -aaJ -abC -abC -abC -act -ajS -afq -lzW -buk -fgF -bYP -lBi -acH -cwd -bYy -tOd -adT -kqf +ojH +ojH +taV +ouf +ouf +ouf +ptA +ouf +ouf +ouf +fTj +jOD +oOw +cPK +oXt +loz +sAz +jZC +uyd +ito +cuN +cQW +lQa +wjE aeU bUE bYe @@ -118634,30 +119080,30 @@ bUE bYe nBW bWP -tSc -spT -fHC -dHr -bYQ -cwd -lBi -qmt -ayG -saW -tMf -ajq -ajS -dGw -asx -asx -asx -aKJ -asx -asx -asx -aLX -bbp -bbp +qtj +fpA +qUx +gUS +wrX +kMp +jkB +hlT +qNI +hRc +tqO +kdn +nyS +qec +qXS +qXS +qXS +jpn +qXS +qXS +qXS +hXX +xDe +xDe czu aaa aaa @@ -118792,20 +119238,20 @@ lYA lYA lYA lYA -aey -azY -azY -adi -atC -abx -acC -abx -abx -abx -adi -abx -acC -atC +dho +wVt +wVt +jlc +ngE +kbv +dTn +kbv +kbv +kbv +jlc +kbv +dTn +ngE abg abg abg @@ -118837,20 +119283,20 @@ aZE aZE aZE aZE -xwG -chu -aZE -cgI -abt -aZE -aZE -chu -aZE -xwG -cgI -agl -agN -ahH +usL +gsC +cMz +qLg +aXD +cMz +cMz +gsC +cMz +usL +qLg +iup +ryY +cnn czu czu czu @@ -118995,20 +119441,20 @@ lYA bRK aao aiv -aaW -pjb -abM -iCe -cLp -cZZ -ccY -aJs -cdu -aaw -abl -jUs -abu -xaF +bGa +dVn +vwC +fbR +gcq +xci +eON +gxn +vEV +xMz +sdv +xMO +wDg +vHA aaL aJs bYe @@ -119040,20 +119486,20 @@ cjo bYe kSN aTQ -uGo -abl -wba -abu -aaw -wbj -aJs -cdu -ayH -uGo -eoT -aGR -pjb -aKC +kfo +rCl +ePM +pzd +oWx +nNx +pMA +ncT +gHh +kfo +dbc +cNM +ofU +njk xCX vGk hoX @@ -119204,9 +119650,9 @@ aar aar aar aar -acG -abg -caF +hZE +sVV +oON aar aar lIl @@ -119248,9 +119694,9 @@ xeG qVM qVM qVM -acG -abg -caF +mKi +sfT +hGV qVM qVM qVM @@ -119407,9 +119853,9 @@ aIZ aIZ aLC aar -bWs -abg -caF +xVe +sVV +mbx aar vUk sTB @@ -119451,9 +119897,9 @@ vGk vGk adI qVM -acG -abg -caF +aDS +sfT +hGV qVM iBt iBt @@ -119610,9 +120056,9 @@ aIZ aIZ aIZ aar -acO -aJs -cbN +hHe +gxn +ioH aar fQY aap @@ -119654,9 +120100,9 @@ csz vGk xHG qVM -aJd -aJs -cbN +uRY +pMA +waJ qVM iBt iBt @@ -119813,9 +120259,9 @@ aIZ aIZ aIZ aba -pNQ -abx -hTy +aGA +kbv +fZo aar thR aao @@ -119857,9 +120303,9 @@ vGk vGk csz qVM -jSY -abx -hLO +mzs +aPT +xyB ceD iBt iBt @@ -120016,9 +120462,9 @@ aIZ aIZ aIZ aar -acP -bUE -qFQ +mAF +ilq +pjj aar xtQ aap @@ -120060,9 +120506,9 @@ csz vGk csz qVM -sah -bUE -cbO +gfN +efj +sxE qVM iBt iBt @@ -120219,9 +120665,9 @@ aIZ aIZ aIZ aar -acG -abx -caF +hZE +kbv +mbx aar com aap @@ -120263,9 +120709,9 @@ vzl vGk csz qVM -acG -abx -caF +aDS +aPT +hGV qVM iBt iBt @@ -120422,9 +120868,9 @@ aar aar aar aar -oPD -abx -lCz +laM +kbv +nkH aar tAV sTB @@ -120466,9 +120912,9 @@ qVM xeG qVM qVM -oPD -abx -lCz +oIa +aPT +bqY qVM qVM qVM @@ -120625,9 +121071,9 @@ aIZ aIZ aLC aar -acG -abx -caF +hZE +kbv +mbx aar lIl aar @@ -120669,9 +121115,9 @@ xWF vGk yji qVM -acG -abx -caF +aDS +aPT +hGV qVM iBt iBt @@ -120782,7 +121228,7 @@ vra cmd cmh wAR -aLB +bGb uaa uaa uaa @@ -120828,9 +121274,9 @@ aIZ aIZ aIZ aar -acO -aJs -arJ +hHe +gxn +gKd aar aao aao @@ -120872,9 +121318,9 @@ csz vGk csz qVM -acO -aJs -arJ +lCL +pMA +gcm qVM iBt iBt @@ -120985,7 +121431,7 @@ vra ajX ajX ajX -aLB +bGb uaa uaa uaa @@ -121031,9 +121477,9 @@ aIZ aIZ aIZ bWh -jSY -abx -hTy +hmj +kbv +fZo aar hLB aao @@ -121075,9 +121521,9 @@ csz vGk csz qVM -jSY -abx -hLO +mzs +aPT +xyB cix iBt iBt @@ -121234,9 +121680,9 @@ aIZ aIZ aIZ aar -acP -bUE -qFQ +mAF +ilq +pjj aar xYe kZH @@ -121278,9 +121724,9 @@ csz vGk xHG qVM -sah -bUE -cbO +gfN +efj +sxE qVM iBt iBt @@ -121437,9 +121883,9 @@ aIZ aIZ aIZ aar -aJa -abg -ccf +xXT +sVV +tkR aar mko uaZ @@ -121481,9 +121927,9 @@ csz yji uso qVM -aJa -abg -ccf +nme +sfT +vAH qVM iBt iBt @@ -121640,9 +122086,9 @@ aar aar aar aar -eQi -atL -kOG +ehL +kyr +chb aar aar aar @@ -121684,9 +122130,9 @@ qVM qVM qVM qVM -eQi -atL -pef +tCx +ncG +tZg qVM qVM qVM @@ -121843,9 +122289,9 @@ aap aap ahg aiv -lMM -abg -lCS +cSa +aeA +sjz aiv ahg aap @@ -121887,9 +122333,9 @@ vGk aip vzl xCX -bWC -abg -sSR +wcm +lJY +guo xCX weU csz @@ -122046,9 +122492,9 @@ aar aar aar aar -bWE -aJs -mXU +wYa +nBK +mzS aar aar aar @@ -122090,9 +122536,9 @@ qVM qVM qVM qVM -bWE -aJs -mXU +nuM +uHr +xwX qVM qVM qVM @@ -130681,7 +131127,7 @@ aQL aQL ksp rou -rou +ksp aQL aLG aZl @@ -131099,13 +131545,13 @@ bHt bJi bKE bKE -bkZ -bpX -bpX -bpX -bpX -bpX -bkZ +oJk +lNR +lNR +lNR +lNR +lNR +oJk bWV jkd bYE @@ -131297,23 +131743,23 @@ hlz hlz rdK rdK -aVl -bHu -aVl -bkZ -bkZ -bkZ -bpY -brw -bqf -buK -bvI -bkZ -bkZ -bkZ -aVl -bZA -aVl +sqg +rPQ +sqg +oJk +oJk +oJk +oRW +mxT +pHc +eVE +jMy +oJk +oJk +oJk +sqg +mgu +sqg haq haq cAH @@ -131500,23 +131946,23 @@ hlz eFH eFH rdK -bEU -bjl -bJj -bkZ -bmM -cEx -bpZ -brx -boH -jnf -hfO -bxo -byz -bkZ -bEV -bCI -ccW +fcS +gdJ +oyR +oJk +nHL +wfx +ijf +osI +qXk +fie +tRs +pqP +fqC +oJk +ppn +nAY +cjt haq pFM hzV @@ -131694,37 +132140,37 @@ wVb wVb wVb wVb -aUx -aVl -aVl -aVl -bxE -aVl +vgw +sqg +sqg +sqg +mpP +sqg rdK iDm rdK -bEU -bjl -bJj -bkZ -bmN -boI -boI -brx -boH -jnf -shb -boI -byA -bkZ -bBc -bCI -ccW +fcS +gdJ +oyR +oJk +uZF +xoj +xoj +osI +qXk +fie +pUj +xoj +sfV +oJk +pkA +nAY +cjt haq vuR haq -aVl -bxE +sqg +mpP aep aep aep @@ -131897,37 +132343,37 @@ aaa aad aag aag -aUx -pXj -btm -aVl -bxF -byJ -aVl +vgw +wct +hqc +sqg +rwB +lKM +sqg vsV rdK -bEU -bjl -ccW -bKO -bvL -bvL -bvL -bPR -bRi -bSk -bvL -bvL -bvL -bKO -bEU -bCI -uVR +fcS +gdJ +cjt +pRZ +ish +ish +ish +kzC +jUl +wud +ish +ish +ish +pRZ +fcS +nAY +jOE haq mHR -aVl -ccx -bBm +sqg +qEL +vmE ggQ afk afk @@ -132100,37 +132546,37 @@ aaa aad aag aag -aUx -pXj -btm -aVl -bxG -byK -aVl +vgw +wct +hqc +sqg +eKy +wQA +sqg hlz rdK -wun -bht -pfh -pWf -bmP -pop -lJa -bPZ -bRj -bSl -smr -nel -bQu -bRu -bYI -pIf -bJk +uYn +jaM +oXM +kvf +rDy +uVc +bxN +cYN +nhr +vuD +skL +dTr +gfG +mkP +muQ +ojh +nxx haq cAH -aVl -byQ -ccR +sqg +gEC +skC aWZ bLx bMJ @@ -132303,37 +132749,37 @@ aaa aae aah aah -aUx -uLN -btm -btm -bxH -byL -aVl -bxE -aVl -vWK -bjl -ccW -bKO -bqa -bqa -aaj -bQa -bRk -bSm -bvK -bUI -bqa -bKO -bEU -bCI -ccW -aVl -bxE -aVl -ccy -diF +vgw +utn +hqc +hqc +eqL +vxu +sqg +mpP +sqg +qWQ +gdJ +cjt +pRZ +wuB +wuB +qAs +dIH +nKP +uTV +sHx +vgv +wuB +pRZ +fcS +nAY +cjt +sqg +mpP +sqg +efC +yaF aep aep aep @@ -132506,37 +132952,37 @@ 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 +vgw +noP +hqc +hqc +xNg +spH +sqg +aFe +sqg +scE +gdJ +acy +oJk +jRc +xoj +eKQ +osI +xrI +fie +fsR +lkV +quS +oJk +bcM +nAY +mFP +sqg +pCq +sqg +gEC +unx ggQ bLy bLy @@ -132709,37 +133155,37 @@ aaa aaa aaa aaa -aUx -sXV -cWt -cWt -pFA -byN -bAf -bBq -bAf -bje -bhw -ccW -bkZ -bkZ -wie -boI -brx -bNZ -jnf -boI -gXq -bkZ -bkZ -hdg -bCJ -bEj -cce -cbH -cce -ccz -ccT +vgw +gOC +nou +nou +dQA +sKM +uuD +eYD +uuD +bSH +gLD +cjt +oJk +oJk +lwp +xoj +osI +rYh +fie +xoj +ehc +oJk +oJk +gNO +vTT +heS +uPP +hlH +uPP +wVA +hJg aWZ bLz bMK @@ -132916,33 +133362,33 @@ dKL aep aep aep -bkt -btm -fxu -bBp -fxu -bFc -bjl -bjd -gXY -bkZ -xlY -boI -brx -bNZ -jnf -boI -kqc -bkZ -tmA -bfs -bCI -cay -fxu -cbG -fxu -ccA -bZE +ikv +hqc +vZf +ykI +vZf +aEo +gdJ +trh +hgo +oJk +sVT +xoj +osI +rYh +fie +xoj +bmp +oJk +haD +jTB +nAY +iUm +vZf +bYF +vZf +fiQ +pgN aep aep aep @@ -133119,33 +133565,33 @@ dKL afk aWo aWZ -byg -byO -aVl -bxE -aVl -bFe -bjl -bjg -ccW -bKO -boI -boI -brx -tzz -jnf -boI -boI -bKO -bEU -bYM -cxe -caz -aVl -bxE -aVl -ccB -ccV +iyF +vrR +sqg +mpP +sqg +dYC +gdJ +elx +cjt +pRZ +xoj +xoj +osI +xrI +fie +xoj +xoj +pRZ +fcS +hMG +qQy +erF +sqg +mpP +sqg +fLu +hEw aWZ bLA afk @@ -133322,33 +133768,33 @@ dKL aVo aWp aWZ -byh -byQ -aVl -hlz -rdK -bFf -aVp -ddj -sfU -fWT -bKT -bKT -ect -lrs -put -bKT -bKT -bWZ -kJC -mbn -mUZ -caA -haq -cAH -aVl -ccC -ccW +qAB +gEC +sqg +rEb +qXR +kkW +iwf +uFg +rEm +rnF +oFm +oFm +fVo +jUF +nxb +oFm +oFm +glH +vXo +gWu +xMl +lft +qXR +rEb +sqg +siN +cjt ggQ afk bML @@ -133525,33 +133971,33 @@ dKL afk afk ggQ -aAb -byR -aVl -eFH -rdK -bFg -bHv -bjg -bld -bkZ -boN -gUI -brC -bsZ -buQ -mOr -kFq -bkZ -bzP -bjg -gJq -caB -haq -vuR -aVl -ccD -ccX +pYS +ivS +sqg +jqT +qXR +hbs +vZU +elx +jnI +oJk +eIT +dPQ +ams +eni +nri +gMd +toO +oJk +nYn +elx +mDL +fSF +qXR +jqT +sqg +lvh +iks aWZ bLC afk @@ -133728,33 +134174,33 @@ dKL dKL aep aep -byk -byQ -aVl -eFH -rdK -bhB -bhB -uEc -bKU -bhB -gir -bpX -bpX -bpX -bpX -bpX -gir -bhB -bXP -bjn -bhB -bhB -haq -mHR -aVl -ccE -bjd +mkL +gEC +sqg +jqT +qXR +hsy +hsy +baJ +kbw +hsy +ldc +lNR +lNR +lNR +lNR +lNR +ldc +hsy +foC +kph +hsy +hsy +qXR +oGF +sqg +wWl +trh aep aep dKL @@ -133928,39 +134374,39 @@ aaa aaa aaa bdH -aUx -bvQ -bwj -byl -bzj -aVl -eFH -eFH -bhB -bfA -bLe -bKV -bhB -fEg -bOl -bOm -bRr -bXt -bUX -szm -bhB -bXQ -bLe -psp -bhB -cAH -vuR -aVl -bzj -cHO -cdr -cer -aUx +vgw +usZ +wpS +fZA +fEe +sqg +jqT +jqT +hsy +shL +uXk +mlF +hsy +hgV +osM +ghX +dTS +okQ +xIO +nxZ +hsy +tos +uXk +tkn +hsy +rEb +jqT +sqg +fEe +nqW +kfI +vFH +vgw aaa aaa aaa @@ -134131,39 +134577,39 @@ aaa aaa aaa bdH -aUx -aWr -aUx -aUx -aUx -aUx -hlz -hlz -bhB -bHy -bLe -bKV -bMB -bOc -plE -plE -plE -plE -plE -bxs -bMB -bXQ -bLe -bHy -bhB -kpX -lGr -aUx -aUx -aUx -aUx -aWr -aUx +vgw +ckW +vgw +vgw +vgw +vgw +rEb +rEb +hsy +wed +uXk +mlF +jWb +unZ +aPU +aPU +aPU +aPU +aPU +fbu +jWb +tos +uXk +wed +hsy +pJt +hAY +vgw +vgw +vgw +vgw +ckW +vgw aaa aaa aaa @@ -134339,29 +134785,29 @@ aah aag aag aag -wVb -iDm -eFH -bhB -ozi -bJF -bKW -bXR -bUJ -bTi -aut -aut -aut -xjC -fxW -bXl -bzU -bYO -bZD -bhB -vim -woG -vTK +gXZ +gBM +jqT +hsy +npn +bVN +oGJ +xpZ +llK +mVr +mZL +mZL +mZL +gSa +coH +oTO +uqh +iAE +gNG +hsy +nNC +iuA +gXZ aag aag aag @@ -134542,29 +134988,29 @@ bdH aad aag aag -wVb -hlz -hlz -bhB -bJQ -bLe -usw -bMF -blo -ktO -bUW -bMQ -bXr -lfQ -blo -bXm -bXS -bLe -bJR -bhB -cAH -cAH -vTK +gXZ +rEb +rEb +hsy +cGe +uXk +rae +jIV +pzM +mtZ +bqP +fyd +qYo +fQn +pzM +nac +xNf +uXk +fbH +hsy +rEb +rEb +gXZ aag aag ajZ @@ -134745,29 +135191,29 @@ bdH aad aag aag -wVb -eFH -eFH -bhB -bHz -bJI -bKW -bEn -rFu -pQq -bQe -bTl -bSt -buW -bUL -bXn -bzU -bYS -bJR -bhB -cAH -cAH -vTK +gXZ +jqT +jqT +hsy +ebt +nCn +oGJ +uSW +kzO +vaZ +kYL +dLi +sCV +rjO +suY +pdK +uqh +pJr +fbH +hsy +rEb +rEb +gXZ aag aag ajZ @@ -134948,29 +135394,29 @@ bdH aad aag aag -wVb -hlz -eFH -bhB -bhB -hxp -bKV -bLe -laj -xjC -ktO -bPd -lfQ -ddK -qXx -bLe -bXQ -bJR -bhB -bhB -vuR -mHR -vTK +gXZ +rEb +jqT +hsy +hsy +vVX +mlF +uXk +hmw +gSa +mtZ +nbv +fQn +wSV +ulp +uXk +tos +fbH +hsy +hsy +jqT +oGF +gXZ aag aag ajZ @@ -135151,29 +135597,29 @@ bdH aad aag aag -wVb -hlz -hlz -hlz -bhB -bYV -bKV -bhB -bOh -lfQ -ktO -bOk -lfQ -ktO -bnc -bhB -bXU -bYV -bhB -jcK -cAH -cAH -vTK +gXZ +rEb +rEb +rEb +hsy +hwd +mlF +hsy +kag +fQn +mtZ +xxl +fQn +mtZ +dKc +hsy +beL +hwd +hsy +cGI +rEb +rEb +gXZ aag aag ajZ @@ -135354,29 +135800,29 @@ bdH aad aag aag -wVb -eFH -eFH -eFH -bhB -bJK -bLc -bhB -bUY -lfQ -brJ -plE -buW -ktO -bMW -bhB -bXV -bJK -bhB -rbp -vuR -rbp -vTK +gXZ +jqT +jqT +jqT +hsy +ylh +opH +hsy +kJn +fQn +qoR +aPU +rjO +mtZ +rDB +hsy +iEw +ylh +hsy +xgZ +jqT +xgZ +gXZ aag aag ajZ @@ -135557,29 +136003,29 @@ bdH aad aag aag -wVb -wVb -rVo -hlz -bhB -bJK -bKV -bhB -bXu -boU -rFu -blo -riQ -okz -bMV -bhB -bXQ -bJK -bhB -kpX -emG -vTK -vTK +gXZ +gXZ +nTi +rEb +hsy +ylh +mlF +hsy +nFM +eZp +kzO +pzM +hip +ptZ +urW +hsy +tos +ylh +hsy +pJt +uTa +gXZ +gXZ aag aag ajZ @@ -135761,27 +136207,27 @@ 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 +gXZ +pJt +hAY +hsy +hsy +suJ +hsy +hsy +gLG +khf +bhI +iIj +hQw +hsy +hsy +wdv +hsy +hsy +fiI +jqT +gXZ aag aag aag @@ -135964,27 +136410,27 @@ aad aag aag aag -wVb -hlz -moE -bhB -bJM -bLd -fir -jfM -bQi -bMM -bSy -bMM -bSx -hbZ -ebJ -xiC -fYG -bhB -vuR -woG -vTK +gXZ +rEb +pRY +hsy +uiC +sIr +jCn +kkk +kjO +pAm +gzq +pAm +eAI +tdv +rlc +hfb +hUk +hsy +jqT +iuA +gXZ aag aag aag @@ -136167,27 +136613,27 @@ aad aag aag aag -wVb -eFH -eFH -bhB -bJN -bLd -bMM -bMM -bMM -bMM -bSy -bMM -bMM -bMM -bMM -bLd -bYU -bhB -jdy -cAH -vTK +gXZ +jqT +jqT +hsy +thc +sIr +pAm +pAm +pAm +pAm +gzq +pAm +pAm +pAm +pAm +sIr +fZl +hsy +nYC +rEb +gXZ aag aag aag @@ -136370,27 +136816,27 @@ aad aag aag aag -wVb -hlz -hlz -bhB -bJP -mzO -bMN -bMN -fcI -bSy -bSy -bSy -dNx -bMN -bMN -tdx -bYW -bhB -vuR -ydx -vTK +gXZ +rEb +rEb +hsy +tIe +uAK +bVv +bVv +xTu +gzq +gzq +gzq +ern +bVv +bVv +nJa +jPd +hsy +jqT +htP +gXZ aag aag aag @@ -136573,27 +137019,27 @@ aad aag aag aag -wVb -eFH -eFH -bhB -hrX -fIx -bMM -bMM -hgt -bMM -bMM -bMM -bMM -bMM -bMM -bYU -gNd -bhB -cAH -cAH -vTK +gXZ +jqT +jqT +hsy +dPH +sov +pAm +pAm +nAd +pAm +pAm +pAm +pAm +pAm +pAm +fZl +oex +hsy +rEb +rEb +gXZ aag aag aag @@ -136776,27 +137222,27 @@ aad aag aag aag -wVb -hlz -hlz -bhB -sgM -fIx -bMM -bMM -bhB -kvz -kvz -kvz -bhB -kGX -bMM -bYU -upe -bhB -vuR -vuR -vTK +gXZ +rEb +rEb +hsy +rBv +sov +pAm +pAm +hsy +nDa +nDa +nDa +hsy +gDH +pAm +fZl +snt +hsy +jqT +jqT +gXZ aag aag aag @@ -136979,27 +137425,27 @@ aad aag aag aag -wVb -eFH -eFH -bhB -svd -bLf -dCS -bMM -bhB -bQk -xfi -bSG -bhB -bMM -dCS -tLy -svd -bhB -cAH -cAH -vTK +gXZ +jqT +jqT +hsy +fqW +qYq +mQn +pAm +hsy +kiG +aSk +pUv +hsy +pAm +mQn +wQD +fqW +hsy +rEb +rEb +gXZ aag aag aag @@ -137182,27 +137628,27 @@ aad aag aag aag -wVb -hlz -eFH -bhB -bhB -bhB -bhB -cZJ -bhB -bhB -bhB -bhB -bhB -cZJ -bhB -bhB -bhB -bhB -vuR -vuR -vTK +gXZ +rEb +jqT +hsy +hsy +hsy +hsy +hNP +hsy +hsy +hsy +hsy +hsy +hNP +hsy +hsy +hsy +hsy +jqT +jqT +gXZ aag aag aag @@ -137385,27 +137831,27 @@ aad aag aag aag -wVb -hlz -eFH -fKg -tce -bhB -heg -lfQ -blo -vNF -xuU -vNF -blo -ktO -heg -bhB -osE -gai -cAH -cAH -vTK +gXZ +rEb +jqT +lhW +lAU +hsy +haz +fQn +pzM +qra +tqE +qra +pzM +mtZ +haz +hsy +lAU +qqW +rEb +rEb +gXZ aag aag aag @@ -137588,27 +138034,27 @@ aad aag aag aag -wVb -hlz -hlz -hlz -hlz -bhB -heg -mKX -aut -aut -aut -aut -aut -riA -heg -bhB -pFP -cAH -cAH -cAH -vTK +gXZ +rEb +rEb +rEb +rEb +hsy +haz +pLt +mZL +mZL +mZL +mZL +mZL +lOX +haz +hsy +gfs +rEb +rEb +rEb +gXZ aag aag aag @@ -137791,27 +138237,27 @@ aad aag aag aag -wVb -wVb -gcK -jPf -jPf -bhB -dVZ -jyi -bPe -bQm -wlj -bQm -bTp -jyi -cDj -bhB -vuR -vuR -woG -vTK -vTK +gXZ +gXZ +fBd +uTa +uTa +hsy +mkI +aPS +gsM +ukP +eCt +ukP +nop +aPS +ddf +hsy +juF +jqT +iuA +gXZ +gXZ aag aag aag @@ -137995,25 +138441,25 @@ aag aag aag aag -wVb -hlz -eFH -uzg -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -bhB -cAH -cAH -cAH -vTK +gXZ +rEb +jqT +fYN +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +hsy +rEb +rEb +rEb +gXZ aag aag aag @@ -138198,25 +138644,25 @@ aag aag aag aag -wVb -hlz -eFH -hlz -eFH -wul -hlz -gnz -eFH -eFH -vuR -hOe -cAH -fXd -vuR -vuR -vuR -cAH -vTK +gXZ +rEb +jqT +rEb +jqT +hWS +rEb +hJN +jqT +jqT +jqT +hJN +rEb +cyy +jqT +jqT +jqT +rEb +gXZ aag aag aag @@ -138401,25 +138847,25 @@ aag aag aag aag -wVb -wVb -rdK -rdK -rdK -rdK -bOn -rdK -rdK -rdK -haq -haq -xnl -haq -haq -haq -haq -vTK -vTK +gFP +gFP +qjZ +qjZ +qjZ +qjZ +dXI +qjZ +qjZ +qjZ +qjZ +qjZ +dXI +qjZ +qjZ +qjZ +qjZ +gFP +gFP aag aag aag @@ -138604,25 +139050,25 @@ aah aah aah aah -wVb -wVb -bdo -bdo -bLg -bMX -bOo -uvG -dSs -bOo -otX -cII -koT -tZF -bUZ -ovn -ovn -vTK -vTK +gFP +gFP +lMb +lMb +fLv +cLq +vON +sgs +ioP +vAI +kXm +eSk +vON +cLq +oLN +lMb +lMb +gFP +gFP aah aah aah @@ -138808,23 +139254,23 @@ aaa aaa aaa aaa -wVb -qsF -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -bjy -aXQ -vTK +gFP +vVI +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +fXZ +gsi +gFP aaa aaa aaa @@ -139011,23 +139457,23 @@ aaa aaa aaa aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa aaa aaa @@ -139214,23 +139660,23 @@ aaa aaa aaa aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa aaa aaa @@ -139417,23 +139863,23 @@ aaa aaa aaa aaa -wVb -bhD -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -bCR -vTK +gFP +riT +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +vFn +gFP aaa aaa aaa @@ -139620,23 +140066,23 @@ aaa aaa aaa aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa aaa aaa @@ -139823,23 +140269,23 @@ aaa aaa aaa aaa -wVb -bdo -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -ovn -vTK +gFP +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gFP aaa aaa aaa @@ -140026,23 +140472,23 @@ aaa aaa aaa aaa -wVb -qsF -bdo -bdo -bdo -bdo -bdo -bdo -bdo -ovn -ovn -ovn -ovn -ovn -ovn -aXQ -vTK +gFP +vVI +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +lMb +gsi +gFP aaa aaa aaa @@ -140229,23 +140675,23 @@ aaa aaa aaa aaa -wVb -bdo -jbB -bdo -bne -bdo -jbB -bdo -bne -ovn -gXv -ovn -grX -ovn -gXv -ovn -vTK +gFP +lMb +wgf +lMb +qbD +lMb +wgf +lMb +qbD +lMb +wgf +lMb +qbD +lMb +wgf +lMb +gFP aaa aaa aaa @@ -140432,23 +140878,23 @@ aaa aaa aaa aaa -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -wVb -vTK -vTK -vTK -vTK -vTK -vTK -vTK -vTK +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP +gFP aaa aaa aaa diff --git a/maps/new_varadero.json b/maps/new_varadero.json index d695652d0ceb..ec90142c2295 100644 --- a/maps/new_varadero.json +++ b/maps/new_varadero.json @@ -11,7 +11,7 @@ "/datum/equipment_preset/survivor/chaplain/nv", "/datum/equipment_preset/survivor/engineer/nv", "/datum/equipment_preset/survivor/trucker/nv", - "/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv", + "/datum/equipment_preset/survivor/interstellar_commerce_commission_liaison/nv", "/datum/equipment_preset/survivor/security/nv", "/datum/equipment_preset/survivor/beachbum", "/datum/equipment_preset/survivor/miner", diff --git a/maps/shuttles/dropship_alamo.dmm b/maps/shuttles/dropship_alamo.dmm index 6cd6922c22b0..1e78347c1721 100644 --- a/maps/shuttles/dropship_alamo.dmm +++ b/maps/shuttles/dropship_alamo.dmm @@ -18,6 +18,14 @@ /obj/structure/shuttle/part/dropship1/transparent/nose_center, /turf/template_noop, /area/shuttle/drop1/sulaco) +"bc" = ( +/obj/effect/attach_point/electronics/dropship1{ + dir = 1; + attach_id = 5 + }, +/obj/structure/shuttle/part/dropship1/transparent/inner_left_weapons, +/turf/template_noop, +/area/shuttle/drop1/sulaco) "be" = ( /obj/structure/shuttle/part/dropship1/transparent/upper_right_wing, /turf/template_noop, @@ -73,6 +81,15 @@ icon_state = "floor8" }, /area/shuttle/drop1/sulaco) +"ed" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ + dir = 1; + id = "starboard_door" + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) "eD" = ( /obj/structure/shuttle/part/dropship1/transparent/engine_right_cap, /turf/template_noop, @@ -159,14 +176,6 @@ icon_state = "76" }, /area/shuttle/drop1/sulaco) -"os" = ( -/obj/effect/attach_point/fuel/dropship1{ - pixel_x = -32 - }, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "33" - }, -/area/shuttle/drop1/sulaco) "oW" = ( /obj/structure/shuttle/part/dropship1/transparent/middle_left_wing, /turf/template_noop, @@ -216,19 +225,18 @@ icon_state = "23" }, /area/shuttle/drop1/sulaco) -"rS" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ - id = "port_door"; - dir = 2 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop1/sulaco) "rV" = ( /obj/structure/shuttle/part/dropship1/transparent/left_outer_bottom_wing, /turf/template_noop, /area/shuttle/drop1/sulaco) +"sm" = ( +/obj/effect/attach_point/fuel/dropship1{ + attach_id = 10 + }, +/turf/closed/shuttle/dropship1/transparent{ + icon_state = "28" + }, +/area/shuttle/drop1/sulaco) "sA" = ( /obj/structure/shuttle/part/dropship1/lower_left_wall, /turf/open/space/basic, @@ -248,12 +256,6 @@ /obj/structure/shuttle/part/dropship1/transparent/lower_right_wing, /turf/template_noop, /area/shuttle/drop1/sulaco) -"wr" = ( -/obj/effect/attach_point/crew_weapon/dropship1, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop1/sulaco) "ws" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -344,20 +346,6 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) -"Da" = ( -/obj/effect/attach_point/electronics/dropship1{ - dir = 1 - }, -/obj/structure/shuttle/part/dropship1/transparent/inner_left_weapons, -/turf/template_noop, -/area/shuttle/drop1/sulaco) -"De" = ( -/obj/effect/attach_point/electronics/dropship1{ - dir = 1 - }, -/obj/structure/shuttle/part/dropship1/transparent/inner_right_weapons, -/turf/template_noop, -/area/shuttle/drop1/sulaco) "Et" = ( /turf/closed/shuttle/dropship1{ icon_state = "72" @@ -427,6 +415,14 @@ icon_state = "62" }, /area/shuttle/drop1/sulaco) +"Kk" = ( +/obj/effect/attach_point/crew_weapon/dropship1{ + attach_id = 7 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) "KC" = ( /obj/structure/machinery/door/airlock/hatch/cockpit, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -453,6 +449,23 @@ icon_state = "64" }, /area/shuttle/drop1/sulaco) +"Nv" = ( +/obj/effect/attach_point/crew_weapon/dropship1{ + attach_id = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) +"ND" = ( +/obj/effect/attach_point/fuel/dropship1{ + pixel_x = -32; + attach_id = 11 + }, +/turf/closed/shuttle/dropship1/transparent{ + icon_state = "33" + }, +/area/shuttle/drop1/sulaco) "NQ" = ( /obj/structure/shuttle/part/dropship1/transparent/left_inner_bottom_wing, /turf/template_noop, @@ -481,15 +494,6 @@ icon_state = "rasputin5" }, /area/shuttle/drop1/sulaco) -"Pf" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ - dir = 1; - id = "starboard_door" - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop1/sulaco) "Ph" = ( /turf/closed/shuttle/dropship1{ icon_state = "68" @@ -502,6 +506,14 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) +"PV" = ( +/obj/effect/attach_point/crew_weapon/dropship1{ + attach_id = 9 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) "Qh" = ( /turf/closed/shuttle/dropship1/transparent{ icon_state = "32" @@ -575,12 +587,6 @@ /obj/structure/shuttle/part/dropship1/transparent/outer_left_weapons, /turf/template_noop, /area/shuttle/drop1/sulaco) -"Ua" = ( -/obj/effect/attach_point/fuel/dropship1, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "28" - }, -/area/shuttle/drop1/sulaco) "UG" = ( /obj/structure/prop/ice_colony/hula_girl{ pixel_x = -10; @@ -628,6 +634,23 @@ icon_state = "rasputin7" }, /area/shuttle/drop1/sulaco) +"XP" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ + id = "port_door"; + dir = 2 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) +"Ye" = ( +/obj/effect/attach_point/electronics/dropship1{ + dir = 1; + attach_id = 6 + }, +/obj/structure/shuttle/part/dropship1/transparent/inner_right_weapons, +/turf/template_noop, +/area/shuttle/drop1/sulaco) "Za" = ( /turf/closed/shuttle/dropship1{ icon_state = "77" @@ -660,7 +683,7 @@ mb mb FA Oq -Ua +sm iz EN mb @@ -677,7 +700,7 @@ Et iI JP il -rS +XP mW qn sA @@ -694,7 +717,7 @@ NQ mb mb mb -Da +bc oo TK ws @@ -773,11 +796,11 @@ BB OK OU il -wr +Kk il -wr +Nv il -wr +PV il mb mb @@ -832,7 +855,7 @@ Wg mb mb mb -De +Ye oo TK cr @@ -861,7 +884,7 @@ iv zV MP il -Pf +ed nC nE rl @@ -890,7 +913,7 @@ mb mb eD Gw -os +ND qy Jm mb diff --git a/maps/shuttles/dropship_normandy.dmm b/maps/shuttles/dropship_normandy.dmm index a2847ae62611..5a733f6a9e9b 100644 --- a/maps/shuttles/dropship_normandy.dmm +++ b/maps/shuttles/dropship_normandy.dmm @@ -36,20 +36,6 @@ /obj/structure/shuttle/part/dropship2/transparent/right_outer_bottom_wing, /turf/template_noop, /area/shuttle/drop2/sulaco) -"do" = ( -/obj/effect/attach_point/crew_weapon/dropship2, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, -/area/shuttle/drop2/sulaco) -"es" = ( -/obj/effect/attach_point/fuel/dropship2{ - pixel_x = -32 - }, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "33" - }, -/area/shuttle/drop2/sulaco) "eu" = ( /turf/closed/shuttle/dropship2{ icon_state = "75" @@ -93,6 +79,14 @@ icon_state = "54" }, /area/shuttle/drop2/sulaco) +"gH" = ( +/obj/effect/attach_point/electronics/dropship2{ + dir = 1; + attach_id = 6 + }, +/obj/structure/shuttle/part/dropship2/transparent/inner_right_weapons, +/turf/template_noop, +/area/shuttle/drop2/sulaco) "gP" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 @@ -101,6 +95,14 @@ icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) +"hn" = ( +/obj/effect/attach_point/crew_weapon/dropship2{ + attach_id = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) "it" = ( /obj/structure/bed/chair/vehicle{ dir = 1; @@ -173,6 +175,14 @@ icon_state = "62" }, /area/shuttle/drop2/sulaco) +"mn" = ( +/obj/effect/attach_point/fuel/dropship2{ + attach_id = 10 + }, +/turf/closed/shuttle/dropship2/transparent{ + icon_state = "28" + }, +/area/shuttle/drop2/sulaco) "mz" = ( /obj/structure/machinery/camera/autoname/almayer/dropship_two{ dir = 4; @@ -190,6 +200,15 @@ icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) +"mA" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + id = "port_door"; + dir = 2 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop2/sulaco) "nq" = ( /obj/effect/attach_point/weapon/dropship2/left_fore, /obj/structure/shuttle/part/dropship2/transparent/outer_left_weapons, @@ -253,10 +272,13 @@ icon_state = "rasputin3" }, /area/shuttle/drop2/sulaco) -"vw" = ( -/obj/effect/attach_point/fuel/dropship2, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "28" +"vh" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + dir = 1; + id = "starboard_door" + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) "wX" = ( @@ -264,13 +286,6 @@ icon_state = "83" }, /area/shuttle/drop2/sulaco) -"xd" = ( -/obj/effect/attach_point/electronics/dropship2{ - dir = 1 - }, -/obj/structure/shuttle/part/dropship2/transparent/inner_right_weapons, -/turf/template_noop, -/area/shuttle/drop2/sulaco) "xe" = ( /turf/closed/shuttle/dropship2{ icon_state = "18" @@ -310,6 +325,14 @@ icon_state = "56" }, /area/shuttle/drop2/sulaco) +"Bg" = ( +/obj/effect/attach_point/crew_weapon/dropship2{ + attach_id = 7 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) "Bi" = ( /turf/closed/shuttle/dropship2/transparent{ icon_state = "97" @@ -349,15 +372,6 @@ /obj/structure/shuttle/part/dropship2/transparent/lower_right_wing, /turf/template_noop, /area/shuttle/drop2/sulaco) -"En" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ - dir = 1; - id = "starboard_door" - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop2/sulaco) "Eo" = ( /turf/closed/shuttle/dropship2{ icon_state = "47" @@ -463,6 +477,14 @@ /obj/structure/shuttle/part/dropship2/transparent/nose_top_left, /turf/template_noop, /area/shuttle/drop2/sulaco) +"MA" = ( +/obj/effect/attach_point/crew_weapon/dropship2{ + attach_id = 9 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) "ME" = ( /turf/closed/shuttle/dropship2/transparent{ icon_state = "96" @@ -494,6 +516,15 @@ /obj/structure/shuttle/part/dropship2/left_outer_wing_connector, /turf/open/space/basic, /area/shuttle/drop2/sulaco) +"Od" = ( +/obj/effect/attach_point/fuel/dropship2{ + pixel_x = -32; + attach_id = 11 + }, +/turf/closed/shuttle/dropship2/transparent{ + icon_state = "33" + }, +/area/shuttle/drop2/sulaco) "Ov" = ( /obj/structure/shuttle/part/dropship2/transparent/right_inner_bottom_wing, /turf/template_noop, @@ -582,15 +613,6 @@ /obj/structure/shuttle/part/dropship2/nose_front_left, /turf/template_noop, /area/shuttle/drop2/sulaco) -"SC" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ - id = "port_door"; - dir = 2 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop2/sulaco) "SO" = ( /turf/closed/shuttle/dropship2{ icon_state = "36" @@ -693,7 +715,7 @@ Rr Rr BG SQ -vw +mn sk Xr Rr @@ -710,7 +732,7 @@ OI GE lJ PJ -SC +mA jc pU nS @@ -806,11 +828,11 @@ Bb Iv rc vd -do +Bg vd -do +hn vd -do +MA PJ Rr Rr @@ -865,7 +887,7 @@ RJ Rr Rr Rr -xd +gH yl SY it @@ -894,7 +916,7 @@ fI fx Tp PJ -En +vh gG RG QK @@ -923,7 +945,7 @@ Rr Rr yh UP -es +Od zt Uu Rr diff --git a/maps/tutorial/tutorial_12x12.dmm b/maps/tutorial/tutorial_12x12.dmm new file mode 100644 index 000000000000..a682957ea702 --- /dev/null +++ b/maps/tutorial/tutorial_12x12.dmm @@ -0,0 +1,180 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +z +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(7,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(8,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(9,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(10,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(11,1,1) = {" +a +z +z +z +z +z +z +z +z +z +z +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/tutorial/tutorial_7x7.dmm b/maps/tutorial/tutorial_7x7.dmm new file mode 100644 index 000000000000..4297ef72ab8b --- /dev/null +++ b/maps/tutorial/tutorial_7x7.dmm @@ -0,0 +1,75 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial) + +(1,1,1) = {" +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +"} diff --git a/maps/tutorial/tutorial_8x9.dmm b/maps/tutorial/tutorial_8x9.dmm new file mode 100644 index 000000000000..fc0cdd7a3e48 --- /dev/null +++ b/maps/tutorial/tutorial_8x9.dmm @@ -0,0 +1,100 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(7,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/tutorial/tutorial_8x9_nb.dmm b/maps/tutorial/tutorial_8x9_nb.dmm new file mode 100644 index 000000000000..2e03d5162f65 --- /dev/null +++ b/maps/tutorial/tutorial_8x9_nb.dmm @@ -0,0 +1,100 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/almayer/outer, +/area/misc/tutorial/no_baselight) +"z" = ( +/turf/open/floor/almayer, +/area/misc/tutorial/no_baselight) +"R" = ( +/obj/effect/landmark/tutorial_bottom_left, +/turf/open/floor/almayer, +/area/misc/tutorial/no_baselight) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +z +z +z +z +z +z +R +a +"} +(3,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(4,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(5,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(6,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(7,1,1) = {" +a +z +z +z +z +z +z +z +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +"} diff --git a/nano/templates/dropship_weapons_console.tmpl b/nano/templates/dropship_weapons_console.tmpl deleted file mode 100644 index fabfdee2467b..000000000000 --- a/nano/templates/dropship_weapons_console.tmpl +++ /dev/null @@ -1,245 +0,0 @@ - -{{if data.screen_mode == 0}} -
-

Equipment installed:

-
- {{for data.equipment_data}} - {{if value.is_interactable}} -
- {{:helper.link(value.name, null, {'equip_interact' : value.eqp_tag}, null , null)}} -
- {{else}} -
- {{:value.name}} -
- {{/if}} - {{empty}} - No equipment installed. - {{/for}} -
-
- {{if data.has_firemission}} -
-

Fire Missions:

-
- {{for data.firemission_data}} -
- - {{:value.name}} - - -   - - {{if !value.can_interact}} - - *!SELECT* - - {{/if}} - {{if !value.can_edit}} - - *!EDIT* - - {{/if}} - - {{if value.can_interact}} - - {{if value.selected}} - {{:helper.link("[UNSELECT]", null, {'mission_tag' : value.mission_tag}, null , null)}} - {{else}} - {{:helper.link("[SELECT]", null, {'mission_tag' : value.mission_tag}, null , null)}} - {{/if}} - - {{/if}} - - {{if value.can_edit}} - - {{:helper.link("[EDIT]", null, {'mission_tag_edit' : value.mission_tag}, null , null)}} - - {{/if}} - - - {{:helper.link("[DELETE]", null, {'mission_tag_delete' : value.mission_tag}, null , null)}} - -
- - {{empty}} - No Fire Missions Detected - {{/for}} -
- {{:helper.link("Create New Fire Mission", null, {'create_mission' : 1}, null , null)}} -
- -
-
-
-

Fire Mission Control:

- {{if data.can_firemission}} -
- {{:helper.link("Switch to Fire Mission", null, {'switch_to_firemission' : 1}, null , null)}} -
-
- {{else}} -
- Have to be in Transit, have to select a Fire Mission and Fire Mission has to be without errors. -
- {{/if}} -
-
-

Fire Mission Simulator:

- {{if data.shuttle_state != "in_transit"}} -
- {{:helper.link("Switch To Simulation", null, {'switch_to_simulation' : 1}, null , null)}} -
-
- {{else}} -
- Have to be Stationary, have to select a Fire Mission and Fire Mission has to be without errors. -
- {{/if}} -
- {{/if}} -{{else data.screen_mode == 1}} -

Weapon Selected: {{:data.selected_eqp}}

- {{if data.selected_eqp_ammo_name}} -
- Ammo loaded: {{:data.selected_eqp_ammo_name}} -
-
- {{if data.selected_eqp_ammo_amt > data.selected_eqp_max_ammo_amt*0.5}} - Ammo count: {{:data.selected_eqp_ammo_amt}} / {{:data.selected_eqp_max_ammo_amt}} - {{else data.selected_eqp_ammo_amt > 0}} - Ammo count: {{:data.selected_eqp_ammo_amt}} / {{:data.selected_eqp_max_ammo_amt}} - {{else}} - Ammo count: {{:data.selected_eqp_ammo_amt}} / {{:data.selected_eqp_max_ammo_amt}} - {{/if}} -
- {{else}} -
- No ammo loaded -
- {{/if}} - -
- Available Targets -
- {{:helper.link('Deselect Weapon', null, {'deselect' : '1'}, null , null)}} -
-
- -
- {{for data.targets_data}} - {{:helper.link(value.target_name, null, {'open_fire' : value.target_tag}, (data.shuttle_state == "in_transit") ? null : 'disabled' , 'fixedLeftLongText')}} {{:helper.link('View', 'search', {'cas_camera' : value.target_tag}, (data.shuttle_state == "in_transit") ? null : 'disabled' , 'fixedLeft')}} - {{empty}} - No laser target detected. - {{/for}} -
- - - -{{else data.screen_mode == 2}} -

Fire Mission Editing: {{:data.editing_firemission}}

- {{if data.current_mission_error}} -
- ERROR DETECTED: {{:data.current_mission_error}} -
- {{else}} -
- No errors detected -
- {{/if}} - -
- Mission Tile Coverage: {{:data.editing_firemission_length}} -
- - - - - - - {{for data.firemission_edit_timeslices}} - - {{/for}} - - {{for data.firemission_edit_data :fm_value:fm_id}} - - - - - {{for fm_value.offsets :offset_value:offset_id}} - - {{/for}} - - {{/for}} -
NameAmmoGimbal - {{:value}} -
{{:fm_value.name}} - {{if fm_value.ammo==null}} - 0/0 - {{else}} - {{if fm_value.ammo.used > fm_value.ammo.count}} - {{:fm_value.ammo.count?fm_value.ammo.count:0}}/{{:fm_value.ammo.max?fm_value.ammo.max:0}} - {{else fm_value.ammo.used * 2 > fm_value.ammo.count}} - {{:fm_value.ammo.count?fm_value.ammo.count:0}}/{{:fm_value.ammo.max?fm_value.ammo.max:0}} - {{else}} - {{:fm_value.ammo.count?fm_value.ammo.count:0}}/{{:fm_value.ammo.max?fm_value.ammo.max:0}} - {{/if}} - {{/if}} - - {{if(fm_value.gimbal)}} - {{:fm_value.gimbal.min}} to {{:fm_value.gimbal.max}} - {{else}} - Not installed - {{/if}} - - {{:helper.link(offset_value == null ? '-' : offset_value, null, {'fm_weapon_id' : fm_id, 'fm_offset_id' : offset_id, 'fm_offset_previous': offset_value}, null , null)}} -
- -
- {{:helper.link("BACK", null, {'leave_firemission_editing' : 1}, null , null)}} -
- -{{else data.screen_mode == 3 && data.has_firemission}} -

Fire Mission Selected: {{:data.firemission_name}}

- -

- Fire Mission Status: {{:data.firemission_message}} -

- -
-

Fire Mission Options:

- - - - - - - - - - - - - -
Target:{{:data.firemission_selected_laser}}
Direction:{{:helper.link(data.firemission_direction, null, {'change_direction' : 1}, (data.shuttle_state == "in_transit" && data.firemission_step < 2) ? null : 'disabled' , null)}}
Offset:{{:helper.link(data.firemission_offset, null, {'change_offset' : 1}, (data.shuttle_state == "in_transit" && data.firemission_step < 2) ? null : 'disabled' , null)}}
-
- -
-

Fire Mission Actions:

-
- {{:helper.link('BACK', null, {'leave_firemission_execution' : '1'}, null , 'fixedLeft')}} - {{:helper.link('Activate Camera', null, {'firemission_camera' : 1}, (data.shuttle_state == "in_transit" && data.firemission_selected_laser) ? null : 'disabled' , 'fixedLeft')}} - {{:helper.link('Execute Fire Mission', null, {'execute_firemission' : 1}, (data.shuttle_state == "in_transit" && data.firemission_step == 0) ? null : 'disabled' , "linkDanger fixedLeftWide")}} -
-
-
-
Available Targets:
-
- {{for data.targets_data}} - {{:helper.link(value.target_name, null, {'select_laser_firemission' : value.target_tag}, (data.shuttle_state == "in_transit") ? null : 'disabled' , 'fixedLeftLongText')}} - {{empty}} - No CAS signal detected. - {{/for}} -
- -{{/if}} diff --git a/sound/voice/human_male_scream_6.ogg b/sound/voice/human_male_scream_6.ogg new file mode 100644 index 000000000000..0005a26bf7ac Binary files /dev/null and b/sound/voice/human_male_scream_6.ogg differ diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss index b4e59f32c121..9e6d604bdf82 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss @@ -434,9 +434,9 @@ em { font-weight: bold; } -.minorannounce { +.bigannounce { font-weight: bold; - font-size: 185%; + font-size: 115%; } .greenannounce { @@ -1101,7 +1101,7 @@ em { .xenoboldnotice { color: #51a16c; - font-style: italic; + font-weight: bold; } .xenowarning { diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss index 8501d0b9526c..78613d37ae51 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss @@ -470,9 +470,9 @@ h2.alert { font-weight: bold; } -.minorannounce { +.bigannounce { font-weight: bold; - font-size: 185%; + font-size: 115%; } .greenannounce { @@ -1133,7 +1133,7 @@ h2.alert { .xenoboldnotice { color: #2a623d; - font-style: italic; + font-weight: bold; } .xenowarning { diff --git a/tgui/packages/tgui/components/Blink.js b/tgui/packages/tgui/components/Blink.jsx similarity index 100% rename from tgui/packages/tgui/components/Blink.js rename to tgui/packages/tgui/components/Blink.jsx diff --git a/tgui/packages/tgui/components/BlockQuote.js b/tgui/packages/tgui/components/BlockQuote.jsx similarity index 100% rename from tgui/packages/tgui/components/BlockQuote.js rename to tgui/packages/tgui/components/BlockQuote.jsx diff --git a/tgui/packages/tgui/components/Button.js b/tgui/packages/tgui/components/Button.jsx similarity index 100% rename from tgui/packages/tgui/components/Button.js rename to tgui/packages/tgui/components/Button.jsx diff --git a/tgui/packages/tgui/components/ByondUi.js b/tgui/packages/tgui/components/ByondUi.jsx similarity index 100% rename from tgui/packages/tgui/components/ByondUi.js rename to tgui/packages/tgui/components/ByondUi.jsx diff --git a/tgui/packages/tgui/components/Chart.js b/tgui/packages/tgui/components/Chart.jsx similarity index 100% rename from tgui/packages/tgui/components/Chart.js rename to tgui/packages/tgui/components/Chart.jsx diff --git a/tgui/packages/tgui/components/Collapsible.js b/tgui/packages/tgui/components/Collapsible.jsx similarity index 100% rename from tgui/packages/tgui/components/Collapsible.js rename to tgui/packages/tgui/components/Collapsible.jsx diff --git a/tgui/packages/tgui/components/ColorBox.js b/tgui/packages/tgui/components/ColorBox.jsx similarity index 100% rename from tgui/packages/tgui/components/ColorBox.js rename to tgui/packages/tgui/components/ColorBox.jsx diff --git a/tgui/packages/tgui/components/Dimmer.js b/tgui/packages/tgui/components/Dimmer.jsx similarity index 100% rename from tgui/packages/tgui/components/Dimmer.js rename to tgui/packages/tgui/components/Dimmer.jsx diff --git a/tgui/packages/tgui/components/Divider.js b/tgui/packages/tgui/components/Divider.jsx similarity index 100% rename from tgui/packages/tgui/components/Divider.js rename to tgui/packages/tgui/components/Divider.jsx diff --git a/tgui/packages/tgui/components/DraggableControl.js b/tgui/packages/tgui/components/DraggableControl.jsx similarity index 100% rename from tgui/packages/tgui/components/DraggableControl.js rename to tgui/packages/tgui/components/DraggableControl.jsx diff --git a/tgui/packages/tgui/components/Dropdown.js b/tgui/packages/tgui/components/Dropdown.jsx similarity index 100% rename from tgui/packages/tgui/components/Dropdown.js rename to tgui/packages/tgui/components/Dropdown.jsx diff --git a/tgui/packages/tgui/components/Grid.js b/tgui/packages/tgui/components/Grid.jsx similarity index 100% rename from tgui/packages/tgui/components/Grid.js rename to tgui/packages/tgui/components/Grid.jsx diff --git a/tgui/packages/tgui/components/Icon.js b/tgui/packages/tgui/components/Icon.jsx similarity index 100% rename from tgui/packages/tgui/components/Icon.js rename to tgui/packages/tgui/components/Icon.jsx diff --git a/tgui/packages/tgui/components/InfinitePlane.js b/tgui/packages/tgui/components/InfinitePlane.jsx similarity index 100% rename from tgui/packages/tgui/components/InfinitePlane.js rename to tgui/packages/tgui/components/InfinitePlane.jsx diff --git a/tgui/packages/tgui/components/Input.js b/tgui/packages/tgui/components/Input.jsx similarity index 100% rename from tgui/packages/tgui/components/Input.js rename to tgui/packages/tgui/components/Input.jsx diff --git a/tgui/packages/tgui/components/Knob.js b/tgui/packages/tgui/components/Knob.jsx similarity index 100% rename from tgui/packages/tgui/components/Knob.js rename to tgui/packages/tgui/components/Knob.jsx diff --git a/tgui/packages/tgui/components/LabeledControls.js b/tgui/packages/tgui/components/LabeledControls.jsx similarity index 100% rename from tgui/packages/tgui/components/LabeledControls.js rename to tgui/packages/tgui/components/LabeledControls.jsx diff --git a/tgui/packages/tgui/components/Modal.js b/tgui/packages/tgui/components/Modal.jsx similarity index 100% rename from tgui/packages/tgui/components/Modal.js rename to tgui/packages/tgui/components/Modal.jsx diff --git a/tgui/packages/tgui/components/NoticeBox.js b/tgui/packages/tgui/components/NoticeBox.jsx similarity index 100% rename from tgui/packages/tgui/components/NoticeBox.js rename to tgui/packages/tgui/components/NoticeBox.jsx diff --git a/tgui/packages/tgui/components/NumberInput.js b/tgui/packages/tgui/components/NumberInput.jsx similarity index 100% rename from tgui/packages/tgui/components/NumberInput.js rename to tgui/packages/tgui/components/NumberInput.jsx diff --git a/tgui/packages/tgui/components/ProgressBar.js b/tgui/packages/tgui/components/ProgressBar.jsx similarity index 100% rename from tgui/packages/tgui/components/ProgressBar.js rename to tgui/packages/tgui/components/ProgressBar.jsx diff --git a/tgui/packages/tgui/components/RestrictedInput.js b/tgui/packages/tgui/components/RestrictedInput.jsx similarity index 100% rename from tgui/packages/tgui/components/RestrictedInput.js rename to tgui/packages/tgui/components/RestrictedInput.jsx diff --git a/tgui/packages/tgui/components/RoundGauge.js b/tgui/packages/tgui/components/RoundGauge.jsx similarity index 100% rename from tgui/packages/tgui/components/RoundGauge.js rename to tgui/packages/tgui/components/RoundGauge.jsx diff --git a/tgui/packages/tgui/components/Slider.js b/tgui/packages/tgui/components/Slider.jsx similarity index 100% rename from tgui/packages/tgui/components/Slider.js rename to tgui/packages/tgui/components/Slider.jsx diff --git a/tgui/packages/tgui/components/Table.js b/tgui/packages/tgui/components/Table.jsx similarity index 100% rename from tgui/packages/tgui/components/Table.js rename to tgui/packages/tgui/components/Table.jsx diff --git a/tgui/packages/tgui/components/Tabs.js b/tgui/packages/tgui/components/Tabs.jsx similarity index 100% rename from tgui/packages/tgui/components/Tabs.js rename to tgui/packages/tgui/components/Tabs.jsx diff --git a/tgui/packages/tgui/components/TextArea.js b/tgui/packages/tgui/components/TextArea.jsx similarity index 100% rename from tgui/packages/tgui/components/TextArea.js rename to tgui/packages/tgui/components/TextArea.jsx diff --git a/tgui/packages/tgui/components/TimeDisplay.js b/tgui/packages/tgui/components/TimeDisplay.jsx similarity index 100% rename from tgui/packages/tgui/components/TimeDisplay.js rename to tgui/packages/tgui/components/TimeDisplay.jsx diff --git a/tgui/packages/tgui/components/index.js b/tgui/packages/tgui/components/index.jsx similarity index 100% rename from tgui/packages/tgui/components/index.js rename to tgui/packages/tgui/components/index.jsx diff --git a/tgui/packages/tgui/debug/KitchenSink.js b/tgui/packages/tgui/debug/KitchenSink.jsx similarity index 95% rename from tgui/packages/tgui/debug/KitchenSink.js rename to tgui/packages/tgui/debug/KitchenSink.jsx index 246b4f50b478..e25751722c52 100644 --- a/tgui/packages/tgui/debug/KitchenSink.js +++ b/tgui/packages/tgui/debug/KitchenSink.jsx @@ -8,7 +8,7 @@ import { useLocalState } from '../backend'; import { Flex, Section, Tabs } from '../components'; import { Pane, Window } from '../layouts'; -const r = require.context('../stories', false, /\.stories\.js$/); +const r = require.context('../stories', false, /\.stories\.jsx$/); /** * @returns {{ diff --git a/tgui/packages/tgui/interfaces/AcidVest.js b/tgui/packages/tgui/interfaces/AcidVest.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/AcidVest.js rename to tgui/packages/tgui/interfaces/AcidVest.jsx diff --git a/tgui/packages/tgui/interfaces/AlmayerControl.js b/tgui/packages/tgui/interfaces/AlmayerControl.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/AlmayerControl.js rename to tgui/packages/tgui/interfaces/AlmayerControl.jsx diff --git a/tgui/packages/tgui/interfaces/AltitudeControlConsole.js b/tgui/packages/tgui/interfaces/AltitudeControlConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/AltitudeControlConsole.js rename to tgui/packages/tgui/interfaces/AltitudeControlConsole.jsx diff --git a/tgui/packages/tgui/interfaces/AntiAirConsole.js b/tgui/packages/tgui/interfaces/AntiAirConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/AntiAirConsole.js rename to tgui/packages/tgui/interfaces/AntiAirConsole.jsx diff --git a/tgui/packages/tgui/interfaces/Apc.js b/tgui/packages/tgui/interfaces/Apc.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Apc.js rename to tgui/packages/tgui/interfaces/Apc.jsx diff --git a/tgui/packages/tgui/interfaces/AresInterface.js b/tgui/packages/tgui/interfaces/AresInterface.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/AresInterface.js rename to tgui/packages/tgui/interfaces/AresInterface.jsx diff --git a/tgui/packages/tgui/interfaces/Autodispenser.js b/tgui/packages/tgui/interfaces/Autodispenser.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Autodispenser.js rename to tgui/packages/tgui/interfaces/Autodispenser.jsx diff --git a/tgui/packages/tgui/interfaces/Autolathe.js b/tgui/packages/tgui/interfaces/Autolathe.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Autolathe.js rename to tgui/packages/tgui/interfaces/Autolathe.jsx diff --git a/tgui/packages/tgui/interfaces/Binoculars.js b/tgui/packages/tgui/interfaces/Binoculars.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Binoculars.js rename to tgui/packages/tgui/interfaces/Binoculars.jsx diff --git a/tgui/packages/tgui/interfaces/BioSyntheticPrinter.js b/tgui/packages/tgui/interfaces/BioSyntheticPrinter.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/BioSyntheticPrinter.js rename to tgui/packages/tgui/interfaces/BioSyntheticPrinter.jsx diff --git a/tgui/packages/tgui/interfaces/BotanyEditor.js b/tgui/packages/tgui/interfaces/BotanyEditor.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/BotanyEditor.js rename to tgui/packages/tgui/interfaces/BotanyEditor.jsx diff --git a/tgui/packages/tgui/interfaces/BotanyExtractor.js b/tgui/packages/tgui/interfaces/BotanyExtractor.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/BotanyExtractor.js rename to tgui/packages/tgui/interfaces/BotanyExtractor.jsx diff --git a/tgui/packages/tgui/interfaces/BrigCell.js b/tgui/packages/tgui/interfaces/BrigCell.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/BrigCell.js rename to tgui/packages/tgui/interfaces/BrigCell.jsx diff --git a/tgui/packages/tgui/interfaces/CameraConsole.js b/tgui/packages/tgui/interfaces/CameraConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/CameraConsole.js rename to tgui/packages/tgui/interfaces/CameraConsole.jsx diff --git a/tgui/packages/tgui/interfaces/CanvasLayer.js b/tgui/packages/tgui/interfaces/CanvasLayer.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/CanvasLayer.js rename to tgui/packages/tgui/interfaces/CanvasLayer.jsx diff --git a/tgui/packages/tgui/interfaces/CardMod.js b/tgui/packages/tgui/interfaces/CardMod.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/CardMod.js rename to tgui/packages/tgui/interfaces/CardMod.jsx diff --git a/tgui/packages/tgui/interfaces/CasSim.js b/tgui/packages/tgui/interfaces/CasSim.js deleted file mode 100644 index 2346435e336a..000000000000 --- a/tgui/packages/tgui/interfaces/CasSim.js +++ /dev/null @@ -1,109 +0,0 @@ -import { useBackend } from '../backend'; -import { Button, Section, ProgressBar, NoticeBox, Box, Stack } from '../components'; -import { Window } from '../layouts'; - -export const CasSim = (_props, context) => { - const { act, data } = useBackend(context); - - const timeLeft = data.nextdetonationtime - data.worldtime; - const timeLeftPct = timeLeft / data.detonation_cooldown; - - const canDetonate = timeLeft < 0 && data.configuration && data.looking; - - return ( - - -
- {(!!data.configuration && ( - - Configuration : Executing {data.configuration}! - - )) || ( - - No firemission configuration loaded! - - )} - - Target dummy type : {data.dummy_mode} - - {timeLeft > 0 && ( - - - {Math.ceil(timeLeft / 10)} seconds until the console's - processors finish cooling! - - - )} -
-
- - - {(!data.looking && ( -
-
-
- ); -}; diff --git a/tgui/packages/tgui/interfaces/CasSim.tsx b/tgui/packages/tgui/interfaces/CasSim.tsx new file mode 100644 index 000000000000..ba5990bd81ce --- /dev/null +++ b/tgui/packages/tgui/interfaces/CasSim.tsx @@ -0,0 +1,117 @@ +import { useBackend, useLocalState } from '../backend'; +import { Box, Button, Section, ProgressBar, NoticeBox, Stack } from '../components'; + +interface CasSimData { + configuration: any; + looking: 0 | 1; + dummy_mode: string; + worldtime: number; + nextdetonationtime: number; + detonation_cooldown: number; +} + +export const CasSim = (_props, context) => { + const { act, data } = useBackend(context); + const [simulationView, setSimulationView] = useLocalState( + context, + 'simulation_view', + false + ); + + const timeLeft = data.nextdetonationtime - data.worldtime; + const timeLeftPct = timeLeft / data.detonation_cooldown; + + const canDetonate = timeLeft < 0 && data.configuration && data.looking; + + return ( + +
+ {(!!data.configuration && ( + + Configuration : Executing {data.configuration}! + + )) || ( + No firemission configuration loaded! + )} + Target dummy type : {data.dummy_mode} + {timeLeft > 0 && ( + + + {Math.ceil(timeLeft / 10)} seconds until the console's + processors finish cooling! + + + )} +
+
+ + + {(!simulationView && ( +
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/Centrifuge.js b/tgui/packages/tgui/interfaces/Centrifuge.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Centrifuge.js rename to tgui/packages/tgui/interfaces/Centrifuge.jsx diff --git a/tgui/packages/tgui/interfaces/Changelog.js b/tgui/packages/tgui/interfaces/Changelog.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Changelog.js rename to tgui/packages/tgui/interfaces/Changelog.jsx diff --git a/tgui/packages/tgui/interfaces/ChemDispenser.js b/tgui/packages/tgui/interfaces/ChemDispenser.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/ChemDispenser.js rename to tgui/packages/tgui/interfaces/ChemDispenser.jsx diff --git a/tgui/packages/tgui/interfaces/ChooseFruit.js b/tgui/packages/tgui/interfaces/ChooseFruit.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/ChooseFruit.js rename to tgui/packages/tgui/interfaces/ChooseFruit.jsx diff --git a/tgui/packages/tgui/interfaces/ChooseResin.js b/tgui/packages/tgui/interfaces/ChooseResin.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/ChooseResin.js rename to tgui/packages/tgui/interfaces/ChooseResin.jsx diff --git a/tgui/packages/tgui/interfaces/CommandTablet.js b/tgui/packages/tgui/interfaces/CommandTablet.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/CommandTablet.js rename to tgui/packages/tgui/interfaces/CommandTablet.jsx diff --git a/tgui/packages/tgui/interfaces/CrewConsole.js b/tgui/packages/tgui/interfaces/CrewConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/CrewConsole.js rename to tgui/packages/tgui/interfaces/CrewConsole.jsx diff --git a/tgui/packages/tgui/interfaces/CrtPanel.tsx b/tgui/packages/tgui/interfaces/CrtPanel.tsx new file mode 100644 index 000000000000..5745bd29c5a9 --- /dev/null +++ b/tgui/packages/tgui/interfaces/CrtPanel.tsx @@ -0,0 +1,20 @@ +import { classes } from 'common/react'; +import { Box } from '../components'; +import { BoxProps } from '../components/Box'; +interface CrtPanelProps extends BoxProps { + color: 'green' | 'yellow' | 'blue'; +} +export const CrtPanel = (props: CrtPanelProps) => { + return ( +
+ + {props.children} + +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/Cryo.js b/tgui/packages/tgui/interfaces/Cryo.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Cryo.js rename to tgui/packages/tgui/interfaces/Cryo.jsx diff --git a/tgui/packages/tgui/interfaces/DemoSim.js b/tgui/packages/tgui/interfaces/DemoSim.jsx similarity index 86% rename from tgui/packages/tgui/interfaces/DemoSim.js rename to tgui/packages/tgui/interfaces/DemoSim.jsx index 2c8b7fc25fb3..b1a6b3349afe 100644 --- a/tgui/packages/tgui/interfaces/DemoSim.js +++ b/tgui/packages/tgui/interfaces/DemoSim.jsx @@ -1,9 +1,14 @@ -import { useBackend } from '../backend'; +import { useBackend, useLocalState } from '../backend'; import { Button, Section, ProgressBar, NoticeBox, Box, Stack } from '../components'; import { Window } from '../layouts'; export const DemoSim = (_props, context) => { const { act, data } = useBackend(context); + const [simulationView, setSimulationView] = useLocalState( + context, + 'simulation_view', + false + ); const timeLeft = data.nextdetonationtime - data.worldtime; const timeLeftPct = timeLeft / data.detonation_cooldown; @@ -45,14 +50,17 @@ export const DemoSim = (_props, context) => {
- {(!data.looking && ( + {(!simulationView && ( + + ); + })} + + + ); + })} + + ); +}; + +export const FiremissionMfdPanel = (props: MfdProps, context) => { + const { data, act } = useBackend(context); + const { selectedFm } = fmState(context, props.panelStateId); + const firemission = data.firemission_data.find((x) => x.name === selectedFm); + if (firemission === undefined) { + return ; + } + return ( + + ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/FultonPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/FultonPanel.tsx new file mode 100644 index 000000000000..05d33e51a8d1 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/FultonPanel.tsx @@ -0,0 +1,161 @@ +import { MfdPanel, MfdProps } from './MultifunctionDisplay'; +import { Box, Stack } from '../../components'; +import { useBackend, useLocalState } from '../../backend'; +import { mfdState, useEquipmentState } from './stateManagers'; +import { range } from 'common/collections'; +import { Icon } from '../../components'; +import { FultonProps } from './types'; + +export const FultonMfdPanel = (props: MfdProps, context) => { + const { data, act } = useBackend(context); + const [fulltonOffset, setFultonOffset] = useLocalState( + context, + `${props.panelStateId}_fultonoffset`, + 0 + ); + const { setPanelState } = mfdState(context, props.panelStateId); + const { equipmentState } = useEquipmentState(context, props.panelStateId); + + const fultons = [...data.fulton_targets]; + const regex = /(\d+)/; + + const result = data.equipment_data.find( + (x) => x.mount_point === equipmentState + ); + + const fulton_mapper = (x: number) => { + const target = fultons.length > x ? fultons[x] : undefined; + return { + children: target ? (regex.exec(target) ?? [target])[0] : undefined, + onClick: () => + act('fulton-target', { + equipment_id: result?.mount_point, + ref: target, + }), + }; + }; + + const left_targets = range(fulltonOffset, fulltonOffset + 5).map( + fulton_mapper + ); + + const right_targets = range(fulltonOffset + 5, fulltonOffset + 8).map( + fulton_mapper + ); + + const all_targets = range(fulltonOffset, fulltonOffset + 8) + .map((x) => fultons[x]) + .filter((x) => x !== undefined); + + return ( + , + onClick: () => { + if (fulltonOffset >= 1) { + setFultonOffset(fulltonOffset - 1); + } + }, + }, + ...right_targets, + { + children: , + onClick: () => { + if (fulltonOffset + 8 < data.fulton_targets.length) { + setFultonOffset(fulltonOffset + 1); + } + }, + }, + ]} + bottomButtons={[ + { + children: 'EXIT', + onClick: () => setPanelState(''), + }, + ]}> + + + + + {all_targets.length > 0 && ( + + )} + {all_targets.length > 1 && ( + + )} + {all_targets.length > 2 && ( + + )} + {all_targets.length > 3 && ( + + )} + {all_targets.length > 4 && ( + + )} + + + + + +

Active Fultons

+
+ {all_targets.map((x) => ( + +

{x}

+
+ ))} +
+
+ + + {all_targets.length > 5 && ( + + )} + {all_targets.length > 6 && ( + + )} + {all_targets.length > 7 && ( + + )} + + +
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/MGPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/MGPanel.tsx new file mode 100644 index 000000000000..dc6df25e17c1 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/MGPanel.tsx @@ -0,0 +1,69 @@ +import { MfdPanel, MfdProps } from './MultifunctionDisplay'; +import { Box, Stack } from '../../components'; +import { DropshipEquipment } from '../DropshipWeaponsConsole'; +import { useBackend } from '../../backend'; +import { mfdState, useEquipmentState } from './stateManagers'; +import { EquipmentContext, MGSpec } from './types'; + +const MgPanel = (props: DropshipEquipment) => { + const mgData = props.data as MGSpec; + return ( + + + + + + + +

{props.name}

+
+ +

+ Health: {mgData.health} / {mgData.health_max} +

+
+ +

+ Ammo {mgData.rounds} / {mgData.max_rounds} +

+
+ +

{mgData.deployed === 1 ? 'DEPLOYED' : 'UNDEPLOYED'}

+
+
+
+ + + +
+ ); +}; + +export const MgMfdPanel = (props: MfdProps, context) => { + const { act, data } = useBackend(context); + const { setPanelState } = mfdState(context, props.panelStateId); + const { equipmentState } = useEquipmentState(context, props.panelStateId); + const mg = data.equipment_data.find((x) => x.mount_point === equipmentState); + return ( + setPanelState('equipment') }, + ]} + leftButtons={[ + { + children: 'DEPLOY', + onClick: () => + act('deploy-equipment', { equipment_id: mg?.mount_point }), + }, + ]} + bottomButtons={[ + { + children: 'EXIT', + onClick: () => setPanelState(''), + }, + ]}> + {mg && } + + ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/MapPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/MapPanel.tsx new file mode 100644 index 000000000000..83ecaac24a5c --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/MapPanel.tsx @@ -0,0 +1,37 @@ +import { useBackend } from '../../backend'; +import { Box } from '../../components'; +import { MfdPanel, MfdProps } from './MultifunctionDisplay'; +import { ByondUi } from '../../components'; +import { MapProps } from './types'; +import { mfdState } from './stateManagers'; + +export const MapMfdPanel = (props: MfdProps, context) => { + const { setPanelState } = mfdState(context, props.panelStateId); + return ( + setPanelState(''), + }, + ]}> + + + ); +}; + +const MapPanel = (_, context) => { + const { data } = useBackend(context); + return ( + + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/MedevacPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/MedevacPanel.tsx new file mode 100644 index 000000000000..634b4ef2a52e --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/MedevacPanel.tsx @@ -0,0 +1,208 @@ +import { MfdProps, MfdPanel } from './MultifunctionDisplay'; +import { Box, Divider, Flex, Stack } from '../../components'; +import { useBackend, useLocalState } from '../../backend'; +import { range } from 'common/collections'; +import { Icon } from '../../components'; +import { mfdState, useEquipmentState } from './stateManagers'; +import { MedevacContext, MedevacTargets } from './types'; + +const MedevacOccupant = (props: { data: MedevacTargets }) => ( + + + + + {props.data.occupant ?? 'Empty'} + {props.data.area ?? 'Unknown'} + + + + + + HP +
+ {props.data.damage?.hp} +
+ + Brute +
+ {props.data.damage?.brute} +
+ + Fire +
+ {props.data.damage?.fire} +
+ + Tox +
+ {props.data.damage?.tox} +
+ + Oxy +
{props.data.damage?.oxy} +
+
+
+
+
+); + +export const MedevacMfdPanel = (props: MfdProps, context) => { + const [medevacOffset, setMedevacOffset] = useLocalState( + context, + `${props.panelStateId}_medevacoffset`, + 0 + ); + const { setPanelState } = mfdState(context, props.panelStateId); + const { equipmentState } = useEquipmentState(context, props.panelStateId); + + const { data, act } = useBackend(context); + + const result = data.equipment_data.find( + (x) => x.mount_point === equipmentState + ); + const medevacs = data.medevac_targets === null ? [] : data.medevac_targets; + const medevac_mapper = (x: number) => { + const target = medevacs.length > x ? medevacs[x] : undefined; + return { + children: target ? target.occupant?.split(' ')[0] ?? 'Empty' : undefined, + onClick: () => + act('medevac-target', { + equipment_id: result?.mount_point, + ref: target?.ref, + }), + }; + }; + + const left_targets = range(medevacOffset, medevacOffset + 5).map( + medevac_mapper + ); + + const right_targets = range(medevacOffset + 5, medevacOffset + 8).map( + medevac_mapper + ); + + const all_targets = range(medevacOffset, medevacOffset + 8) + .map((x) => data.medevac_targets[x]) + .filter((x) => x !== undefined); + return ( + , + onClick: () => { + if (medevacOffset >= 1) { + setMedevacOffset(medevacOffset - 1); + } + }, + }, + ...right_targets, + { + children: , + onClick: () => { + if (medevacOffset + 8 < data.medevac_targets.length) { + setMedevacOffset(medevacOffset + 1); + } + }, + }, + ]} + topButtons={[ + { + children: 'EQUIP', + onClick: () => setPanelState('equipment'), + }, + ]} + bottomButtons={[ + { + children: 'EXIT', + onClick: () => setPanelState(''), + }, + ]}> + + + + + {all_targets.length > 0 && ( + + )} + {all_targets.length > 1 && ( + + )} + {all_targets.length > 2 && ( + + )} + {all_targets.length > 3 && ( + + )} + {all_targets.length > 4 && ( + + )} + + + + + +

Medevac Requests

+
+ {all_targets.map((x) => ( + <> + + + + + + ))} +
+
+ + + {all_targets.length > 5 && ( + + )} + {all_targets.length > 6 && ( + + )} + {all_targets.length > 7 && ( + + )} + + +
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/MultifunctionDisplay.tsx b/tgui/packages/tgui/interfaces/MfdPanels/MultifunctionDisplay.tsx new file mode 100644 index 000000000000..9df7eaffcde4 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/MultifunctionDisplay.tsx @@ -0,0 +1,152 @@ +import { useBackend } from '../../backend'; +import { Button, Flex } from '../../components'; +import { CrtPanel } from '../CrtPanel'; +import { Table, TableCell, TableRow } from '../../components/Table'; +import { InfernoNode } from 'inferno'; +import { ButtonProps } from './types'; +import { classes } from 'common/react'; + +export interface MfdProps { + panelStateId: string; + topButtons?: Array; + leftButtons?: Array; + rightButtons?: Array; + bottomButtons?: Array; + children?: InfernoNode; +} + +export const MfdButton = (props: ButtonProps, context) => { + const { act } = useBackend(context); + return ( + + ); +}; + +export const EmptyMfdButton = () => { + return ; +}; + +export const HorizontalPanel = ( + props: { buttons: Array }, + context +) => { + return ( + + {props.buttons.map((x, i) => ( + + {x ? : } + + ))} + + ); +}; + +export const VerticalPanel = ( + props: { buttons?: Array }, + context +) => { + return ( + + {props.buttons?.map((x, i) => ( + + {x ? : } + + ))} + + ); +}; + +const HexScrew = () => { + return ( + + + + + ); +}; + +export const MfdPanel = (props: MfdProps) => { + const topProps = props.topButtons ?? []; + const botProps = props.bottomButtons ?? []; + const leftProps = props.leftButtons ?? []; + const rightProps = props.rightButtons ?? []; + + const topButtons = Array.from({ length: 5 }).map((_, i) => topProps[i] ?? {}); + const bottomButtons = Array.from({ length: 5 }).map( + (_, i) => botProps[i] ?? {} + ); + const leftButtons = Array.from({ length: 5 }).map( + (_, i) => leftProps[i] ?? {} + ); + const rightButtons = Array.from({ length: 5 }).map( + (_, i) => rightProps[i] ?? {} + ); + return ( + + + + + + + + + + + + + + + + + + + {props.children} + + + + + + + + + + + + + + + + + +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/SentryPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/SentryPanel.tsx new file mode 100644 index 000000000000..d8ea220ec986 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/SentryPanel.tsx @@ -0,0 +1,89 @@ +import { MfdPanel, MfdProps } from './MultifunctionDisplay'; +import { Box, Stack } from '../../components'; +import { DropshipEquipment } from '../DropshipWeaponsConsole'; +import { useBackend } from '../../backend'; +import { mfdState, useEquipmentState } from './stateManagers'; +import { EquipmentContext, SentrySpec } from './types'; + +const SentryPanel = (props: DropshipEquipment, context) => { + const sentryData = props.data as SentrySpec; + return ( + + + + + + + +

{props.name}

+
+ +

+ Health: {sentryData.health} / {sentryData.health_max} +

+
+ +

+ Ammo {sentryData.rounds} / {sentryData.max_rounds} +

+
+ +

{sentryData.deployed === 1 ? 'DEPLOYED' : 'UNDEPLOYED'}

+
+ +

+ {sentryData.engaged === 1 + ? 'ENGAGED' + : sentryData.deployed === 1 + ? 'STANDBY' + : 'OFFLINE'} +

+
+
+
+ + + +
+ ); +}; + +export const SentryMfdPanel = (props: MfdProps, context) => { + const { act, data } = useBackend(context); + const { setPanelState } = mfdState(context, props.panelStateId); + const { equipmentState } = useEquipmentState(context, props.panelStateId); + const sentry = data.equipment_data.find( + (x) => x.mount_point === equipmentState + ); + const deployLabel = + (sentry?.data?.deployed ?? 0) === 1 ? 'RETRACT' : 'DEPLOY'; + return ( + setPanelState('equipment') }, + ]} + leftButtons={[ + { + children: deployLabel, + onClick: () => + act('deploy-equipment', { equipment_id: sentry?.mount_point }), + }, + { + children: 'CAMERA', + onClick: () => + act('set-camera-sentry', { equipment_id: sentry?.mount_point }), + }, + ]} + bottomButtons={[ + { + children: 'EXIT', + onClick: () => setPanelState(''), + }, + ]}> + + {sentry && } + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/SpotlightPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/SpotlightPanel.tsx new file mode 100644 index 000000000000..ce241420497e --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/SpotlightPanel.tsx @@ -0,0 +1,60 @@ +import { MfdPanel, MfdProps } from './MultifunctionDisplay'; +import { Box, Stack } from '../../components'; +import { useBackend } from '../../backend'; +import { mfdState, useEquipmentState } from './stateManagers'; +import { EquipmentContext, SpotlightSpec } from './types'; +import { DropshipEquipment } from '../DropshipWeaponsConsole'; + +const SpotPanel = (props: DropshipEquipment) => { + const spotData = props.data as SpotlightSpec; + return ( + + + + + + + +

{props.name}

+
+
+
+ + + +
+ ); +}; + +export const SpotlightMfdPanel = (props: MfdProps, context) => { + const { act, data } = useBackend(context); + const { setPanelState } = mfdState(context, props.panelStateId); + const { equipmentState } = useEquipmentState(context, props.panelStateId); + const spotlight = data.equipment_data.find( + (x) => x.mount_point === equipmentState + ); + return ( + setPanelState('equipment') }, + ]} + leftButtons={[ + { + children: 'DEPLOY', + onClick: () => + act('deploy-equipment', { equipment_id: spotlight?.mount_point }), + }, + ]} + bottomButtons={[ + { + children: 'EXIT', + onClick: () => setPanelState(''), + }, + ]}> + + {spotlight && } + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/SupportPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/SupportPanel.tsx new file mode 100644 index 000000000000..1eca123173b0 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/SupportPanel.tsx @@ -0,0 +1,62 @@ +import { useBackend } from '../../backend'; +import { MfdPanel, MfdProps } from './MultifunctionDisplay'; +import { MedevacMfdPanel } from './MedevacPanel'; +import { FultonMfdPanel } from './FultonPanel'; +import { Box, Stack } from '../../components'; +import { SentryMfdPanel } from './SentryPanel'; +import { MgMfdPanel } from './MGPanel'; +import { SpotlightMfdPanel } from './SpotlightPanel'; +import { EquipmentContext } from './types'; +import { mfdState, useEquipmentState } from './stateManagers'; + +export const SupportMfdPanel = (props: MfdProps, context) => { + const { equipmentState } = useEquipmentState(context, props.panelStateId); + + const { setPanelState } = mfdState(context, props.panelStateId); + + const { data } = useBackend(context); + const result = data.equipment_data.find( + (x) => x.mount_point === equipmentState + ); + if (result?.shorthand === 'Medevac') { + return ; + } + if (result?.shorthand === 'Fulton') { + return ; + } + if (result?.shorthand === 'Sentry') { + return ; + } + if (result?.shorthand === 'MG') { + return ; + } + if (result?.shorthand === 'Spotlight') { + return ; + } + return ( + setPanelState(''), + }, + ]}> + + + +

Component {result?.shorthand} not found

+
+ +

Is this authorised equipment?

+
+ +

+ Contact your local WY representative for further upgrade options +

+
+
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/TargetAquisition.tsx b/tgui/packages/tgui/interfaces/MfdPanels/TargetAquisition.tsx new file mode 100644 index 000000000000..49f22db18104 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/TargetAquisition.tsx @@ -0,0 +1,519 @@ +import { range } from 'common/collections'; +import { useBackend, useLocalState, useSharedState } from '../../backend'; +import { Box, Icon, Stack } from '../../components'; +import { MfdProps, MfdPanel } from './MultifunctionDisplay'; +import { mfdState, useFiremissionXOffsetValue, useFiremissionYOffsetValue, useLazeTarget } from './stateManagers'; +import { CasFiremission, EquipmentContext, FiremissionContext, TargetContext } from './types'; + +const directionLookup = new Map(); +directionLookup['SOUTH'] = 2; +directionLookup['NORTH'] = 1; +directionLookup['WEST'] = 8; +directionLookup['EAST'] = 4; + +const useStrikeMode = (context) => { + const [data, set] = useSharedState( + context, + 'strike-mode', + undefined + ); + return { + strikeMode: data, + setStrikeMode: set, + }; +}; + +const useStrikeDirection = (context) => { + const [data, set] = useSharedState( + context, + 'strike-direction', + undefined + ); + return { + strikeDirection: data, + setStrikeDirection: set, + }; +}; + +const useWeaponSelectedState = (context) => { + const [data, set] = useSharedState( + context, + 'target-weapon-select', + undefined + ); + return { + weaponSelected: data, + setWeaponSelected: set, + }; +}; + +const useTargetFiremissionSelect = (context) => { + const [data, set] = useSharedState( + context, + 'target-firemission-select', + undefined + ); + return { + firemissionSelected: data, + setFiremissionSelected: set, + }; +}; + +const useTargetOffset = (context, panelId: string) => { + const [data, set] = useLocalState(context, `${panelId}_targetOffset`, 0); + return { + targetOffset: data, + setTargetOffset: set, + }; +}; + +const useTargetSubmenu = (context, panelId: string) => { + const [data, set] = useSharedState( + context, + `${panelId}_target_left`, + undefined + ); + return { + leftButtonMode: data, + setLeftButtonMode: set, + }; +}; + +const TargetLines = (props: { panelId: string }, context) => { + const { data } = useBackend< + EquipmentContext & FiremissionContext & TargetContext + >(context); + const { targetOffset } = useTargetOffset(context, props.panelId); + return ( + <> + {data.targets_data.length > targetOffset && ( + + )} + {data.targets_data.length > targetOffset + 1 && ( + + )} + {data.targets_data.length > targetOffset + 2 && ( + + )} + + {data.targets_data.length > targetOffset + 3 && ( + + )} + {data.targets_data.length > targetOffset + 4 && ( + + )} + + ); +}; + +const leftButtonGenerator = (context, panelId: string) => { + const { data } = useBackend< + EquipmentContext & FiremissionContext & TargetContext + >(context); + const { leftButtonMode, setLeftButtonMode } = useTargetSubmenu( + context, + panelId + ); + const { strikeMode, setStrikeMode } = useStrikeMode(context); + const { setStrikeDirection } = useStrikeDirection(context); + const { firemissionSelected, setFiremissionSelected } = + useTargetFiremissionSelect(context); + const { weaponSelected, setWeaponSelected } = useWeaponSelectedState(context); + const weapons = data.equipment_data.filter((x) => x.is_weapon); + if (leftButtonMode === undefined) { + return [ + { + children: 'STRIKE', + onClick: () => setLeftButtonMode('STRIKE'), + }, + { + children: 'VECTOR', + onClick: () => setLeftButtonMode('VECTOR'), + }, + ]; + } + if (leftButtonMode === 'STRIKE') { + if (strikeMode === 'weapon' && weaponSelected === undefined) { + return weapons.map((x) => { + return { + children: x.shorthand, + onClick: () => { + setWeaponSelected(x.mount_point); + setLeftButtonMode(undefined); + }, + }; + }); + } + if (strikeMode === 'firemission' && firemissionSelected === undefined) { + return data.firemission_data.map((x) => { + return { + children: x.name, + onClick: () => { + setFiremissionSelected(x); + setLeftButtonMode(undefined); + }, + }; + }); + } + return [ + { children: 'CANCEL', onClick: () => setLeftButtonMode(undefined) }, + { + children: 'WEAPON', + onClick: () => { + setWeaponSelected(undefined); + setStrikeMode('weapon'); + }, + }, + { + children: 'F-MISS', + onClick: () => { + setFiremissionSelected(undefined); + setStrikeMode('firemission'); + }, + }, + ]; + } + if (leftButtonMode === 'VECTOR') { + return [ + { children: 'CANCEL', onClick: () => setLeftButtonMode(undefined) }, + { + children: 'SOUTH', + onClick: () => { + setStrikeDirection('SOUTH'); + setLeftButtonMode(undefined); + }, + }, + { + children: 'NORTH', + onClick: () => { + setStrikeDirection('NORTH'); + setLeftButtonMode(undefined); + }, + }, + { + children: 'EAST', + onClick: () => { + setStrikeDirection('EAST'); + setLeftButtonMode(undefined); + }, + }, + { + children: 'WEST', + onClick: () => { + setStrikeDirection('WEST'); + setLeftButtonMode(undefined); + }, + }, + ]; + } + + return []; +}; + +const lazeMapper = (context, offset) => { + const { act, data } = useBackend(context); + const { setSelectedTarget } = useLazeTarget(context); + + const { fmXOffsetValue } = useFiremissionXOffsetValue(context); + const { fmYOffsetValue } = useFiremissionYOffsetValue(context); + + const target = + data.targets_data.length > offset ? data.targets_data[offset] : undefined; + const isDebug = target?.target_name.includes('debug'); + + const buttomLabel = () => { + if (isDebug) { + return 'd-' + target?.target_name.split(' ')[3]; + } + const label = target?.target_name.split(' ')[0] ?? ''; + const squad = label[0] ?? undefined; + const number = label.split('-')[1] ?? undefined; + return squad !== undefined && number !== undefined + ? `${squad}-${number}` + : target?.target_name; + }; + + return { + children: buttomLabel(), + onClick: target + ? () => { + setSelectedTarget(target.target_tag); + act('firemission-dual-offset-camera', { + 'target_id': target.target_tag, + 'x_offset_value': fmXOffsetValue, + 'y_offset_value': fmYOffsetValue, + }); + } + : () => { + act('set-camera', { 'equipment_id': null }); + setSelectedTarget(undefined); + }, + }; +}; + +export const TargetAquisitionMfdPanel = (props: MfdProps, context) => { + const { panelStateId } = props; + + const { act, data } = useBackend< + EquipmentContext & FiremissionContext & TargetContext + >(context); + + const { setPanelState } = mfdState(context, panelStateId); + const { selectedTarget, setSelectedTarget } = useLazeTarget(context); + const { strikeMode } = useStrikeMode(context); + const { strikeDirection } = useStrikeDirection(context); + const { weaponSelected } = useWeaponSelectedState(context); + const { firemissionSelected } = useTargetFiremissionSelect(context); + const { targetOffset, setTargetOffset } = useTargetOffset( + context, + panelStateId + ); + + const { fmXOffsetValue } = useFiremissionXOffsetValue(context); + const { fmYOffsetValue } = useFiremissionYOffsetValue(context); + + const lazes = range(0, 5).map((x) => + x > data.targets_data.length ? undefined : data.targets_data[x] + ); + + const strikeConfigLabel = + strikeMode === 'weapon' + ? data.equipment_data.find((x) => x.mount_point === weaponSelected)?.name + : firemissionSelected !== undefined + ? data.firemission_data.find( + (x) => x.mission_tag === firemissionSelected.mission_tag + )?.name + : 'NONE'; + + const lazeIndex = lazes.findIndex((x) => x?.target_tag === selectedTarget); + const strikeReady = strikeMode !== undefined && lazeIndex !== -1; + + const targets = range(targetOffset, targetOffset + 5).map((x) => + lazeMapper(context, x) + ); + + const getLastName = () => { + const target = data.targets_data[data.targets_data.length - 1] ?? undefined; + const isDebug = target?.target_name.includes('debug'); + if (isDebug) { + return 'debug ' + target.target_name.split(' ')[3]; + } + const label = target?.target_name.split(' ')[0] ?? ''; + const squad = label[0] ?? undefined; + const number = label.split('-')[1] ?? undefined; + + return squad !== undefined && number !== undefined + ? `${squad}-${number}` + : target?.target_name; + }; + + if ( + selectedTarget && + data.targets_data.find((x) => `${x.target_tag}` === `${selectedTarget}`) === + undefined + ) { + setSelectedTarget(undefined); + } + + return ( + { + if (strikeMode === undefined) { + return; + } + if (strikeMode === 'firemission') { + act('firemission-execute', { + tag: firemissionSelected?.mission_tag, + direction: strikeDirection + ? directionLookup[strikeDirection] + : 1, + target_id: selectedTarget, + offset_x_value: fmXOffsetValue, + offset_y_value: fmYOffsetValue, + }); + } + if (strikeMode === 'weapon') { + act('fire-weapon', { eqp_tag: weaponSelected }); + } + }, + }, + {}, + {}, + {}, + { + children: targetOffset > 0 ? : undefined, + onClick: () => { + if (targetOffset > 0) { + setTargetOffset(targetOffset - 1); + } + }, + }, + ]} + bottomButtons={[ + { + children: 'EXIT', + onClick: () => setPanelState(''), + }, + {}, + {}, + {}, + { + children: + targetOffset < lazes.length ? ( + + ) : undefined, + onClick: () => { + if (targetOffset < lazes.length) { + setTargetOffset(targetOffset + 1); + } + }, + }, + ]} + leftButtons={leftButtonGenerator(context, panelStateId)} + rightButtons={targets}> + + + + + + + + + + + + + + + + + + + + +

Target Aquisition

+
+ +

Strike mode: {strikeMode?.toUpperCase() ?? 'NONE'}

+
+ +

Strike configuration {strikeConfigLabel}

+
+ +

+ Target selected:{' '} + {lazes.find((x) => x?.target_tag === selectedTarget) + ?.target_name ?? 'NONE'} +

+
+ +

Attack Vector {strikeDirection ?? 'NONE'}

+
+ +

+ Offset {fmXOffsetValue},{fmYOffsetValue} +

+
+ +

+ Guidance computer {strikeReady ? 'READY' : 'INCOMPLETE'} +

+
+
+
+ + + + + {data.targets_data.length === 0 && ( + + + NO TARGETS + + + )} + {data.targets_data.length > 0 && ( + + + SELECT + + + TARGETS + + + {Math.min(5, data.targets_data.length)} of{' '} + {data.targets_data.length} + + {data.targets_data.length > 0 && ( + <> + + LATEST + + + {getLastName()} + + + )} + + )} + + + + +
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/WeaponPanel.tsx b/tgui/packages/tgui/interfaces/MfdPanels/WeaponPanel.tsx new file mode 100644 index 000000000000..090001aa3ac9 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/WeaponPanel.tsx @@ -0,0 +1,179 @@ +import { range } from 'common/collections'; +import { useBackend } from '../../backend'; +import { Box, Stack } from '../../components'; +import { DropshipEquipment } from '../DropshipWeaponsConsole'; +import { MfdProps, MfdPanel } from './MultifunctionDisplay'; +import { mfdState, useWeaponState } from './stateManagers'; +import { LazeTarget } from './types'; + +const EmptyWeaponPanel = (props, context) => { + return
Nothing Listed
; +}; +interface EquipmentContext { + equipment_data: Array; + targets_data: Array; +} + +const getLazeButtonProps = (context) => { + const { act, data } = useBackend(context); + const lazes = range(0, 5).map((x) => + x > data.targets_data.length ? undefined : data.targets_data[x] + ); + const get_laze = (index: number) => { + const laze = lazes.find((_, i) => i === index); + if (laze === undefined) { + return { + children: '', + onClick: () => act('set-camera', { equipment_id: null }), + }; + } + return { + children: laze?.target_name.split(' ')[0] ?? 'NONE', + onClick: laze + ? () => act('set-camera', { 'equipment_id': laze.target_tag }) + : undefined, + }; + }; + return [get_laze(0), get_laze(1), get_laze(2), get_laze(3), get_laze(4)]; +}; + +const WeaponPanel = (props: { equipment: DropshipEquipment }, context) => { + return ( + + + + + ACTIONS + + {false && ( + + )} + {false && ( + + )} + {false && ( + + )} + + {false && ( + + )} + {false && ( + + )} + + + + + + +

{props.equipment.name}

+
+ +

{props.equipment.ammo_name}

+
+ +

+ Ammo {props.equipment.ammo} / {props.equipment.max_ammo} +

+
+
+
+
+ + + + + SELECT + + + TARGETS + + + + + + + + + + +
+ ); +}; + +export const WeaponMfdPanel = (props: MfdProps, context) => { + const { setPanelState } = mfdState(context, props.panelStateId); + const { weaponState } = useWeaponState(context, props.panelStateId); + const { data, act } = useBackend(context); + const weap = data.equipment_data.find((x) => x.mount_point === weaponState); + + return ( + act('fire-weapon', { eqp_tag: weap?.eqp_tag }), + }, + ]} + bottomButtons={[ + { + children: 'EXIT', + onClick: () => setPanelState(''), + }, + {}, + ]} + topButtons={[ + { + children: 'EQUIP', + onClick: () => setPanelState('equipment'), + }, + ]} + rightButtons={getLazeButtonProps(context)}> + + {weap ? : } + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/stateManagers.ts b/tgui/packages/tgui/interfaces/MfdPanels/stateManagers.ts new file mode 100644 index 000000000000..e639938eabf8 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/stateManagers.ts @@ -0,0 +1,109 @@ +import { useLocalState, useSharedState } from '../../backend'; + +export const useEquipmentState = (context, panelId: string) => { + const [data, set] = useSharedState( + context, + `${panelId}_equipmentstate`, + undefined + ); + return { + equipmentState: data, + setEquipmentState: set, + }; +}; + +export const fmState = (context, panelId: string) => { + const [data, set] = useLocalState( + context, + `${panelId}_selected_fm`, + undefined + ); + return { + selectedFm: data, + setSelectedFm: set, + }; +}; + +export const fmEditState = (context, panelId: string) => { + const [data, set] = useLocalState( + context, + `${panelId}_edit_fm`, + false + ); + return { + editFm: data, + setEditFm: set, + }; +}; + +export const fmWeaponEditState = (context, panelId: string) => { + const [data, set] = useLocalState( + context, + `${panelId}_edit_fm_weapon`, + undefined + ); + return { + editFmWeapon: data, + setEditFmWeapon: set, + }; +}; + +export const mfdState = (context, panelId: string) => { + const [data, set] = useSharedState( + context, + `${panelId}_panelstate`, + '' + ); + return { + panelState: data, + setPanelState: set, + }; +}; + +export const useWeaponState = (context, panelId: string) => { + const [data, set] = useSharedState( + context, + `${panelId}_weaponstate`, + undefined + ); + return { + weaponState: data, + setWeaponState: set, + }; +}; + +export const useFiremissionXOffsetValue = (context) => { + const [data, set] = useSharedState( + context, + 'firemission-x-offset-value', + 0 + ); + return { + fmXOffsetValue: data, + setFmXOffsetValue: set, + }; +}; + +export const useFiremissionYOffsetValue = (context) => { + const [data, set] = useSharedState( + context, + 'firemission-y-offset-value', + 0 + ); + return { + fmYOffsetValue: data, + setFmYOffsetValue: set, + }; +}; + +export const useLazeTarget = (context) => { + const [data, set] = useSharedState( + context, + 'laze-target', + undefined + ); + return { + selectedTarget: data, + setSelectedTarget: set, + }; +}; diff --git a/tgui/packages/tgui/interfaces/MfdPanels/types.ts b/tgui/packages/tgui/interfaces/MfdPanels/types.ts new file mode 100644 index 000000000000..78e7c3314b30 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MfdPanels/types.ts @@ -0,0 +1,112 @@ +import { InfernoNode } from 'inferno'; +import { DropshipEquipment } from '../DropshipWeaponsConsole'; + +export interface ButtonProps { + children?: InfernoNode; + onClick?: () => void; +} + +export type LazeTarget = { + target_name: string; + target_tag: number; +}; + +export type TargetContext = { + targets_data: Array; +}; + +export type FultonProps = { + fulton_targets: Array; + equipment_data: Array; +}; + +export type MedevacTargets = { + area: string; + occupant: string; + ref: string; + triage_card?: string; + damage?: { + hp: number; + brute: number; + oxy: number; + tox: number; + fire: number; + undefib: number; + }; +}; + +export type CameraProps = { + camera_map_ref?: string; +}; + +export type EquipmentContext = { + equipment_data: Array; +}; + +export type MedevacContext = { + medevac_targets: Array; + equipment_data: Array; +}; + +export type FiremissionContext = { + firemission_data: Array; +}; + +export type SentrySpec = { + rounds?: number; + max_rounds?: number; + name: string; + area: string; + active: 0 | 1; + index: number; + engaged?: number; + nickname: string; + health: number; + health_max: number; + kills: number; + iff_status: string[]; + camera_available: number; + deployed: number; +}; + +export type SpotlightSpec = { + name: string; +}; + +export type MGSpec = { + name: string; + health: number; + health_max: number; + rounds: number; + max_rounds: number; + deployed: 0 | 1; +}; + +export type CasFiremissionStage = { + weapon: number; + offsets: Array; +}; + +export type CasFiremission = { + name: string; + mission_length: number; + records: Array; + mission_tag: number; +}; + +export type MapProps = { + tactical_map_ref: string; +}; + +export const dirMap = (dir) => { + switch (dir) { + case 'NORTH': + return 1; + case 'SOUTH': + return 2; + case 'EAST': + return 4; + case 'WEST': + return 8; + } +}; diff --git a/tgui/packages/tgui/interfaces/Mortar.js b/tgui/packages/tgui/interfaces/Mortar.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Mortar.js rename to tgui/packages/tgui/interfaces/Mortar.jsx diff --git a/tgui/packages/tgui/interfaces/NuclearBomb.js b/tgui/packages/tgui/interfaces/NuclearBomb.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/NuclearBomb.js rename to tgui/packages/tgui/interfaces/NuclearBomb.jsx diff --git a/tgui/packages/tgui/interfaces/Orbit/index.tsx b/tgui/packages/tgui/interfaces/Orbit/index.tsx index 83dfe3b361b2..899947e1bec9 100644 --- a/tgui/packages/tgui/interfaces/Orbit/index.tsx +++ b/tgui/packages/tgui/interfaces/Orbit/index.tsx @@ -118,6 +118,15 @@ const ObservableContent = (props, context) => { survivors = [], xenos = [], ert_members = [], + upp = [], + clf = [], + wy = [], + twe = [], + freelancer = [], + mercenary = [], + contractor = [], + dutch = [], + marshal = [], synthetics = [], predators = [], animals = [], @@ -145,6 +154,43 @@ const ObservableContent = (props, context) => { section={synthetics} title="Synthetics" /> + + + + + + + + + diff --git a/tgui/packages/tgui/interfaces/Orbit/types.ts b/tgui/packages/tgui/interfaces/Orbit/types.ts index 3fe11af8e625..afbed5b16468 100644 --- a/tgui/packages/tgui/interfaces/Orbit/types.ts +++ b/tgui/packages/tgui/interfaces/Orbit/types.ts @@ -7,6 +7,15 @@ export type OrbitData = { survivors: Observable[]; xenos: Observable[]; ert_members: Observable[]; + upp: Observable[]; + twe: Observable[]; + clf: Observable[]; + wy: Observable[]; + freelancer: Observable[]; + contractor: Observable[]; + mercenary: Observable[]; + dutch: Observable[]; + marshal: Observable[]; synthetics: Observable[]; predators: Observable[]; animals: Observable[]; diff --git a/tgui/packages/tgui/interfaces/OrbitalCannonConsole.js b/tgui/packages/tgui/interfaces/OrbitalCannonConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/OrbitalCannonConsole.js rename to tgui/packages/tgui/interfaces/OrbitalCannonConsole.jsx diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.js b/tgui/packages/tgui/interfaces/OverwatchConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/OverwatchConsole.js rename to tgui/packages/tgui/interfaces/OverwatchConsole.jsx diff --git a/tgui/packages/tgui/interfaces/PartFabricator.js b/tgui/packages/tgui/interfaces/PartFabricator.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/PartFabricator.js rename to tgui/packages/tgui/interfaces/PartFabricator.jsx diff --git a/tgui/packages/tgui/interfaces/PhoneMenu.js b/tgui/packages/tgui/interfaces/PhoneMenu.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/PhoneMenu.js rename to tgui/packages/tgui/interfaces/PhoneMenu.jsx diff --git a/tgui/packages/tgui/interfaces/PlayerPanel.js b/tgui/packages/tgui/interfaces/PlayerPanel.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/PlayerPanel.js rename to tgui/packages/tgui/interfaces/PlayerPanel.jsx diff --git a/tgui/packages/tgui/interfaces/PodLauncher.js b/tgui/packages/tgui/interfaces/PodLauncher.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/PodLauncher.js rename to tgui/packages/tgui/interfaces/PodLauncher.jsx diff --git a/tgui/packages/tgui/interfaces/Proximity.js b/tgui/packages/tgui/interfaces/Proximity.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Proximity.js rename to tgui/packages/tgui/interfaces/Proximity.jsx diff --git a/tgui/packages/tgui/interfaces/Radio.js b/tgui/packages/tgui/interfaces/Radio.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Radio.js rename to tgui/packages/tgui/interfaces/Radio.jsx diff --git a/tgui/packages/tgui/interfaces/ResearchDoorDisplay.js b/tgui/packages/tgui/interfaces/ResearchDoorDisplay.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/ResearchDoorDisplay.js rename to tgui/packages/tgui/interfaces/ResearchDoorDisplay.jsx diff --git a/tgui/packages/tgui/interfaces/ResearchMemories.js b/tgui/packages/tgui/interfaces/ResearchMemories.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/ResearchMemories.js rename to tgui/packages/tgui/interfaces/ResearchMemories.jsx diff --git a/tgui/packages/tgui/interfaces/STUI.js b/tgui/packages/tgui/interfaces/STUI.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/STUI.js rename to tgui/packages/tgui/interfaces/STUI.jsx diff --git a/tgui/packages/tgui/interfaces/SelfDestructConsole.js b/tgui/packages/tgui/interfaces/SelfDestructConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/SelfDestructConsole.js rename to tgui/packages/tgui/interfaces/SelfDestructConsole.jsx diff --git a/tgui/packages/tgui/interfaces/Sentencing.js b/tgui/packages/tgui/interfaces/Sentencing.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Sentencing.js rename to tgui/packages/tgui/interfaces/Sentencing.jsx diff --git a/tgui/packages/tgui/interfaces/Signaller.js b/tgui/packages/tgui/interfaces/Signaller.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Signaller.js rename to tgui/packages/tgui/interfaces/Signaller.jsx diff --git a/tgui/packages/tgui/interfaces/SkillsMenu.js b/tgui/packages/tgui/interfaces/SkillsMenu.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/SkillsMenu.js rename to tgui/packages/tgui/interfaces/SkillsMenu.jsx diff --git a/tgui/packages/tgui/interfaces/Sleeper.js b/tgui/packages/tgui/interfaces/Sleeper.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Sleeper.js rename to tgui/packages/tgui/interfaces/Sleeper.jsx diff --git a/tgui/packages/tgui/interfaces/Smes.js b/tgui/packages/tgui/interfaces/Smes.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Smes.js rename to tgui/packages/tgui/interfaces/Smes.jsx diff --git a/tgui/packages/tgui/interfaces/SquadInfo.tsx b/tgui/packages/tgui/interfaces/SquadInfo.tsx index 7adb47af9730..f574818b1e7d 100644 --- a/tgui/packages/tgui/interfaces/SquadInfo.tsx +++ b/tgui/packages/tgui/interfaces/SquadInfo.tsx @@ -135,7 +135,7 @@ const FireTeam = (props: { ft: string }, context) => { fireteam?.tl?.name === 'Not assigned' || fireteam?.tl?.name === 'Unassigned' || fireteam?.tl?.name === undefined); - const rankList = ['Mar', 'ass', 'Med', 'Eng', 'SG', 'Spc', 'RTO', 'SL']; + const rankList = ['Mar', 'ass', 'Med', 'Eng', 'SG', 'Spc', 'TL', 'SL']; const rankSort = (a: SquadMarineEntry, b: SquadMarineEntry) => { if (a.rank === 'Mar' && b.rank === 'Mar') { return a.paygrade === 'PFC' ? -1 : 1; @@ -283,7 +283,7 @@ const SquadObjectives = (props, context) => { }; export const SquadInfo = (_, context) => { - const { config, data } = useBackend(context); + const { data } = useBackend(context); const fireteams = ['FT1', 'FT2', 'FT3', 'Unassigned']; return ( diff --git a/tgui/packages/tgui/interfaces/SquadMod.js b/tgui/packages/tgui/interfaces/SquadMod.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/SquadMod.js rename to tgui/packages/tgui/interfaces/SquadMod.jsx diff --git a/tgui/packages/tgui/interfaces/StatbrowserOptions.js b/tgui/packages/tgui/interfaces/StatbrowserOptions.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/StatbrowserOptions.js rename to tgui/packages/tgui/interfaces/StatbrowserOptions.jsx diff --git a/tgui/packages/tgui/interfaces/StationAlertConsole.js b/tgui/packages/tgui/interfaces/StationAlertConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/StationAlertConsole.js rename to tgui/packages/tgui/interfaces/StationAlertConsole.jsx diff --git a/tgui/packages/tgui/interfaces/SupplyDropConsole.js b/tgui/packages/tgui/interfaces/SupplyDropConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/SupplyDropConsole.js rename to tgui/packages/tgui/interfaces/SupplyDropConsole.jsx diff --git a/tgui/packages/tgui/interfaces/TacmapAdminPanel.js b/tgui/packages/tgui/interfaces/TacmapAdminPanel.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/TacmapAdminPanel.js rename to tgui/packages/tgui/interfaces/TacmapAdminPanel.jsx diff --git a/tgui/packages/tgui/interfaces/TacticalMap.tsx b/tgui/packages/tgui/interfaces/TacticalMap.tsx index 92996038719f..34f214b1d1d3 100644 --- a/tgui/packages/tgui/interfaces/TacticalMap.tsx +++ b/tgui/packages/tgui/interfaces/TacticalMap.tsx @@ -23,7 +23,7 @@ interface TacMapProps { mapRef: string; currentMenu: string; lastUpdateTime: any; - nextCanvasTime: any; + canvasCooldownDuration: any; canvasCooldown: any; exportedTacMapImage: any; tacmapReady: number; @@ -31,7 +31,7 @@ interface TacMapProps { const PAGES = [ { - title: 'tacmap', + title: 'Live Tacmap', canOpen: (data) => { return 1; }, @@ -42,7 +42,7 @@ const PAGES = [ }, }, { - title: 'old canvas', + title: 'Map View', canOpen: (data) => { return 1; }, @@ -53,7 +53,7 @@ const PAGES = [ }, }, { - title: 'new canvas', + title: 'Canvas', canOpen: (data) => { return data.tacmapReady; }, @@ -192,7 +192,7 @@ const OldMapPanel = (props, context) => { const DrawMapPanel = (props, context) => { const { data, act } = useBackend(context); - const timeLeftPct = data.canvasCooldown / data.nextCanvasTime; + const timeLeftPct = data.canvasCooldown / data.canvasCooldownDuration; const canUpdate = data.canvasCooldown <= 0 && !data.updatedCanvas; const handleTacMapExport = (image: any) => { diff --git a/tgui/packages/tgui/interfaces/Tank.js b/tgui/packages/tgui/interfaces/Tank.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Tank.js rename to tgui/packages/tgui/interfaces/Tank.jsx diff --git a/tgui/packages/tgui/interfaces/TechControl.js b/tgui/packages/tgui/interfaces/TechControl.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/TechControl.js rename to tgui/packages/tgui/interfaces/TechControl.jsx diff --git a/tgui/packages/tgui/interfaces/TechMemories.js b/tgui/packages/tgui/interfaces/TechMemories.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/TechMemories.js rename to tgui/packages/tgui/interfaces/TechMemories.jsx diff --git a/tgui/packages/tgui/interfaces/TechNode.js b/tgui/packages/tgui/interfaces/TechNode.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/TechNode.js rename to tgui/packages/tgui/interfaces/TechNode.jsx diff --git a/tgui/packages/tgui/interfaces/TeleporterConsole.js b/tgui/packages/tgui/interfaces/TeleporterConsole.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/TeleporterConsole.js rename to tgui/packages/tgui/interfaces/TeleporterConsole.jsx diff --git a/tgui/packages/tgui/interfaces/Timer.js b/tgui/packages/tgui/interfaces/Timer.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Timer.js rename to tgui/packages/tgui/interfaces/Timer.jsx diff --git a/tgui/packages/tgui/interfaces/TutorialMenu.tsx b/tgui/packages/tgui/interfaces/TutorialMenu.tsx new file mode 100644 index 000000000000..ee22f1a02996 --- /dev/null +++ b/tgui/packages/tgui/interfaces/TutorialMenu.tsx @@ -0,0 +1,149 @@ +import { classes } from 'common/react'; +import { useBackend, useLocalState } from '../backend'; +import { Section, Stack, Box, Divider, Button, Tabs } from '../components'; +import { Window } from '../layouts'; + +type Tutorial = { + name: string; + path: string; + id: string; + description: string; + image: string; +}; + +type TutorialCategory = { + tutorials: Tutorial[]; + name: string; +}; + +type BackendContext = { + tutorial_categories: TutorialCategory[]; + completed_tutorials: string[]; +}; + +export const TutorialMenu = (props, context) => { + const { data, act } = useBackend(context); + const { tutorial_categories, completed_tutorials } = data; + const [chosenTutorial, setTutorial] = useLocalState( + context, + 'tutorial', + null + ); + const [categoryIndex, setCategoryIndex] = useLocalState( + context, + 'category_index', + 'Space Station 13' + ); + return ( + + + + + + + {tutorial_categories.map((item, key) => ( + { + setCategoryIndex(item.name); + }}> + {item.name} + + ))} + + + + + +
+ {tutorial_categories.map( + (tutorial_category) => + tutorial_category.name === categoryIndex && + tutorial_category.tutorials.map((tutorial) => ( +
+ +
+ )) + )} +
+
+ + +
+ {chosenTutorial !== null ? ( + + +
+ + + +
+
+ {chosenTutorial.description} + {completed_tutorials.indexOf(chosenTutorial.id) === -1 ? ( +
+ ) : ( + + Tutorial has been completed. + + )} + +
+
+
+
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/VehicleStatus.js b/tgui/packages/tgui/interfaces/VehicleStatus.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/VehicleStatus.js rename to tgui/packages/tgui/interfaces/VehicleStatus.jsx diff --git a/tgui/packages/tgui/interfaces/VoteMenu.js b/tgui/packages/tgui/interfaces/VoteMenu.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/VoteMenu.js rename to tgui/packages/tgui/interfaces/VoteMenu.jsx diff --git a/tgui/packages/tgui/interfaces/VoxPanel.js b/tgui/packages/tgui/interfaces/VoxPanel.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/VoxPanel.js rename to tgui/packages/tgui/interfaces/VoxPanel.jsx diff --git a/tgui/packages/tgui/interfaces/WeaponStats.js b/tgui/packages/tgui/interfaces/WeaponStats.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/WeaponStats.js rename to tgui/packages/tgui/interfaces/WeaponStats.jsx diff --git a/tgui/packages/tgui/interfaces/Wires.js b/tgui/packages/tgui/interfaces/Wires.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/Wires.js rename to tgui/packages/tgui/interfaces/Wires.jsx diff --git a/tgui/packages/tgui/interfaces/WorkingJoe.js b/tgui/packages/tgui/interfaces/WorkingJoe.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/WorkingJoe.js rename to tgui/packages/tgui/interfaces/WorkingJoe.jsx diff --git a/tgui/packages/tgui/interfaces/common/AccessList.js b/tgui/packages/tgui/interfaces/common/AccessList.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/common/AccessList.js rename to tgui/packages/tgui/interfaces/common/AccessList.jsx diff --git a/tgui/packages/tgui/interfaces/common/BeakerContents.js b/tgui/packages/tgui/interfaces/common/BeakerContents.jsx similarity index 100% rename from tgui/packages/tgui/interfaces/common/BeakerContents.js rename to tgui/packages/tgui/interfaces/common/BeakerContents.jsx diff --git a/tgui/packages/tgui/interfaces/common/Dpad.tsx b/tgui/packages/tgui/interfaces/common/Dpad.tsx new file mode 100644 index 000000000000..faa2264eb452 --- /dev/null +++ b/tgui/packages/tgui/interfaces/common/Dpad.tsx @@ -0,0 +1,113 @@ +import { useBackend } from '../../backend'; +import { Box, Button, Stack } from '../../components'; +import { useFiremissionXOffsetValue, useFiremissionYOffsetValue, useLazeTarget } from '../MfdPanels/stateManagers'; + +const SvgButton = ( + props: { transform?: string; onClick?: (e: any) => void }, + context +) => { + return ( + + + + + + + ); +}; + +export const Dpad = (props, context) => { + const { act } = useBackend(context); + const { selectedTarget } = useLazeTarget(context); + + const { fmXOffsetValue, setFmXOffsetValue } = + useFiremissionXOffsetValue(context); + const { fmYOffsetValue, setFmYOffsetValue } = + useFiremissionYOffsetValue(context); + + const min_value = -12; + const max_value = 12; + const updateOffset = (e, xValue, yValue) => { + if (xValue < min_value || yValue < min_value) { + return; + } + if (xValue > max_value || yValue > max_value) { + return; + } + setFmXOffsetValue(xValue); + setFmYOffsetValue(yValue); + act('firemission-dual-offset-camera', { + 'target_id': selectedTarget, + 'x_offset_value': xValue, + 'y_offset_value': yValue, + }); + }; + + return ( + + + + + + + + updateOffset(e, fmXOffsetValue - 1, fmYOffsetValue) + } + /> + + + + + + + + + updateOffset(e, fmXOffsetValue, fmYOffsetValue + 1) + } + /> + + +