From d1f6ffc7aa26322f1d7c9eb6cf9c4a63a7e00632 Mon Sep 17 00:00:00 2001 From: "B.A.L" Date: Sun, 21 Apr 2019 14:52:59 -0700 Subject: [PATCH 001/143] Removes boards --- code/modules/research/designs/comp_board_designs.dm | 10 ---------- code/modules/research/designs/machine_designs.dm | 10 ---------- 2 files changed, 20 deletions(-) diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 9d555d8cf32..821ef606518 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -332,16 +332,6 @@ build_path = /obj/item/circuitboard/comm_traffic category = list("Computer Boards") -/datum/design/telesci_console - name = "Console Board (Telepad Control Console)" - desc = "Allows for the construction of circuit boards used to build a telescience console." - id = "telesci_console" - req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000) - build_path = /obj/item/circuitboard/telesci_console - category = list("Computer Boards") - /datum/design/teleconsole name = "Console Board (Teleporter Console)" desc = "Allows for the construction of circuit boards used to build a teleporter control console." diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index a23378f5513..c604105dc04 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -72,16 +72,6 @@ build_path = /obj/item/circuitboard/quantumpad category = list ("Teleportation Machinery") -/datum/design/telepad - name = "Machine Board (Telepad Board)" - desc = "Allows for the construction of circuit boards used to build a Telepad." - id = "telepad" - req_tech = list("programming" = 4, "bluespace" = 5, "plasmatech" = 4, "engineering" = 4) - build_type = IMPRINTER - materials = list(MAT_GLASS = 1000) - build_path = /obj/item/circuitboard/telesci_pad - category = list ("Teleportation Machinery") - /datum/design/teleport_hub name = "Machine Board (Teleportation Hub)" desc = "Allows for the construction of circuit boards used to build a Teleportation Hub." From 9976ad9ea1aacef79515aa82ba23d7b5e54e029c Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 27 Feb 2019 18:58:54 +0000 Subject: [PATCH 002/143] Adds airlock spawners --- code/ATMOSPHERICS/atmospherics.dm | 6 + code/ATMOSPHERICS/datum_pipeline.dm | 8 +- code/__DEFINES/misc.dm | 5 + code/controllers/subsystem/air.dm | 4 +- .../airlock_controllers.dm | 3 +- .../effects/spawners/airlock_spawner.dm | 358 ++++++++++++++++++ icons/obj/airlock_spawner.dmi | Bin 0 -> 83226 bytes paradise.dme | 1 + 8 files changed, 381 insertions(+), 4 deletions(-) create mode 100644 code/game/objects/effects/spawners/airlock_spawner.dm create mode 100644 icons/obj/airlock_spawner.dmi diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index ede0351993b..f10a77b8821 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -226,6 +226,12 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) var/turf/T = loc level = T.intact ? 2 : 1 add_fingerprint(usr) + if(!SSair.initialized) //If there's no atmos subsystem, we can't really initialize pipenets + SSair.machinery_to_construct.Add(src) + return + initialize_atmos_network() + +/obj/machinery/atmospherics/proc/initialize_atmos_network() atmos_init() var/list/nodes = pipeline_expansion() for(var/obj/machinery/atmospherics/A in nodes) diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 43082c38ded..11ce632d917 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -100,6 +100,8 @@ var/pipenetwarnings = 10 addMachineryMember(A) /datum/pipeline/proc/merge(datum/pipeline/E) + if(!E) //Uh oh + return air.volume += E.air.volume members.Add(E.members) for(var/obj/machinery/atmospherics/pipe/S in E.members) @@ -115,10 +117,12 @@ var/pipenetwarnings = 10 /obj/machinery/atmospherics/proc/addMember(obj/machinery/atmospherics/A) var/datum/pipeline/P = returnPipenet(A) - P.addMember(A, src) + if(P) //Sanity checking + P.addMember(A, src) /obj/machinery/atmospherics/pipe/addMember(obj/machinery/atmospherics/A) - parent.addMember(A, src) + if(parent && A) //Sanity checking + parent.addMember(A, src) /datum/pipeline/proc/temporarily_store_air() //Update individual gas_mixtures by volume ratio diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index dff9426c641..6de6113ac8c 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -170,7 +170,12 @@ for(type in view(range, dview_mob)) #define END_FOR_DVIEW dview_mob.loc = null +//Turf locational stuff #define get_turf(A) (get_step(A, 0)) +#define NORTH_OF_TURF(T) locate(T.x, T.y + 1, T.z) +#define EAST_OF_TURF(T) locate(T.x + 1, T.y, T.z) +#define SOUTH_OF_TURF(T) locate(T.x, T.y - 1, T.z) +#define WEST_OF_TURF(T) locate(T.x - 1, T.y, T.z) #define MIN_SUPPLIED_LAW_NUMBER 15 #define MAX_SUPPLIED_LAW_NUMBER 50 diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 79de45c3248..fe48494f321 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -30,6 +30,7 @@ SUBSYSTEM_DEF(air) var/list/networks = list() var/list/atmos_machinery = list() var/list/pipe_init_dirs_cache = list() + var/list/machinery_to_construct = list() @@ -67,9 +68,10 @@ SUBSYSTEM_DEF(air) setup_allturfs() setup_atmos_machinery(GLOB.machines) setup_pipenets(GLOB.machines) + for(var/obj/machinery/atmospherics/A in machinery_to_construct) + A.initialize_atmos_network() return ..() - /datum/controller/subsystem/air/fire(resumed = 0) var/timer = TICK_USAGE_REAL diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm index 5209003fc59..75988790a1a 100644 --- a/code/game/machinery/embedded_controller/airlock_controllers.dm +++ b/code/game/machinery/embedded_controller/airlock_controllers.dm @@ -14,7 +14,8 @@ /obj/machinery/embedded_controller/radio/airlock/Initialize() ..() - program = new/datum/computer/file/embedded_program/airlock(src) + spawn(25) //Necessary as we initialize before we can use a timer. We need a bit of delay as otherwise the program may grab incorrect values + program = new/datum/computer/file/embedded_program/airlock(src) //Advanced airlock controller for when you want a more versatile airlock controller - useful for turning simple access control rooms into airlocks /obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller diff --git a/code/game/objects/effects/spawners/airlock_spawner.dm b/code/game/objects/effects/spawners/airlock_spawner.dm new file mode 100644 index 00000000000..d6473c9e924 --- /dev/null +++ b/code/game/objects/effects/spawners/airlock_spawner.dm @@ -0,0 +1,358 @@ +/* +Spawners for mappers. Just plonk one down of the desired size and it will place the machinery for you. The red arrow things indicate where the chamber is. +This spawner places pipe leading up to the interior door, you will need to finish it off yourself with a connector, canister, and pipe connecting the two. It also assumes you already put in wall and floor. +*/ + +#define HALF_X round((tiles_in_x_direction - 1) * 0.5) //These are required so that the airlock can be in the middle of the chamber wall +#define HALF_Y round((tiles_in_y_direction - 1) * 0.5) +#define CHAMBER_LONG 1 +#define CHAMBER_SQUARE 2 +#define CHAMBER_BIGGER 3 +#define DOOR_NORMAL_PLACEMENT 1 +#define DOOR_FLIPPED_PLACEMENT 2 + +#define AIRPUMP_TAG "[id_to_link]_pump" +#define SENSOR_TAG "[id_to_link]_sensor" +#define OUTER_DOOR_TAG "[id_to_link]_outer" +#define INNER_DOOR_TAG "[id_to_link]_inner" + +/obj/effect/spawner/airlock + name = "1 by 1 airlock spawner (interior north, exterior south)" + desc = "If you can see this, there's probably a missing airlock here. Better tell an admin and report this on the github." + icon = 'icons/obj/airlock_spawner.dmi' + icon_state = "1x1_N_to_S" + layer = SPLASHSCREEN_PLANE //So we absolutely always appear above everything else. We delete ourself after spawning so this is fine + var/interior_direction = NORTH //This is also the direction the spawner will send the pipe + var/exterior_direction = SOUTH + var/opposite_interior_direction //We're checking these often enough for them to merit their own vars + var/interior_direction_cw + var/interior_direction_ccw + var/north_or_south_interior //Used a bit everywhere for locational stuff + var/north_or_south_exterior //Likewise + var/tiles_in_x_direction = 1 + var/tiles_in_y_direction = 1 + var/id_to_link + var/radio_frequency = 1379 + var/required_access = list(access_external_airlocks) + var/door_name = "external access" + var/door_type = /obj/machinery/door/airlock/external/glass + var/one_door_interior //For square airlocks, if you set this then a) only one door will spawn, and b) you can choose if the door should go opposite to how it normally goes. Please use the define + var/one_door_exterior //See above + +/obj/effect/spawner/airlock/Initialize() + ..() + forceMove(locate(x + 1, y + 1, z)) //Needs to move because our icon_state implies we are one turf to the northeast, when we're not + opposite_interior_direction = turn(interior_direction, 180) //Do it this way (instead of setting it directly) to avoid code mishaps + interior_direction_cw = turn(interior_direction, 90) + interior_direction_ccw = turn(interior_direction, 270) + if(interior_direction == NORTH || interior_direction == SOUTH) + north_or_south_interior = TRUE + if(exterior_direction == NORTH || exterior_direction == SOUTH) + north_or_south_exterior = TRUE + id_to_link = "[UID()]" //We want unique IDs, this will give us a unique ID + var/turf/turf_interior = get_airlock_location(interior_direction) + var/turf/turf_exterior = get_airlock_location(exterior_direction) + handle_door_creation(turf_interior, TRUE, one_door_interior) + handle_door_creation(turf_exterior, FALSE, one_door_exterior) + handle_control_placement() + handle_pipes_n_shit(turf_interior) + qdel(src) + +/obj/effect/spawner/airlock/proc/get_airlock_location(desired_direction) //Finds a turf to place an airlock and returns it, this turf will be in the middle of the relevant wall + var/turf/T + switch(desired_direction) + if(NORTH) + T = locate(x + HALF_X, y + tiles_in_y_direction, z) + if(SOUTH) + T = locate(x + HALF_X, y - 1, z) + if(EAST) + T = locate(x + tiles_in_x_direction, y + HALF_Y, z) + if(WEST) + T = locate(x - 1, y + HALF_Y, z) + return T + +/obj/effect/spawner/airlock/proc/handle_door_creation(turf/T, is_this_an_interior_airlock, one_door_only) //Creates a door (or two) and also creates a button + var/obj/machinery/door/airlock/A + if(one_door_only != DOOR_FLIPPED_PLACEMENT) + A = new door_type(T) + handle_door_stuff(A, is_this_an_interior_airlock) + var/obj/machinery/access_button/the_button = spawn_button(T, is_this_an_interior_airlock ? interior_direction : exterior_direction) + if(one_door_only == DOOR_NORMAL_PLACEMENT) //We only need one door, we are done + return + if(!(tiles_in_x_direction % 2) && (is_this_an_interior_airlock && north_or_south_interior || !is_this_an_interior_airlock && north_or_south_exterior)) //Handle extra airlock for aesthetics + A = new door_type(get_step(T, EAST)) + handle_door_stuff(A, is_this_an_interior_airlock) + if(one_door_only == DOOR_FLIPPED_PLACEMENT) + the_button.forceMove(get_step(the_button, EAST)) + else if(!(tiles_in_y_direction % 2) && (is_this_an_interior_airlock && !north_or_south_interior || !is_this_an_interior_airlock && !north_or_south_exterior)) //Handle extra airlock for aesthetics + A = new door_type(get_step(T, NORTH)) + handle_door_stuff(A, is_this_an_interior_airlock) + if(one_door_only == DOOR_FLIPPED_PLACEMENT) + the_button.forceMove(get_step(the_button, NORTH)) + +/obj/effect/spawner/airlock/proc/handle_door_stuff(obj/machinery/door/airlock/A, is_this_an_interior_airlock) //This sets up the door vars correctly and then locks it before first use + A.set_frequency(radio_frequency) + A.id_tag = is_this_an_interior_airlock ? INNER_DOOR_TAG : OUTER_DOOR_TAG + A.req_access = required_access + A.name = door_name + A.lock() + +/obj/effect/spawner/airlock/proc/spawn_button(turf/T, some_direction) + var/obj/machinery/access_button/the_button = new(T) + the_button.master_tag = id_to_link + the_button.set_frequency(radio_frequency) + switch(some_direction) + if(NORTH) + the_button.pixel_x -= 25 + the_button.pixel_y = 7 + if(EAST) + the_button.pixel_x = 7 + the_button.pixel_y = -25 + if(SOUTH) + the_button.pixel_x -= 25 + the_button.pixel_y -= 7 + if(WEST) + the_button.pixel_x -= 7 + the_button.pixel_y -= 25 + the_button.req_access = required_access + return the_button + +/obj/effect/spawner/airlock/proc/handle_control_placement() //Stick the sensor and controller on the same bit of wall, this will ONLY be unsuitable if airlocks are on both the south and west turfs + var/turf/T = get_turf(src) + var/obj/machinery/airlock_sensor/AS = new(T) + var/obj/machinery/embedded_controller/radio/airlock/airlock_controller/AC = new(T) + AC.id_tag = id_to_link + AC.set_frequency(radio_frequency) + AC.tag_airpump = AIRPUMP_TAG + AC.tag_chamber_sensor = SENSOR_TAG + AC.tag_exterior_door = OUTER_DOOR_TAG + AC.tag_interior_door = INNER_DOOR_TAG + AC.req_access = required_access + AS.id_tag = SENSOR_TAG + AS.set_frequency(radio_frequency) + if(interior_direction != WEST && exterior_direction != WEST) //If west wall is free, place stuff there + AC.pixel_x -= 25 + AC.pixel_y += 9 + AS.pixel_x -= 25 + AS.pixel_y -= 9 + else if(interior_direction != SOUTH && exterior_direction != SOUTH) //If south wall is free, place stuff there + AC.pixel_x += 9 + AC.pixel_y -= 25 + AS.pixel_x -= 9 + AS.pixel_y -= 25 + else //Send them over to the other side of the chamber + T = locate(x + tiles_in_x_direction - 1, y + tiles_in_y_direction - 1, z) + AC.forceMove(T) + AS.forceMove(T) + AC.pixel_x += 25 + AC.pixel_y += 9 + AS.pixel_x += 25 + AS.pixel_y -= 9 + +/obj/effect/spawner/airlock/proc/handle_pipes_n_shit(turf/T) //This places all required piping down, then properly initializes it. T is the turf that the interior airlock occupies + var/list/initialize_these_pipes = list() //All the pipes and stuff that needs to be initialized properly. We'll use a list for neater code + var/turf/below_T = get_step(T, opposite_interior_direction) + var/obj/machinery/atmospherics/pipe/manifold/visible/M + var/obj/machinery/atmospherics/pipe/manifold4w/visible/M4W + var/obj/machinery/atmospherics/unary/vent_pump/high_volume/VP + + var/chamber_shape //This determines the layout of the chamber and therefore how many vents should be present + if(tiles_in_x_direction == 2 && tiles_in_y_direction == 2) + chamber_shape = CHAMBER_SQUARE + else if(tiles_in_x_direction > 1 && tiles_in_y_direction > 1) + chamber_shape = CHAMBER_BIGGER + else + chamber_shape = CHAMBER_LONG + + switch(chamber_shape) + if(CHAMBER_LONG) //Easy enough, place a single vent + VP = new(below_T) + VP.dir = interior_direction + initialize_these_pipes.Add(VP) + if(CHAMBER_SQUARE) //We need a T-manifold and two vents for this + M = new(below_T) + initialize_these_pipes.Add(M) + VP = new(get_step(below_T, opposite_interior_direction)) + VP.dir = interior_direction + initialize_these_pipes.Add(VP) + VP = new(north_or_south_interior ? EAST_OF_TURF(below_T) : NORTH_OF_TURF(below_T)) + VP.dir = turn(interior_direction, interior_direction == SOUTH || interior_direction == EAST ? -90 : 90) + initialize_these_pipes.Add(VP) + if(CHAMBER_BIGGER) //We need a central column of manifolds and a vent either side of each manifold + var/depth = north_or_south_interior ? tiles_in_y_direction : tiles_in_x_direction + var/turf/put_thing_here = below_T + for(var/i in 1 to depth) + if(i != depth)//We're placing more pipe later, so we need a 4-way manifold + M4W = new(put_thing_here) + initialize_these_pipes.Add(M4W) + else //We stop here, so place a T-manifold down + M = new(put_thing_here) + M.on_construction(opposite_interior_direction, interior_direction_cw | interior_direction | interior_direction_ccw, null) + VP = new(get_step(put_thing_here, interior_direction_cw)) + VP.dir = interior_direction_ccw + initialize_these_pipes.Add(VP) + VP = new(get_step(put_thing_here, interior_direction_ccw)) + VP.dir = interior_direction_cw + initialize_these_pipes.Add(VP) + put_thing_here = get_step(put_thing_here, opposite_interior_direction) //Now move the turf we're generating stuff from 1 forward + + var/obj/machinery/atmospherics/pipe/simple/visible/P = new(T) + initialize_these_pipes.Add(P) + + var/two_way_pipe = interior_direction | opposite_interior_direction + + for(var/obj/machinery/atmospherics/pipe/simple/visible/HS in initialize_these_pipes) + HS.on_construction(interior_direction, two_way_pipe, null) + for(var/obj/machinery/atmospherics/pipe/manifold4w/visible/HM4W in initialize_these_pipes) + HM4W.on_construction(interior_direction, NORTH | SOUTH | EAST | WEST, null) + for(var/obj/machinery/atmospherics/pipe/manifold/visible/HM in initialize_these_pipes) + HM.on_construction(north_or_south_interior ? WEST : SOUTH, NORTH | EAST | (north_or_south_interior ? SOUTH : WEST), null) + for(var/obj/machinery/atmospherics/unary/vent_pump/high_volume/HVP in initialize_these_pipes) + HVP.on_construction(HVP.dir, HVP.dir, null) + HVP.id_tag = AIRPUMP_TAG + HVP.set_frequency(radio_frequency) + + +//Premade airlocks for mappers, probably won't need all of these but whatever +/obj/effect/spawner/airlock/s_to_n + name = "1 by 1 airlock spawner (interior south, exterior north)" + icon_state = "1x1_S_to_N" + interior_direction = SOUTH + exterior_direction = NORTH +/obj/effect/spawner/airlock/e_to_w + name = "1 by 1 airlock spawner (interior east, exterior west)" + icon_state = "1x1_E_to_W" + interior_direction = EAST + exterior_direction = WEST +/obj/effect/spawner/airlock/w_to_e + name = "1 by 1 airlock spawner (interior west, exterior east)" + icon_state = "1x1_W_to_E" + interior_direction = WEST + exterior_direction = EAST + +/obj/effect/spawner/airlock/long //Long and thin + name = "long airlock spawner (interior north, exterior south)" + icon_state = "1x2_N_to_S" + tiles_in_y_direction = 2 +/obj/effect/spawner/airlock/s_to_n/long + name = "long airlock spawner (interior south, exterior north)" + icon_state = "1x2_S_to_N" + tiles_in_y_direction = 2 +/obj/effect/spawner/airlock/e_to_w/long + name = "long airlock spawner (interior east, exterior west)" + icon_state = "1x2_E_to_W" + tiles_in_x_direction = 2 +/obj/effect/spawner/airlock/w_to_e/long + name = "long airlock spawner (interior west, exterior east)" + icon_state = "1x2_W_to_E" + tiles_in_x_direction = 2 + +/obj/effect/spawner/airlock/long/square //Square + name = "square airlock spawner (interior north, exterior south)" + icon_state = "2x2_N_to_S" + tiles_in_x_direction = 2 +/obj/effect/spawner/airlock/s_to_n/long/square + name = "square airlock spawner (interior south, exterior north)" + icon_state = "2x2_S_to_N" + tiles_in_x_direction = 2 +/obj/effect/spawner/airlock/e_to_w/long/square + name = "square airlock spawner (interior east, exterior west)" + icon_state = "2x2_E_to_W" + tiles_in_y_direction = 2 +/obj/effect/spawner/airlock/w_to_e/long/square + name = "square airlock spawner (interior west, exterior east)" + icon_state = "2x2_W_to_E" + tiles_in_y_direction = 2 +/obj/effect/spawner/airlock/long/square/e_to_s + name = "square airlock spawner (interior east, exterior south)" + icon_state = "2x2_E_to_S" + interior_direction = EAST + exterior_direction = SOUTH + +/obj/effect/spawner/airlock/long/square/wide + name = "rectangular airlock spawner (interior north, exterior south)" + icon_state = "3x2_N_to_S" + tiles_in_x_direction = 3 +/obj/effect/spawner/airlock/s_to_n/long/square/wide + name = "rectangular airlock spawner (interior south, exterior north)" + icon_state = "3x2_S_to_N" + tiles_in_x_direction = 3 +/obj/effect/spawner/airlock/e_to_w/long/square/wide + name = "rectangular airlock spawner (interior east, exterior west)" + icon_state = "3x2_E_to_W" + tiles_in_y_direction = 3 +/obj/effect/spawner/airlock/w_to_e/long/square/wide + name = "rectangular airlock spawner (interior west, exterior east)" + icon_state = "3x2_W_to_E" + tiles_in_y_direction = 3 + +/obj/effect/spawner/airlock/long/square/three + name = "3 by 3 square airlock spawner (interior north, exterior south)" + icon_state = "3x3_N_to_S" + interior_direction = NORTH + exterior_direction = SOUTH + tiles_in_x_direction = 3 + tiles_in_y_direction = 3 + +/obj/effect/spawner/airlock/e_to_w/arrivals + required_access = null + +/obj/effect/spawner/airlock/engineer + required_access = list(access_engine) + door_name = "engineering external access" +/obj/effect/spawner/airlock/e_to_w/engineer + required_access = list(access_engine) + door_name = "engineering external access" +/obj/effect/spawner/airlock/s_to_n/engineer + required_access = list(access_engine) + door_name = "engineering external access" +/obj/effect/spawner/airlock/long/engineer + required_access = list(access_engine) + door_name = "engineering external access" +/obj/effect/spawner/airlock/long/square/engine + required_access = list(access_engine) + door_name = "engine external access" + icon_state = "2x2_N_to_S_leftdoors" + door_type = /obj/machinery/door/airlock/external + one_door_interior = DOOR_NORMAL_PLACEMENT + one_door_exterior = DOOR_NORMAL_PLACEMENT +/obj/effect/spawner/airlock/long/square/engine/reversed + icon_state = "2x2_N_to_S_rightdoors" + one_door_interior = DOOR_FLIPPED_PLACEMENT + one_door_exterior = DOOR_FLIPPED_PLACEMENT + +/obj/effect/spawner/airlock/w_to_e/long/square/wide/mining + door_name = "mining external access" + required_access = list(access_mining) +/obj/effect/spawner/airlock/long/square/wide/mining + door_name = "mining external access" + required_access = list(access_mining) + +/obj/effect/spawner/airlock/e_to_w/minisat + door_name = "minisat external access" + required_access = list(access_minisat) +/obj/effect/spawner/airlock/long/square/e_to_s/telecoms + door_name = "telecoms external access" + required_access = list(access_tcomsat, access_external_airlocks) + door_type = /obj/machinery/door/airlock/external + +/obj/effect/spawner/airlock/long/square/three/syndicate + name = "3 by 3 square airlock spawner (interior west, exterior north)" + icon_state = "3x3_W_to_N" + interior_direction = WEST + exterior_direction = NORTH + door_name = "ship external access" + req_access = list(access_syndicate) + door_type = /obj/machinery/door/airlock/external + +#undef HALF_X +#undef HALF_Y +#undef CHAMBER_LONG +#undef CHAMBER_SQUARE +#undef CHAMBER_BIGGER +#undef DOOR_NORMAL_PLACEMENT +#undef DOOR_FLIPPED_PLACEMENT +#undef AIRPUMP_TAG +#undef SENSOR_TAG +#undef OUTER_DOOR_TAG +#undef INNER_DOOR_TAG diff --git a/icons/obj/airlock_spawner.dmi b/icons/obj/airlock_spawner.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9815b3f42b1c3231cc0fb17e03ac99a26e94fdd4 GIT binary patch literal 83226 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 literal 0 HcmV?d00001 diff --git a/paradise.dme b/paradise.dme index f86c7c479c6..777e48f20aa 100644 --- a/paradise.dme +++ b/paradise.dme @@ -798,6 +798,7 @@ #include "code\game\objects\effects\effect_system\effects_smoke.dm" #include "code\game\objects\effects\effect_system\effects_sparks.dm" #include "code\game\objects\effects\effect_system\effects_water.dm" +#include "code\game\objects\effects\spawners\airlock_spawner.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" #include "code\game\objects\effects\spawners\lootdrop.dm" From cd68096a8f82bc4a2782078e810249f4218446a4 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 6 Apr 2019 15:52:53 +0100 Subject: [PATCH 003/143] Handles airlock controller spawning slightly betterer --- .../airlock_controllers.dm | 19 ++++++++++++++++--- .../effects/spawners/airlock_spawner.dm | 8 +------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm index 75988790a1a..2580eaf760b 100644 --- a/code/game/machinery/embedded_controller/airlock_controllers.dm +++ b/code/game/machinery/embedded_controller/airlock_controllers.dm @@ -14,8 +14,7 @@ /obj/machinery/embedded_controller/radio/airlock/Initialize() ..() - spawn(25) //Necessary as we initialize before we can use a timer. We need a bit of delay as otherwise the program may grab incorrect values - program = new/datum/computer/file/embedded_program/airlock(src) + program = new/datum/computer/file/embedded_program/airlock(src) //Advanced airlock controller for when you want a more versatile airlock controller - useful for turning simple access control rooms into airlocks /obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller @@ -77,6 +76,21 @@ name = "Airlock Controller" tag_secure = 1 +/obj/machinery/embedded_controller/radio/airlock/airlock_controller/New(loc, given_id_tag, given_frequency, given_tag_exterior_door, given_tag_interior_door, given_tag_airpump, given_tag_chamber_sensor) + if(given_id_tag) + id_tag = given_id_tag + if(given_frequency) + set_frequency(given_frequency) + if(given_tag_exterior_door) + tag_exterior_door = given_tag_exterior_door + if(given_tag_interior_door) + tag_interior_door = given_tag_interior_door + if(given_tag_airpump) + tag_airpump = given_tag_airpump + if(given_tag_chamber_sensor) + tag_chamber_sensor = given_tag_chamber_sensor + ..() + /obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) @@ -130,7 +144,6 @@ name = "Access Controller" tag_secure = 1 - /obj/machinery/embedded_controller/radio/airlock/access_controller/update_icon() if(on && program) if(program.memory["processing"]) diff --git a/code/game/objects/effects/spawners/airlock_spawner.dm b/code/game/objects/effects/spawners/airlock_spawner.dm index d6473c9e924..90156c2926d 100644 --- a/code/game/objects/effects/spawners/airlock_spawner.dm +++ b/code/game/objects/effects/spawners/airlock_spawner.dm @@ -120,13 +120,7 @@ This spawner places pipe leading up to the interior door, you will need to finis /obj/effect/spawner/airlock/proc/handle_control_placement() //Stick the sensor and controller on the same bit of wall, this will ONLY be unsuitable if airlocks are on both the south and west turfs var/turf/T = get_turf(src) var/obj/machinery/airlock_sensor/AS = new(T) - var/obj/machinery/embedded_controller/radio/airlock/airlock_controller/AC = new(T) - AC.id_tag = id_to_link - AC.set_frequency(radio_frequency) - AC.tag_airpump = AIRPUMP_TAG - AC.tag_chamber_sensor = SENSOR_TAG - AC.tag_exterior_door = OUTER_DOOR_TAG - AC.tag_interior_door = INNER_DOOR_TAG + var/obj/machinery/embedded_controller/radio/airlock/airlock_controller/AC = new(T, id_to_link, radio_frequency, OUTER_DOOR_TAG, INNER_DOOR_TAG, AIRPUMP_TAG, SENSOR_TAG) AC.req_access = required_access AS.id_tag = SENSOR_TAG AS.set_frequency(radio_frequency) From d3585beb8b68ddb5a96b3bac0bb88b5b8d1352cb Mon Sep 17 00:00:00 2001 From: Citinited Date: Tue, 7 May 2019 21:59:43 +0100 Subject: [PATCH 004/143] Code cleanup, runtime fixing --- code/ATMOSPHERICS/datum_pipeline.dm | 8 +- .../airlock_controllers.dm | 2 +- .../effects/spawners/airlock_spawner.dm | 79 +++++++++---------- 3 files changed, 39 insertions(+), 50 deletions(-) diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 11ce632d917..43082c38ded 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -100,8 +100,6 @@ var/pipenetwarnings = 10 addMachineryMember(A) /datum/pipeline/proc/merge(datum/pipeline/E) - if(!E) //Uh oh - return air.volume += E.air.volume members.Add(E.members) for(var/obj/machinery/atmospherics/pipe/S in E.members) @@ -117,12 +115,10 @@ var/pipenetwarnings = 10 /obj/machinery/atmospherics/proc/addMember(obj/machinery/atmospherics/A) var/datum/pipeline/P = returnPipenet(A) - if(P) //Sanity checking - P.addMember(A, src) + P.addMember(A, src) /obj/machinery/atmospherics/pipe/addMember(obj/machinery/atmospherics/A) - if(parent && A) //Sanity checking - parent.addMember(A, src) + parent.addMember(A, src) /datum/pipeline/proc/temporarily_store_air() //Update individual gas_mixtures by volume ratio diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm index 2580eaf760b..b1a6f96e2eb 100644 --- a/code/game/machinery/embedded_controller/airlock_controllers.dm +++ b/code/game/machinery/embedded_controller/airlock_controllers.dm @@ -76,7 +76,7 @@ name = "Airlock Controller" tag_secure = 1 -/obj/machinery/embedded_controller/radio/airlock/airlock_controller/New(loc, given_id_tag, given_frequency, given_tag_exterior_door, given_tag_interior_door, given_tag_airpump, given_tag_chamber_sensor) +/obj/machinery/embedded_controller/radio/airlock/airlock_controller/Initialize(mapload, given_id_tag, given_frequency, given_tag_exterior_door, given_tag_interior_door, given_tag_airpump, given_tag_chamber_sensor) if(given_id_tag) id_tag = given_id_tag if(given_frequency) diff --git a/code/game/objects/effects/spawners/airlock_spawner.dm b/code/game/objects/effects/spawners/airlock_spawner.dm index 90156c2926d..496f02c61d1 100644 --- a/code/game/objects/effects/spawners/airlock_spawner.dm +++ b/code/game/objects/effects/spawners/airlock_spawner.dm @@ -54,8 +54,8 @@ This spawner places pipe leading up to the interior door, you will need to finis var/turf/turf_exterior = get_airlock_location(exterior_direction) handle_door_creation(turf_interior, TRUE, one_door_interior) handle_door_creation(turf_exterior, FALSE, one_door_exterior) + handle_pipes_creation(turf_interior) handle_control_placement() - handle_pipes_n_shit(turf_interior) qdel(src) /obj/effect/spawner/airlock/proc/get_airlock_location(desired_direction) //Finds a turf to place an airlock and returns it, this turf will be in the middle of the relevant wall @@ -143,13 +143,10 @@ This spawner places pipe leading up to the interior door, you will need to finis AS.pixel_x += 25 AS.pixel_y -= 9 -/obj/effect/spawner/airlock/proc/handle_pipes_n_shit(turf/T) //This places all required piping down, then properly initializes it. T is the turf that the interior airlock occupies - var/list/initialize_these_pipes = list() //All the pipes and stuff that needs to be initialized properly. We'll use a list for neater code +/obj/effect/spawner/airlock/proc/handle_pipes_creation(turf/T) //This places all required piping down, then properly initializes it. T is the turf that the interior airlock occupies var/turf/below_T = get_step(T, opposite_interior_direction) - var/obj/machinery/atmospherics/pipe/manifold/visible/M - var/obj/machinery/atmospherics/pipe/manifold4w/visible/M4W - var/obj/machinery/atmospherics/unary/vent_pump/high_volume/VP + var/two_way_pipe = interior_direction | opposite_interior_direction var/chamber_shape //This determines the layout of the chamber and therefore how many vents should be present if(tiles_in_x_direction == 2 && tiles_in_y_direction == 2) chamber_shape = CHAMBER_SQUARE @@ -157,54 +154,50 @@ This spawner places pipe leading up to the interior door, you will need to finis chamber_shape = CHAMBER_BIGGER else chamber_shape = CHAMBER_LONG - + pipe_creation_helper(/obj/machinery/atmospherics/pipe/simple/visible, T, interior_direction, two_way_pipe) switch(chamber_shape) if(CHAMBER_LONG) //Easy enough, place a single vent - VP = new(below_T) - VP.dir = interior_direction - initialize_these_pipes.Add(VP) + pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume, + below_T, + interior_direction) if(CHAMBER_SQUARE) //We need a T-manifold and two vents for this - M = new(below_T) - initialize_these_pipes.Add(M) - VP = new(get_step(below_T, opposite_interior_direction)) - VP.dir = interior_direction - initialize_these_pipes.Add(VP) - VP = new(north_or_south_interior ? EAST_OF_TURF(below_T) : NORTH_OF_TURF(below_T)) - VP.dir = turn(interior_direction, interior_direction == SOUTH || interior_direction == EAST ? -90 : 90) - initialize_these_pipes.Add(VP) + pipe_creation_helper(/obj/machinery/atmospherics/pipe/manifold/visible, + below_T, + north_or_south_interior ? WEST : SOUTH, + NORTH | EAST | (north_or_south_interior ? SOUTH : WEST)) + pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume, + get_step(below_T, opposite_interior_direction), + interior_direction) + pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume, + north_or_south_interior ? EAST_OF_TURF(below_T) : NORTH_OF_TURF(below_T), + turn(interior_direction, interior_direction == SOUTH || interior_direction == EAST ? -90 : 90)) if(CHAMBER_BIGGER) //We need a central column of manifolds and a vent either side of each manifold var/depth = north_or_south_interior ? tiles_in_y_direction : tiles_in_x_direction var/turf/put_thing_here = below_T for(var/i in 1 to depth) if(i != depth)//We're placing more pipe later, so we need a 4-way manifold - M4W = new(put_thing_here) - initialize_these_pipes.Add(M4W) + pipe_creation_helper(/obj/machinery/atmospherics/pipe/manifold4w/visible, put_thing_here, interior_direction, NORTH | EAST | SOUTH | WEST) else //We stop here, so place a T-manifold down - M = new(put_thing_here) - M.on_construction(opposite_interior_direction, interior_direction_cw | interior_direction | interior_direction_ccw, null) - VP = new(get_step(put_thing_here, interior_direction_cw)) - VP.dir = interior_direction_ccw - initialize_these_pipes.Add(VP) - VP = new(get_step(put_thing_here, interior_direction_ccw)) - VP.dir = interior_direction_cw - initialize_these_pipes.Add(VP) + pipe_creation_helper(/obj/machinery/atmospherics/pipe/manifold/visible, + put_thing_here, + opposite_interior_direction, + interior_direction_cw | interior_direction | interior_direction_ccw) + pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume, + get_step(put_thing_here, interior_direction_cw), + interior_direction_ccw) + pipe_creation_helper(/obj/machinery/atmospherics/unary/vent_pump/high_volume, + get_step(put_thing_here, interior_direction_ccw), + interior_direction_cw) put_thing_here = get_step(put_thing_here, opposite_interior_direction) //Now move the turf we're generating stuff from 1 forward - var/obj/machinery/atmospherics/pipe/simple/visible/P = new(T) - initialize_these_pipes.Add(P) - - var/two_way_pipe = interior_direction | opposite_interior_direction - - for(var/obj/machinery/atmospherics/pipe/simple/visible/HS in initialize_these_pipes) - HS.on_construction(interior_direction, two_way_pipe, null) - for(var/obj/machinery/atmospherics/pipe/manifold4w/visible/HM4W in initialize_these_pipes) - HM4W.on_construction(interior_direction, NORTH | SOUTH | EAST | WEST, null) - for(var/obj/machinery/atmospherics/pipe/manifold/visible/HM in initialize_these_pipes) - HM.on_construction(north_or_south_interior ? WEST : SOUTH, NORTH | EAST | (north_or_south_interior ? SOUTH : WEST), null) - for(var/obj/machinery/atmospherics/unary/vent_pump/high_volume/HVP in initialize_these_pipes) - HVP.on_construction(HVP.dir, HVP.dir, null) - HVP.id_tag = AIRPUMP_TAG - HVP.set_frequency(radio_frequency) +/obj/effect/spawner/airlock/proc/pipe_creation_helper(path, location, direction, initialization_directions) //Create some kind of atmospherics machinery and initialize it properly + var/obj/machinery/atmospherics/A = new path(location) + A.dir = direction + A.on_construction(A.dir, initialization_directions ? initialization_directions : A.dir) + if(istype(A, /obj/machinery/atmospherics/unary/vent_pump/high_volume)) + var/obj/machinery/atmospherics/unary/vent_pump/high_volume/created_pump = A + created_pump.id_tag = AIRPUMP_TAG + created_pump.set_frequency(radio_frequency) //Premade airlocks for mappers, probably won't need all of these but whatever From abf351e6fadacfe4d4f66da28aeceb0d1c29b24e Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 17 May 2019 22:20:34 +0200 Subject: [PATCH 005/143] Fixes weird identity problems --- code/game/jobs/access.dm | 37 ++++---- code/game/machinery/machinery.dm | 4 +- .../mob/living/carbon/human/examine.dm | 22 +---- code/modules/mob/living/carbon/human/human.dm | 95 ++++--------------- 4 files changed, 39 insertions(+), 119 deletions(-) diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 394fe3d0908..a31f694f7fc 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -601,28 +601,29 @@ proc/get_all_job_icons() //For all existing HUD icons return GLOB.joblist + list("Prisoner") /obj/proc/GetJobName() //Used in secHUD icon generation - var/obj/item/card/id/I + var/assignmentName = "Unknown" + var/rankName = "Unknown" if(istype(src, /obj/item/pda)) var/obj/item/pda/P = src - I = P.id + assignmentName = P.ownjob + rankName = P.ownrank else if(istype(src, /obj/item/card/id)) - I = src + var/obj/item/card/id/I = src + assignmentName = I.assignment + rankName = I.rank + - if(I) - var/job_icons = get_all_job_icons() - var/centcom = get_all_centcom_jobs() + var/job_icons = get_all_job_icons() + var/centcom = get_all_centcom_jobs() - if(I.assignment in centcom) //Return with the NT logo if it is a Centcom job - return "Centcom" - if(I.rank in centcom) - return "Centcom" - - if(I.assignment in job_icons) //Check if the job has a hud icon - return I.assignment - if(I.rank in job_icons) - return I.rank - - else - return + if(assignmentName in centcom) //Return with the NT logo if it is a Centcom job + return "Centcom" + if(rankName in centcom) + return "Centcom" + if(assignmentName in job_icons) //Check if the job has a hud icon + return assignmentName + if(rankName in job_icons) + return rankName + return "Unknown" //Return unknown if none of the above apply diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 91dcb43ab57..b84a8744be8 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -553,9 +553,7 @@ Class Procs: threatcount += 2 if(check_records || check_arrest) - var/perpname = perp.name - if(id) - perpname = id.registered_name + var/perpname = perp.get_visible_name(TRUE) var/datum/data/record/R = find_security_record("name", perpname) if(check_records && !R) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 475b7079444..4aef44444e9 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -338,18 +338,9 @@ msg += "[p_they(TRUE)] [p_are()] mostly dessicated now, with only bones remaining of what used to be a person.\n" if(hasHUD(user,"security")) - var/perpname = "wot" + var/perpname = get_visible_name(TRUE) var/criminal = "None" - if(wear_id) - var/obj/item/card/id/I = wear_id.GetID() - if(I) - perpname = I.registered_name - else - perpname = name - else - perpname = name - if(perpname) for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) @@ -361,18 +352,9 @@ msg += "Security records: \[View\] \[Add comment\]\n" if(hasHUD(user,"medical")) - var/perpname = "wot" + var/perpname = get_visible_name(TRUE) var/medical = "None" - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name - for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.general) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e497fd04814..b054238ff40 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -713,17 +713,9 @@ if(usr.incapacitated()) return var/found_record = 0 - var/perpname = "wot" - if(wear_id) - var/obj/item/card/id/I = wear_id.GetID() - if(I) - perpname = I.registered_name - else - perpname = name - else - perpname = name + var/perpname = get_visible_name(TRUE) - if(perpname) + if(perpname != "Unknown") for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.security) @@ -760,17 +752,9 @@ if(hasHUD(usr,"security")) if(usr.incapacitated()) return - var/perpname = "wot" + var/perpname = get_visible_name(TRUE) var/read = 0 - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.security) @@ -792,24 +776,16 @@ if(hasHUD(usr,"security")) if(usr.incapacitated()) return - var/perpname = "wot" + var/perpname = get_visible_name(TRUE) var/read = 0 - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.security) if(R.fields["id"] == E.fields["id"]) if(hasHUD(usr,"security")) read = 1 - if(length(R.fields["comments"])) + if(LAZYLEN(R.fields["comments"])) for(var/c in R.fields["comments"]) to_chat(usr, c) else @@ -823,15 +799,8 @@ if(hasHUD(usr,"security")) if(usr.incapacitated()) return - var/perpname = "wot" - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name + var/perpname = get_visible_name(TRUE) + for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.security) @@ -854,17 +823,8 @@ if(hasHUD(usr,"medical")) if(usr.incapacitated()) return - var/perpname = "wot" var/modified = 0 - - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name + var/perpname = get_visible_name(TRUE) for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) @@ -889,17 +849,9 @@ if(hasHUD(usr,"medical")) if(usr.incapacitated()) return - var/perpname = "wot" var/read = 0 - - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name + var/perpname = get_visible_name(TRUE) + for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.medical) @@ -922,24 +874,16 @@ if(hasHUD(usr,"medical")) if(usr.incapacitated()) return - var/perpname = "wot" + var/perpname = get_visible_name(TRUE) var/read = 0 - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.medical) if(R.fields["id"] == E.fields["id"]) if(hasHUD(usr,"medical")) read = 1 - if(length(R.fields["comments"])) + if(LAZYLEN(R.fields["comments"])) for(var/c in R.fields["comments"]) to_chat(usr, c) else @@ -953,15 +897,7 @@ if(hasHUD(usr,"medical")) if(usr.incapacitated()) return - var/perpname = "wot" - if(wear_id) - if(istype(wear_id,/obj/item/card/id)) - perpname = wear_id:registered_name - else if(istype(wear_id,/obj/item/pda)) - var/obj/item/pda/tempPda = wear_id - perpname = tempPda.owner - else - perpname = src.name + var/perpname = get_visible_name(TRUE) for(var/datum/data/record/E in data_core.general) if(E.fields["name"] == perpname) for(var/datum/data/record/R in data_core.medical) @@ -976,6 +912,9 @@ if(isrobot(usr)) var/mob/living/silicon/robot/U = usr R.fields["comments"] += "Made by [U.name] ([U.modtype] [U.braintype]) on [current_date_string] [station_time_timestamp()]
[t1]" + if(isAI(usr)) + var/mob/living/silicon/ai/U = usr + R.fields["comments"] += "Made by [U.name] (artificial intelligence) on [current_date_string] [station_time_timestamp()]
[t1]" if(href_list["lookitem"]) var/obj/item/I = locate(href_list["lookitem"]) @@ -1602,7 +1541,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X //Check for arrest warrant if(judgebot.check_records) - var/perpname = get_face_name(get_id_name()) + var/perpname = get_visible_name(TRUE) var/datum/data/record/R = find_record("name", perpname, data_core.security) if(R && R.fields["criminal"]) switch(R.fields["criminal"]) From 0f9742071a9b6bdb8222c84af3e48439a801a61c Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Wed, 22 May 2019 18:59:50 +0200 Subject: [PATCH 006/143] ticket and PM changed --- .../subsystem/tickets/mentor_tickets.dm | 4 +-- code/controllers/subsystem/tickets/tickets.dm | 32 ++++++++++--------- code/modules/admin/verbs/adminpm.dm | 18 +++++------ goon/browserassets/css/browserOutput-dark.css | 1 + goon/browserassets/css/browserOutput.css | 1 + 5 files changed, 30 insertions(+), 26 deletions(-) diff --git a/code/controllers/subsystem/tickets/mentor_tickets.dm b/code/controllers/subsystem/tickets/mentor_tickets.dm index 32f7faf4abb..d8bae77840c 100644 --- a/code/controllers/subsystem/tickets/mentor_tickets.dm +++ b/code/controllers/subsystem/tickets/mentor_tickets.dm @@ -8,7 +8,7 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets name = "Mentor Tickets" ticket_system_name = "Mentor Tickets" ticket_name = "Mentor Ticket" - span_text = "" + span_class = "mentorhelp" close_rights = R_MENTOR | R_ADMIN /datum/controller/subsystem/tickets/mentor_tickets/message_staff(var/msg) @@ -17,5 +17,5 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets /datum/controller/subsystem/tickets/mentor_tickets/Initialize() close_messages = list("- [ticket_name] Closed -", "Please try to be as descriptive as possible in mentor helps. Mentors do not know the full situation you're in and need more information to give you a helpful response.", - "[span_text]Your [ticket_name] has now been closed.") + "Your [ticket_name] has now been closed.") return ..() diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm index 73279033849..dc8b8488d39 100644 --- a/code/controllers/subsystem/tickets/tickets.dm +++ b/code/controllers/subsystem/tickets/tickets.dm @@ -12,7 +12,7 @@ SUBSYSTEM_DEF(tickets) name = "Admin Tickets" - var/span_text = "" + var/span_class = "adminticket" var/ticket_system_name = "Admin Tickets" var/ticket_name = "Admin Ticket" var/close_rights = R_ADMIN @@ -30,7 +30,7 @@ SUBSYSTEM_DEF(tickets) /datum/controller/subsystem/tickets/Initialize() close_messages = list("- [ticket_name] Rejected! -", "Please try to be calm, clear, and descriptive in admin helps, do not assume the staff member has seen any related events, and clearly state the names of anybody you are reporting. If you asked a question, please ensure it was clear what you were asking.", - "[span_text]Your [ticket_name] has now been closed.") + "Your [ticket_name] has now been closed.") LAZYINITLIST(allTickets) return ..() @@ -40,7 +40,7 @@ SUBSYSTEM_DEF(tickets) var/report for(var/num in stales) report += "[num], " - message_staff("[span_text]Tickets [report] have been open for over [TICKET_TIMEOUT / 600] minutes. Changing status to stale.") + message_staff("Tickets [report] have been open for over [TICKET_TIMEOUT / 600] minutes. Changing status to stale.") /datum/controller/subsystem/tickets/stat_entry() ..("Tickets: [LAZYLEN(allTickets)]") @@ -80,7 +80,7 @@ SUBSYSTEM_DEF(tickets) var/datum/ticket/existingTicket = checkForOpenTicket(C) if(existingTicket) existingTicket.setCooldownPeriod() - to_chat(C.mob, "[span_text]Your [ticket_name] #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.") + to_chat(C.mob, "Your [ticket_name] #[existingTicket.ticketNum] remains open! Visit \"My tickets\" under the Admin Tab to view it.") return if(!title) @@ -93,7 +93,7 @@ SUBSYSTEM_DEF(tickets) T.mobControlled = C.mob //Inform the user that they have opened a ticket - to_chat(C, "[span_text]You have opened [ticket_name] number #[(getTicketCounter() - 1)]! Please be patient and we will help you soon!") + to_chat(C, "You have opened [ticket_name] number #[(getTicketCounter() - 1)]! Please be patient and we will help you soon!") //Set ticket state with key N to open /datum/controller/subsystem/tickets/proc/openTicket(N) @@ -138,8 +138,10 @@ SUBSYSTEM_DEF(tickets) var/datum/ticket/T = allTickets[N] return T.clientName -/datum/controller/subsystem/tickets/proc/assignStaffToTicket(client/C, var/N) +/datum/controller/subsystem/tickets/proc/assignStaffToTicket(client/C, N) var/datum/ticket/T = allTickets[N] + if(T.staffAssigned != null && T.staffAssigned != C && alert("Ticket is already assigned to [T.staffAssigned.ckey]. Are you sure you want to take it?","Take ticket","No","Yes") != "Yes") + return FALSE T.assignStaff(C) return TRUE @@ -158,7 +160,7 @@ SUBSYSTEM_DEF(tickets) var/ticketState // State of the ticket, open, closed, resolved etc var/timeUntilStale // When the ticket goes stale var/ticketCooldown // Cooldown before allowing the user to open another ticket. - var/staffAssigned // Staff member who has assigned themselves to this ticket + var/client/staffAssigned // Staff member who has assigned themselves to this ticket /datum/ticket/New(tit, cont, num) title = tit @@ -367,15 +369,15 @@ UI STUFF if(href_list["resolve"]) var/indexNum = text2num(href_list["resolve"]) if(resolveTicket(indexNum)) - message_staff("[span_text][usr.client] / ([usr]) resolved [ticket_name] number [indexNum]") - to_chat_safe(returnClient(indexNum), "[span_text]Your [ticket_name] has now been resolved.") + message_staff("[usr.client] / ([usr]) resolved [ticket_name] number [indexNum]") + to_chat_safe(returnClient(indexNum), "Your [ticket_name] has now been resolved.") showUI(usr) if(href_list["detailresolve"]) var/indexNum = text2num(href_list["detailresolve"]) if(resolveTicket(indexNum)) - message_staff("[span_text][usr.client] / ([usr]) resolved [ticket_name] number [indexNum]") - to_chat_safe(returnClient(indexNum), "[span_text]Your [ticket_name] has now been resolved.") + message_staff("[usr.client] / ([usr]) resolved [ticket_name] number [indexNum]") + to_chat_safe(returnClient(indexNum), "Your [ticket_name] has now been resolved.") showDetailUI(usr, indexNum) if(href_list["detailclose"]) @@ -386,7 +388,7 @@ UI STUFF if(alert("Are you sure? This will send a negative message.",,"Yes","No") != "Yes") return if(closeTicket(indexNum)) - message_staff("[span_text][usr.client] / ([usr]) closed [ticket_name] number [indexNum]") + message_staff("[usr.client] / ([usr]) closed [ticket_name] number [indexNum]") to_chat_safe(returnClient(indexNum), close_messages) showDetailUI(usr, indexNum) @@ -394,7 +396,7 @@ UI STUFF if(href_list["detailreopen"]) var/indexNum = text2num(href_list["detailreopen"]) if(openTicket(indexNum)) - message_staff("[span_text][usr.client] / ([usr]) re-opened [ticket_name] number [indexNum]") + message_staff("[usr.client] / ([usr]) re-opened [ticket_name] number [indexNum]") showDetailUI(usr, indexNum) if(href_list["assignstaff"]) @@ -404,5 +406,5 @@ UI STUFF /datum/controller/subsystem/tickets/proc/takeTicket(var/index) if(assignStaffToTicket(usr.client, index)) - message_staff("[span_text][usr.client] / ([usr]) has taken [ticket_name] number [index]") - to_chat_safe(returnClient(index), "[span_text]Your [ticket_name] is being handled by [usr.client].") + message_staff("[usr.client] / ([usr]) has taken [ticket_name] number [index]") + to_chat_safe(returnClient(index), "Your [ticket_name] is being handled by [usr.client].") diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index caa051f8748..9359f1ca405 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -3,7 +3,7 @@ set category = null set name = "Admin PM Mob" if(!holder) - to_chat(src, "Error: Admin-PM-Context: Only administrators may use this command.") + to_chat(src, "Error: Admin-PM-Context: Only administrators may use this command.") return if( !ismob(M) || !M.client ) return cmd_admin_pm(M.client,null) @@ -14,7 +14,7 @@ set category = "Admin" set name = "Admin PM Name" if(!holder) - to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.") + to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.") return var/list/client/targets[0] for(var/client/T) @@ -37,7 +37,7 @@ set category = "Admin" set name = "Admin PM Key" if(!holder) - to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.") + to_chat(src, "Error: Admin-PM-Panel: Only administrators may use this command.") return var/list/client/targets[0] for(var/client/T) @@ -60,7 +60,7 @@ //Fetching a message if needed. src is the sender and C is the target client /client/proc/cmd_admin_pm(whom, msg, type = "PM") if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).") + to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).") return var/client/C @@ -127,7 +127,7 @@ recieve_pm_type = holder.rank else if(!C.holder) - to_chat(src, "Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.") + to_chat(src, "Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.") return var/recieve_message = "" @@ -159,7 +159,7 @@ var/emoji_msg = "[msg]" recieve_message = "[type] from-[recieve_pm_type][C.holder ? key_name(src, TRUE, type) : key_name_hidden(src, TRUE, type)]: [emoji_msg]" to_chat(C, recieve_message) - to_chat(src, "[send_pm_type][type] to-[holder ? key_name(C, TRUE, type) : key_name_hidden(C, TRUE, type)]: [emoji_msg]") + to_chat(src, "[send_pm_type][type] to-[holder ? key_name(C, TRUE, type) : key_name_hidden(C, TRUE, type)]: [emoji_msg]") /*if(holder && !C.holder) C.last_pm_recieved = world.time @@ -213,7 +213,7 @@ /client/proc/cmd_admin_irc_pm() if(prefs.muted & MUTE_ADMINHELP) - to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).") + to_chat(src, "Error: Private-Message: You are unable to use PM-s (muted).") return var/msg = input(src,"Message:", "Private message to admins on IRC / 400 character limit") as text|null @@ -230,14 +230,14 @@ send2adminirc("PlayerPM from [key_name(src)]: [html_decode(msg)]") - to_chat(src, "IRC PM to-IRC-Admins: [msg]") + to_chat(src, "IRC PM to-IRC-Admins: [msg]") log_admin("PM: [key_name(src)]->IRC: [msg]") for(var/client/X in GLOB.admins) if(X == src) continue if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob)) - to_chat(X, "PM: [key_name(src, TRUE, 0)]->IRC-Admins: [msg]") + to_chat(X, "PM: [key_name(src, TRUE, 0)]->IRC-Admins: [msg]") /client/verb/open_pms_ui() set name = "My PMs" diff --git a/goon/browserassets/css/browserOutput-dark.css b/goon/browserassets/css/browserOutput-dark.css index fed5a252ba3..b19cc07275f 100644 --- a/goon/browserassets/css/browserOutput-dark.css +++ b/goon/browserassets/css/browserOutput-dark.css @@ -261,6 +261,7 @@ em {font-style: normal; font-weight: bold;} .mentorhelp {color: #0077bb; font-weight: bold;} .adminhelp {color: #aa0000; font-weight: bold;} .playerreply {color: #8800bb; font-weight: bold;} +.pmsend {color: #0000ff;} .name { font-weight: bold;} .say {} .yell { font-weight: bold;} diff --git a/goon/browserassets/css/browserOutput.css b/goon/browserassets/css/browserOutput.css index 1af8b03bd58..3b77bb1f97e 100644 --- a/goon/browserassets/css/browserOutput.css +++ b/goon/browserassets/css/browserOutput.css @@ -258,6 +258,7 @@ em {font-style: normal; font-weight: bold;} .mentorhelp {color: #0077bb; font-weight: bold;} .adminhelp {color: #aa0000; font-weight: bold;} .playerreply {color: #8800bb; font-weight: bold;} +.pmsend {color: #0000ff;} .name { font-weight: bold;} .say {} .yell { font-weight: bold;} From f45d16f2c3da5ef38012c8db21fdf28d7a0f6917 Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Mon, 27 May 2019 19:59:54 +0200 Subject: [PATCH 007/143] Observer/hud improvements and fixes --- code/__DEFINES/hud.dm | 1 + code/datums/hud.dm | 3 +- code/defines/procs/announce.dm | 2 +- code/game/gamemodes/blob/blob.dm | 18 ++++++-- code/game/gamemodes/cult/cult_comms.dm | 2 +- code/modules/events/blob.dm | 6 +++ code/modules/events/sentience.dm | 2 + code/modules/mob/language.dm | 21 +++++---- code/modules/mob/living/carbon/alien/alien.dm | 4 ++ .../carbon/alien/humanoid/caste/hunter.dm | 2 +- .../carbon/alien/humanoid/caste/sentinel.dm | 2 +- .../living/carbon/alien/humanoid/empress.dm | 41 ++++++++---------- .../mob/living/carbon/alien/humanoid/queen.dm | 2 +- code/modules/mob/living/life.dm | 3 +- code/modules/mob/mob_helpers.dm | 2 + icons/mob/hud.dmi | Bin 14387 -> 14588 bytes 16 files changed, 69 insertions(+), 42 deletions(-) diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 45953a2e47b..4a1e4f20f98 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -55,6 +55,7 @@ #define DATA_HUD_ABDUCTOR 18 #define ANTAG_HUD_DEVIL 19 #define ANTAG_HUD_EVENTMISC 20 +#define ANTAG_HUD_BLOB 21 // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/datums/hud.dm b/code/datums/hud.dm index e5948a47e30..365a4309413 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -22,7 +22,8 @@ var/datum/atom_hud/huds = list( \ ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),\ DATA_HUD_ABDUCTOR = new/datum/atom_hud/abductor(),\ ANTAG_HUD_DEVIL = new/datum/atom_hud/antag/hidden(),\ - ANTAG_HUD_EVENTMISC = new/datum/atom_hud/antag/hidden()\ + ANTAG_HUD_EVENTMISC = new/datum/atom_hud/antag/hidden(),\ + ANTAG_HUD_BLOB = new/datum/atom_hud/antag/hidden()\ ) /datum/atom_hud diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 3c3906a25eb..3a70d05029e 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -95,7 +95,7 @@ receivers -= M garbled_receivers |= M for(var/mob/M in GLOB.dead_mob_list) - if(M.client && M.stat == DEAD) + if(M.client && M.stat == DEAD && !isnewplayer(M)) receivers |= M return list(receivers, garbled_receivers) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 30934a07214..0f8e52a90b2 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -43,9 +43,11 @@ var/list/blob_nodes = list() for(var/j = 0, j < cores_to_spawn, j++) if(!possible_blobs.len) break + var/datum/mind/blob = pick(possible_blobs) infected_crew += blob blob.special_role = SPECIAL_ROLE_BLOB + update_blob_icons_added(blob) blob.restricted_roles = restricted_jobs log_game("[key_name(blob)] has been selected as a Blob") possible_blobs -= blob @@ -67,8 +69,11 @@ var/list/blob_nodes = list() var/datum/mind/blobmind = blob.mind if(!istype(blobmind)) return 0 + infected_crew += blobmind blobmind.special_role = SPECIAL_ROLE_BLOB + update_blob_icons_added(blobmind) + log_game("[key_name(blob)] has been selected as a Blob") greet_blob(blobmind) to_chat(blob, "You feel very tired and bloated! You don't have long before you burst!") @@ -186,16 +191,21 @@ var/list/blob_nodes = list() return ..() /datum/game_mode/blob/proc/stage(var/stage) - switch(stage) if(0) send_intercept(1) declared = 1 - if(1) event_announcement.Announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg') - if(2) send_intercept(2) - return +/datum/game_mode/proc/update_blob_icons_added(datum/mind/mob_mind) + var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_BLOB] + antaghud.join_hud(mob_mind.current) + set_antag_hud(mob_mind.current, "hudblob") + +/datum/game_mode/proc/update_blob_icons_removed(datum/mind/mob_mind) + var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_BLOB] + antaghud.leave_hud(mob_mind.current) + set_antag_hud(mob_mind.current, null) \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm index e93556ca843..2586c63bc91 100644 --- a/code/game/gamemodes/cult/cult_comms.dm +++ b/code/game/gamemodes/cult/cult_comms.dm @@ -42,7 +42,7 @@ for(var/mob/M in GLOB.player_list) if(iscultist(M)) to_chat(M, my_message) - else if(M in GLOB.dead_mob_list) + else if((M in GLOB.dead_mob_list) && !isnewplayer(M)) to_chat(M, " (F) [my_message] ") log_say("(CULT) [message]", user) diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 2c2fdfbab84..a15dd83c035 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -7,21 +7,27 @@ /datum/event/blob/start() processing = FALSE //so it won't fire again in next tick + var/turf/T = pick(blobstart) if(!T) return kill() + var/list/candidates = pollCandidates("Do you want to play as a blob infested mouse?", ROLE_BLOB, 1) if(!candidates.len) return kill() + var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in GLOB.all_vent_pumps) if(is_station_level(temp_vent.loc.z) && !temp_vent.welded) if(temp_vent.parent.other_atmosmch.len > 50) vents += temp_vent + var/obj/vent = pick(vents) var/mob/living/simple_animal/mouse/blobinfected/B = new(vent.loc) var/mob/M = pick(candidates) B.key = M.key + SSticker.mode.update_blob_icons_added(B.mind) + to_chat(B, "You are now a mouse, infected with blob spores. Find somewhere isolated... before you burst and become the blob! Use ventcrawl (alt-click on vents) to move around.") var/image/alert_overlay = image('icons/mob/blob.dmi', "blank_blob") notify_ghosts("Infected Mouse has appeared in [get_area(B)].", source = B, alert_overlay = alert_overlay) diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm index 419bebfe2c1..fd0b73bc67b 100644 --- a/code/modules/events/sentience.dm +++ b/code/modules/events/sentience.dm @@ -1,6 +1,8 @@ /datum/event/sentience /datum/event/sentience/start() + processing = FALSE //so it won't fire again in next tick + var/ghostmsg = "Do you want to awaken as a sentient being?" var/list/candidates = pollCandidates(ghostmsg, ROLE_SENTIENT, 1) var/list/potential = list() diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 25b188911ad..57725da8eb2 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -455,6 +455,7 @@ colour = "alien" key = "y" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/wryn/check_special_condition(mob/other) var/mob/living/carbon/M = other @@ -485,7 +486,7 @@ colour = "alien" key = "a" flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE /datum/language/terrorspider name = "Spider Hivemind" @@ -496,7 +497,7 @@ colour = "terrorspider" key = "ts" flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE /datum/language/ling name = "Changeling" @@ -505,10 +506,11 @@ colour = "changeling" key = "g" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/ling/broadcast(mob/living/speaker, message, speaker_mask) if(speaker.mind && speaker.mind.changeling) - ..(speaker,message,speaker.mind.changeling.changelingID) + ..(speaker, message, speaker.mind.changeling.changelingID) else if(speaker.mind && speaker.mind.linglink) ..() else @@ -521,6 +523,7 @@ colour = "shadowling" key = "8" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/shadowling/broadcast(mob/living/speaker, message, speaker_mask) if(speaker.mind && speaker.mind.special_role == SPECIAL_ROLE_SHADOWLING) @@ -539,6 +542,7 @@ colour = "abductor" key = "zw" //doesn't matter, this is their default and only language flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/abductor/broadcast(mob/living/speaker, message, speaker_mask) ..(speaker,message,speaker.real_name) @@ -567,6 +571,7 @@ colour = "alien" key = "bo" flags = RESTRICTED | HIVEMIND + follow = TRUE /datum/language/corticalborer/broadcast(mob/living/speaker, message, speaker_mask) var/mob/living/simple_animal/borer/B @@ -590,7 +595,7 @@ exclaim_verb = "declares" key = "b" flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE var/drone_only /datum/language/binary/broadcast(mob/living/speaker, message, speaker_mask) @@ -636,8 +641,8 @@ colour = "say_quote" key = "d" flags = RESTRICTED | HIVEMIND - drone_only = 1 - follow = 1 + drone_only = TRUE + follow = TRUE /datum/language/drone name = "Drone" @@ -647,7 +652,7 @@ exclaim_verb = "declares" key = "]" flags = RESTRICTED - follow = 1 + follow = TRUE syllables = list ("beep", "boop") /datum/language/swarmer @@ -659,7 +664,7 @@ colour = "say_quote" key = "z"//Zwarmer...Or Zerg! flags = RESTRICTED | HIVEMIND - follow = 1 + follow = TRUE // Language handling. /mob/proc/add_language(language) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index ee858138f70..69a2e1160b0 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -73,7 +73,11 @@ stat = CONSCIOUS return health = maxHealth - getOxyLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() + update_stat("updatehealth([reason])") + med_hud_set_health() + med_hud_set_status() + handle_hud_icons_health() /mob/living/carbon/alien/handle_environment(var/datum/gas_mixture/environment) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index adf81753827..bf2158ae58e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -17,7 +17,7 @@ . = -1 //hunters are sanic . += ..() //but they still need to slow down on stun -/mob/living/carbon/alien/humanoid/hunter/handle_regular_hud_updates() +/mob/living/carbon/alien/humanoid/hunter/handle_hud_icons_health() ..() //-Yvarov if(healths) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 6a9565fc449..3acb1fe8713 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -42,7 +42,7 @@ alien_organs += new /obj/item/organ/internal/xenos/neurotoxin ..() -/mob/living/carbon/alien/humanoid/sentinel/handle_regular_hud_updates() +/mob/living/carbon/alien/humanoid/sentinel/handle_hud_icons_health() ..() //-Yvarov if(healths) diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index f5355a38d67..a64602d030c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -48,29 +48,26 @@ alien_organs += new /obj/item/organ/internal/xenos/neurotoxin ..() -/mob/living/carbon/alien/humanoid/empress +/mob/living/carbon/alien/humanoid/empress/handle_hud_icons_health() + ..() //-Yvarov - handle_regular_hud_updates() - - ..() //-Yvarov - - if(src.healths) - if(src.stat != 2) - switch(health) - if(250 to INFINITY) - src.healths.icon_state = "health0" - if(175 to 250) - src.healths.icon_state = "health1" - if(100 to 175) - src.healths.icon_state = "health2" - if(50 to 100) - src.healths.icon_state = "health3" - if(0 to 50) - src.healths.icon_state = "health4" - else - src.healths.icon_state = "health5" - else - src.healths.icon_state = "health6" + if(healths) + if(stat != 2) + switch(health) + if(250 to INFINITY) + healths.icon_state = "health0" + if(175 to 250) + healths.icon_state = "health1" + if(100 to 175) + healths.icon_state = "health2" + if(50 to 100) + healths.icon_state = "health3" + if(0 to 50) + healths.icon_state = "health4" + else + healths.icon_state = "health5" + else + healths.icon_state = "health6" /mob/living/carbon/alien/humanoid/empress/verb/lay_egg() set name = "Lay Egg (250)" diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index d80d773325e..14124afef3e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -32,7 +32,7 @@ . = ..() . += 3 -/mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates() +/mob/living/carbon/alien/humanoid/queen/handle_hud_icons_health() ..() //-Yvarov if(healths) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index e0c58c484d8..e538717ce56 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -59,8 +59,7 @@ handle_status_effects() //all special effects, stunned, weakened, jitteryness, hallucination, sleeping, etc if(client) - //regular_hud_updates() //THIS DOESN'T FUCKING UPDATE SHIT - handle_regular_hud_updates() //IT JUST REMOVES FUCKING HUD IMAGES + handle_regular_hud_updates() ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index beb474539f1..03a4f59f197 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -485,6 +485,8 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM) if(A) if(O.client.prefs && O.client.prefs.UI_style) A.icon = ui_style2icon(O.client.prefs.UI_style) + if(title) + A.name = title A.desc = message A.action = action A.target = source diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index b7f6b5c8f6a134b6aefed0eba3dba8ba793cdb9e..849db6579a59673543c9b0256414b5a008287465 100644 GIT binary patch literal 14588 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 Date: Mon, 27 May 2019 21:59:16 +0200 Subject: [PATCH 008/143] Fix hearing whispers in lobby --- code/modules/mob/living/say.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 95b44b15862..c40cd0bf8e5 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -395,6 +395,8 @@ proc/get_radio_key_from_channel(var/channel) for(var/mob/M in GLOB.dead_mob_list) //does this include players who joined as observers as well? if(!M.client) continue + if(isnewplayer(M)) + continue if(M.stat == DEAD && M.client && M.get_preference(CHAT_GHOSTEARS)) listening |= M From 080232f8439a794ae0021fc4d091b2ec10404ed4 Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Tue, 28 May 2019 00:01:22 +0200 Subject: [PATCH 009/143] Fix grenade double admin message --- code/game/objects/items/weapons/grenades/chem_grenade.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 31bc6bcf556..13c1b10290b 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -289,7 +289,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([admin_jump_link(M)]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z]) [contained]") update_mob() @@ -419,7 +419,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([ADMIN_FLW(M,"FLW")]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([ADMIN_FLW(last,"FLW")]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)] and last touched by [key_name_admin(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) From f07bd98a2ad17311631325dd4ab9ad8387338cdd Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Tue, 28 May 2019 19:43:01 +0200 Subject: [PATCH 010/143] Blindfolds are now craftable from 3 cloth --- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 2c1222154b0..1409539cf3d 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -214,6 +214,8 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \ null, \ new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1), \ new/datum/stack_recipe("black gloves", /obj/item/clothing/gloves/color/black, 3), \ + null, \ + new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 3), \ ) /obj/item/stack/sheet/cloth From a46cab1b4374f37ec238ff3161c553ffd1e107f9 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Tue, 28 May 2019 19:53:13 +0200 Subject: [PATCH 011/143] The clear button from the pandemic now also ejects --- .../modules/reagents/chemistry/machinery/pandemic.dm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 7c36334f78d..ab84610e082 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -135,12 +135,11 @@ return else if(href_list["empty_beaker"]) beaker.reagents.clear_reagents() + eject_beaker() updateUsrDialog() return else if(href_list["eject"]) - beaker:loc = loc - beaker = null - icon_state = "mixer0" + eject_beaker() updateUsrDialog() return else if(href_list["clear"]) @@ -173,6 +172,11 @@ add_fingerprint(usr) +/obj/machinery/computer/pandemic/proc/eject_beaker() + beaker.forceMove(loc) + beaker = null + icon_state = "mixer0" + //Prints a nice virus release form. Props to Urbanliner for the layout /obj/machinery/computer/pandemic/proc/print_form(var/datum/disease/advance/D, mob/living/user) D = archive_diseases[D.GetDiseaseID()] @@ -308,7 +312,7 @@ dat += "nothing
" else dat += "nothing
" - dat += "
Eject beaker[((R.total_volume&&R.reagent_list.len) ? "-- Empty beaker":"")]
" + dat += "
Eject beaker[((R.total_volume&&R.reagent_list.len) ? "-- Empty beaker and Eject":"")]
" dat += "Close" var/datum/browser/popup = new(user, "pandemic", name, 575, 400) From 71079eb5985999085907bed813a99092dd210fb5 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Tue, 28 May 2019 19:55:00 +0200 Subject: [PATCH 012/143] empty and eject --- code/modules/reagents/chemistry/machinery/pandemic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index ab84610e082..870ef8cf76a 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -312,7 +312,7 @@ dat += "nothing
" else dat += "nothing
" - dat += "
Eject beaker[((R.total_volume&&R.reagent_list.len) ? "-- Empty beaker and Eject":"")]
" + dat += "
Eject beaker[((R.total_volume&&R.reagent_list.len) ? "-- Empty and eject beaker":"")]
" dat += "Close" var/datum/browser/popup = new(user, "pandemic", name, 575, 400) From 32812736ee4e76ebb1693117ed3611142c8da76c Mon Sep 17 00:00:00 2001 From: datlo Date: Fri, 31 May 2019 09:30:03 +0100 Subject: [PATCH 013/143] Integrate free golems as a lavaland ruin --- .../LavaRuins/lavaland_surface_golem_ship.dmm | 71 + _maps/map_files/cyberiad/z2.dmm | 1749 ++++++++--------- _maps/map_files/cyberiad/z3.dmm | 1604 ++++++--------- _maps/map_files/cyberiad/z6.dmm | 63 +- code/controllers/configuration.dm | 9 - code/datums/ruins/lavaland.dm | 9 + code/game/area/areas/ruins/lavaland.dm | 1 + code/game/gamemodes/blob/blob.dm | 1 - code/game/gamemodes/cult/cult.dm | 1 - code/game/gamemodes/game_mode.dm | 8 - code/game/gamemodes/nuclear/nuclear.dm | 1 - code/game/gamemodes/wizard/wizard.dm | 1 - .../game/machinery/computer/buildandrepair.dm | 3 - code/modules/shuttle/shuttle.dm | 16 +- config/example/config.txt | 6 - 15 files changed, 1581 insertions(+), 1962 deletions(-) create mode 100644 _maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm new file mode 100644 index 00000000000..a2c67db9111 --- /dev/null +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -0,0 +1,71 @@ +"a" = (/turf/template_noop,/area/template_noop) +"b" = (/turf/simulated/wall/mineral/titanium,/area/ruin/powered/golem_ship) +"c" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"d" = (/obj/structure/closet/crate/golemgear,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"e" = (/obj/item/storage/toolbox/mechanical,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"f" = (/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"g" = (/obj/structure/reagent_dispensers/watertank/high,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"h" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) +"i" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "burst_l"},/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) +"j" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"k" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"l" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"m" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"n" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"o" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"p" = (/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"q" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"r" = (/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"s" = (/obj/machinery/vending/coffee/free,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"t" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"u" = (/obj/machinery/door/airlock/shuttle,/obj/structure/fans/tiny,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"v" = (/obj/item/resonator,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"w" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/ruin/powered/golem_ship) +"x" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"y" = (/obj/machinery/mineral/ore_redemption/golem,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"z" = (/obj/structure/window/full/shuttle{icon_state = "16"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) +"A" = (/obj/structure/statue/gold/rd{name = "statue of the Liberator"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/ruin/powered/golem_ship) +"B" = (/obj/structure/computerframe,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"C" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"D" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"E" = (/obj/structure/window/full/shuttle{icon_state = "15"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) +"F" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table/wood,/obj/item/bedsheet/rd/royal_cape{layer = 3; pixel_x = 5; pixel_y = 9},/obj/item/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/ruin/powered/golem_ship) +"G" = (/obj/machinery/light,/obj/structure/chair/comfy/purp{icon_state = "comfychair"; dir = 1},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"H" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"I" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"J" = (/turf/simulated/wall/mineral/titanium/interior,/area/ruin/powered/golem_ship) +"K" = (/obj/item/resonator/upgraded,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"L" = (/obj/machinery/autolathe,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"M" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"N" = (/obj/machinery/computer/arcade/orion_trail,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"O" = (/obj/machinery/computer/arcade/battle,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"P" = (/obj/machinery/light,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"Q" = (/obj/machinery/light,/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"R" = (/obj/machinery/vending/snack/free,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"S" = (/obj/structure/table/wood,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"T" = (/obj/structure/table/wood,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/machinery/light,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"U" = (/obj/structure/table/wood,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/adv,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"V" = (/obj/structure/table/wood,/obj/item/areaeditor/golem,/obj/item/disk/design_disk/golem_shell,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) +"W" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"X" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"Y" = (/obj/structure/ore_box,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) +"Z" = (/turf/simulated/wall/mineral/titanium/nodiagonal,/area/ruin/powered/golem_ship) + +(1,1,1) = {" +aaaaabbbbbbbbbbccbbb +aaaaabddddddddeffghi +aaaaabffjffjfffjfkhi +aabbbbllbbbbllbbbbbb +aabmnoppqrbspppopthi +aaupppppvvlppppppphi +bbbwwbbbbbbxpppppyZZ +zABppppCpplpppppppDu +EFGppppppplpppppppHI +bbbllJbbbbbxppppKLZZ +aaupppppvvlppppppMhi +aabNOPppQrbRppSTUVhi +aabbbbllbbbbllbbbbbb +aaaaabffWffWfffWfXhi +aaaaabYYYYYYYYeffXhi +aaaaabbbbbbbbbbccbbb +"} diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index dda71eb7e09..e28abd2afa5 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -2483,19 +2483,6 @@ dir = 5 }, /area/wizard_station) -"gt" = ( -/obj/docking_port/stationary/transit{ - dir = 8; - dwidth = 8; - height = 20; - id = "freegolem_transit"; - name = "free golem in transit"; - width = 16 - }, -/turf/space/transit/horizontal{ - dir = 4 - }, -/area/space) "gu" = ( /turf/unsimulated/wall/fakeglass{ dir = 8; @@ -14558,34 +14545,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -14815,34 +14802,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -15072,34 +15059,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -15329,34 +15316,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -15586,34 +15573,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -15843,34 +15830,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -16100,34 +16087,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -16357,34 +16344,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -16614,34 +16601,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -16871,34 +16858,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -17128,34 +17115,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -17385,34 +17372,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -17642,34 +17629,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -17899,34 +17886,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -18156,34 +18143,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -18413,34 +18400,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -18670,34 +18657,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -18927,34 +18914,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -19184,34 +19171,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -19441,34 +19428,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -19698,34 +19685,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -19955,34 +19942,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -20212,34 +20199,34 @@ bW bW aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -20469,34 +20456,34 @@ aN aN aN aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -20726,34 +20713,34 @@ bW bW bW aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -gt -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -20983,34 +20970,34 @@ bW bW bW aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -21240,34 +21227,34 @@ bW bW bW aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -21497,34 +21484,34 @@ bW bW bW aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -21754,34 +21741,34 @@ bW bW bW aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -22011,34 +21998,34 @@ bW bW bW aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN @@ -22268,34 +22255,34 @@ bW bW bW aN -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq -aq +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN aN aN aN diff --git a/_maps/map_files/cyberiad/z3.dmm b/_maps/map_files/cyberiad/z3.dmm index be3d4769341..26d46280ae3 100644 --- a/_maps/map_files/cyberiad/z3.dmm +++ b/_maps/map_files/cyberiad/z3.dmm @@ -353,104 +353,10 @@ }, /turf/simulated/floor/plating, /area/tcommsat/powercontrol) -"aI" = ( -/turf/simulated/mineral/random, -/area/mine/dangerous/explored/golem) -"aJ" = ( -/turf/simulated/floor/plating/asteroid/airless, -/area/mine/dangerous/explored/golem) -"aK" = ( -/turf/simulated/mineral/random/high_chance, -/area/mine/dangerous/explored/golem) -"aL" = ( -/turf/space, -/turf/simulated/shuttle/wall{ - icon_state = "swall_f6"; - dir = 2 - }, -/area/shuttle/freegolem) -"aM" = ( -/turf/simulated/shuttle/wall{ - tag = "icon-swall12"; - icon_state = "swall12"; - dir = 2 - }, -/area/shuttle/freegolem) -"aN" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - locked = 1 - }, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) -"aO" = ( -/turf/simulated/shuttle/wall{ - dir = 2; - icon_state = "swall8"; - tag = "icon-swall12" - }, -/area/shuttle/freegolem) -"aP" = ( -/turf/simulated/shuttle/wall{ - icon_state = "swall3"; - dir = 2 - }, -/area/shuttle/freegolem) -"aQ" = ( -/obj/structure/closet/crate/golemgear, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) -"aR" = ( -/obj/item/storage/toolbox/mechanical, -/obj/item/reagent_containers/spray/cleaner, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) -"aS" = ( -/turf/simulated/floor/plating, -/area/shuttle/freegolem) "aT" = ( /obj/structure/lattice, /turf/space, /area/space/nearstation) -"aU" = ( -/obj/structure/reagent_dispensers/watertank/high, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) -"aV" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/simulated/shuttle/plating, -/area/shuttle/freegolem) -"aW" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4; - icon_state = "burst_l" - }, -/turf/simulated/shuttle/plating, -/area/shuttle/freegolem) -"aX" = ( -/obj/machinery/light/small, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) -"aY" = ( -/turf/simulated/shuttle/wall{ - tag = "icon-swall13"; - icon_state = "swall13"; - dir = 2 - }, -/area/shuttle/freegolem) -"aZ" = ( -/obj/machinery/door/airlock/shuttle, -/turf/simulated/shuttle/floor{ - icon_state = "floor5" - }, -/area/shuttle/freegolem) "ba" = ( /turf/simulated/shuttle/wall{ tag = "icon-swall_s6"; @@ -479,24 +385,6 @@ dir = 2 }, /area/space/nearstation) -"be" = ( -/turf/simulated/shuttle/wall{ - tag = "icon-swall14"; - icon_state = "swall14"; - dir = 2 - }, -/area/shuttle/freegolem) -"bf" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) -"bg" = ( -/obj/machinery/door/airlock/shuttle, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bh" = ( -/turf/simulated/wall/mineral/titanium/interior, -/area/shuttle/freegolem) "bi" = ( /turf/simulated/shuttle/wall{ tag = "icon-swall7"; @@ -536,33 +424,12 @@ dir = 2 }, /area/space/nearstation) -"bn" = ( -/obj/machinery/vending/hydroseeds, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bo" = ( -/obj/machinery/vending/hydronutrients, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "bp" = ( /obj/machinery/door/unpowered/shuttle, /turf/simulated/shuttle/floor{ icon_state = "floor3" }, /area/space/nearstation) -"bq" = ( -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"br" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - locked = 1 - }, -/turf/simulated/shuttle/floor{ - icon_state = "floor5" - }, -/area/shuttle/freegolem) "bs" = ( /turf/simulated/shuttle/floor{ icon_state = "floor3" @@ -573,13 +440,6 @@ dir = 2 }, /area/space/nearstation) -"bt" = ( -/obj/machinery/light{ - dir = 1; - on = 1 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "bu" = ( /turf/simulated/shuttle/floor{ icon_state = "floor3" @@ -590,18 +450,6 @@ dir = 2 }, /area/space/nearstation) -"bv" = ( -/obj/machinery/light{ - dir = 1; - on = 1 - }, -/obj/effect/landmark/free_golem_spawn, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bw" = ( -/obj/effect/landmark/free_golem_spawn, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "bx" = ( /turf/simulated/shuttle/wall{ tag = "icon-swall_s5"; @@ -623,172 +471,6 @@ dir = 2 }, /area/space/nearstation) -"bA" = ( -/obj/machinery/vending/coffee/free, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bB" = ( -/turf/simulated/shuttle/wall{ - tag = "icon-swall14"; - icon_state = "swall4"; - dir = 2 - }, -/area/shuttle/freegolem) -"bC" = ( -/turf/simulated/shuttle/wall{ - dir = 2; - icon_state = "swallc1"; - tag = "icon-swall12" - }, -/area/shuttle/freegolem) -"bD" = ( -/obj/structure/window/full/shuttle{ - icon_state = "16" - }, -/obj/structure/grille, -/turf/simulated/shuttle/plating, -/area/shuttle/freegolem) -"bE" = ( -/obj/structure/statue/gold/rd{ - name = "statue of the Liberator" - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/simulated/shuttle/floor{ - icon_state = "floor5" - }, -/area/shuttle/freegolem) -"bF" = ( -/obj/machinery/mineral/equipment_vendor/golem, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bG" = ( -/obj/item/resonator, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bH" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bI" = ( -/obj/item/gun/energy/kinetic_accelerator, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bJ" = ( -/obj/structure/window/full/shuttle{ - icon_state = "15" - }, -/obj/structure/grille, -/turf/simulated/shuttle/plating, -/area/shuttle/freegolem) -"bK" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/table/wood, -/obj/item/bedsheet/rd/royal_cape{ - layer = 3; - pixel_x = 5; - pixel_y = 9 - }, -/obj/item/book/manual/research_and_development{ - name = "Sacred Text of the Liberator"; - pixel_x = -4; - pixel_y = 3 - }, -/turf/simulated/shuttle/floor{ - icon_state = "floor5" - }, -/area/shuttle/freegolem) -"bL" = ( -/obj/machinery/mineral/ore_redemption/golem, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bM" = ( -/obj/machinery/computer/shuttle/golem_ship, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bN" = ( -/turf/space, -/turf/simulated/shuttle/wall{ - icon_state = "swall_f5"; - dir = 2 - }, -/area/shuttle/freegolem) -"bO" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bP" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bQ" = ( -/turf/simulated/shuttle/wall{ - icon_state = "swallc4" - }, -/area/shuttle/freegolem) -"bR" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - locked = 1 - }, -/obj/structure/fans/tiny, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 8; - height = 20; - id = "freegolem"; - name = "Free Golem Ship"; - roundstart_move = "freegolem_transit"; - width = 16 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 8; - height = 20; - id = "freegolem_z3"; - name = "Small Asteroid"; - width = 16 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bS" = ( -/obj/machinery/light, -/obj/structure/chair/comfy/purp{ - icon_state = "comfychair"; - dir = 1 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bT" = ( -/obj/machinery/light/small, -/obj/structure/extinguisher_cabinet{ - pixel_y = -30 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bU" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/shuttle{ - id_tag = "s_docking_airlock"; - locked = 1 - }, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"bV" = ( -/obj/item/resonator/upgraded, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "bW" = ( /obj/structure/lattice, /obj/structure/grille, @@ -1398,10 +1080,6 @@ }, /turf/simulated/floor/plasteel, /area/tcommsat/computer) -"dr" = ( -/obj/machinery/autolathe, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "ds" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 4; @@ -1815,15 +1493,6 @@ }, /turf/simulated/floor/plating, /area/tcommsat/chamber) -"ej" = ( -/obj/structure/table/wood, -/obj/machinery/reagentgrinder, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"ek" = ( -/obj/machinery/computer/arcade/battle, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "el" = ( /obj/machinery/door/window/brigdoor{ dir = 1; @@ -1877,10 +1546,6 @@ /obj/structure/lattice, /turf/space, /area/turret_protected/tcomsat) -"eq" = ( -/obj/machinery/computer/arcade/orion_trail, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "er" = ( /obj/structure/window/reinforced{ dir = 4 @@ -1958,10 +1623,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"ex" = ( -/obj/machinery/light, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "ey" = ( /obj/structure/cable{ d1 = 4; @@ -2005,11 +1666,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"eA" = ( -/obj/machinery/light, -/obj/effect/landmark/free_golem_spawn, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "eB" = ( /turf/simulated/floor/bluegrid{ icon_state = "dark"; @@ -2104,10 +1760,6 @@ /obj/structure/lattice, /turf/space, /area/turret_protected/tcomsat) -"eI" = ( -/obj/machinery/vending/snack/free, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "eJ" = ( /obj/structure/cable{ d1 = 1; @@ -2189,13 +1841,6 @@ }, /turf/simulated/floor/plating/airless, /area/space/nearstation) -"eQ" = ( -/obj/structure/table/wood, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/brute, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "eR" = ( /obj/structure/window/reinforced{ dir = 8 @@ -2465,12 +2110,6 @@ }, /turf/simulated/floor/plating/airless, /area/space/nearstation) -"fp" = ( -/obj/structure/table/wood, -/obj/item/storage/firstaid/adv, -/obj/item/storage/firstaid/adv, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "fq" = ( /obj/structure/grille, /obj/structure/cable{ @@ -2579,15 +2218,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"fy" = ( -/obj/structure/table/wood, -/obj/structure/table/wood, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/fire, -/obj/machinery/light, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) "fz" = ( /obj/machinery/telecomms/processor/preset_four, /turf/simulated/floor/plasteel{ @@ -2863,18 +2493,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"fY" = ( -/obj/structure/table/wood, -/obj/item/areaeditor/golem, -/obj/item/disk/design_disk/golem_shell, -/turf/simulated/floor/mineral/titanium/purple, -/area/shuttle/freegolem) -"fZ" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) "ga" = ( /obj/machinery/telecomms/server/presets/command, /turf/simulated/floor/plasteel{ @@ -2899,10 +2517,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"gc" = ( -/obj/machinery/chem_master, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) "gd" = ( /obj/machinery/camera{ c_tag = "Telecomms Server Room South"; @@ -2924,10 +2538,6 @@ temperature = 80 }, /area/tcommsat/chamber) -"ge" = ( -/obj/structure/ore_box, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) "gf" = ( /obj/structure/cable{ d1 = 1; @@ -2971,10 +2581,6 @@ "gj" = ( /turf/simulated/wall/r_wall, /area/turret_protected/tcomfoyer) -"gk" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/simulated/floor/plating, -/area/shuttle/freegolem) "gr" = ( /obj/structure/window/reinforced, /obj/machinery/light{ @@ -16116,10 +15722,10 @@ aa aa aa aa -aL -bD -bJ -bN +aa +aa +aa +aa aa aa aa @@ -16373,10 +15979,10 @@ aa aa aa aa -aM -bE -bK -aM +aa +aa +aa +aa aa aa aa @@ -16627,16 +16233,16 @@ aa aa aa aa -aL -aP -br -aY -bM -bS -be -br -aP -bN +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -16884,16 +16490,16 @@ aa aa aa aa -aM -bo -bq -aZ -bq -bq -bg -bq -eq -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -17141,16 +16747,16 @@ aa aa aa aa -aM -bn -bq -aZ -bq -bq -bg -bq -ek -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -17395,22 +17001,22 @@ aa aa aa aa -aL -aP -aP -aY -bt -bq -bh -bq -bq -bh -bq -ex -be -aP -aP -bN +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -17652,22 +17258,22 @@ aa aa aa aa -aM -aQ -aS -bg -bq -bq -bh -bq -bq -bh -bq -bq -bg -aS -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -17909,22 +17515,22 @@ aa aa aa aa -aM -aQ -aS -bg -bq -bq -bh -bO -bq -bh -bq -bq -bg -aS -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18166,22 +17772,22 @@ aa aa aa aa -aM -aQ -aX -bh -bv -bG -bh -bq -bq -bh -bG -eA -bh -fZ -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18423,22 +18029,22 @@ aa aa aa aa -aM -aQ -aS -bh -bw -bG -bh -bq -bq -bh -bG -bw -bh -aS -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18680,22 +18286,22 @@ aa aa aa aa -aM -aQ -aS -bh -bh -bg -bh -bg -bg -bh -bg -bh -bh -aS -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18937,22 +18543,22 @@ aa aa aa aa -aM -aQ -aX -bh -bA -bq -bH -bq -bq -bH -bq -eI -bh -fZ -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19194,22 +18800,22 @@ aa aa aa aa -aM -aQ -aS -bg -bq -bq -bq -bq -bq -bq -bq -bq -bg -aS -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19451,22 +19057,22 @@ aa aa aa aa -aM -aQ -aS -bg -bq -bq -bq -bq -bq -bq -bq -bq -bg -aS -ge -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19708,22 +19314,22 @@ aa aa aa aa -aM -aR -aS -bh -bq -bq -bq -bq -bq -bq -bq -eQ -bh -aS -aR -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19965,22 +19571,22 @@ aa aa aa aa -aN -aS -aX -bh -bt -bq -bq -bq -bq -bq -bq -fy -bh -fZ -aS -aN +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -20222,22 +19828,22 @@ aa aa aa aa -aN -aS -aS -bh -bq -bq -bI -bq -bq -bV -bq -fp -bh -aS -aS -aN +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -20479,22 +20085,22 @@ aa aa aa aa -aM -aU -bf -bh -bF -bq -bL -bq -bq -dr -ej -fY -bh -gc -gk -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -20734,24 +20340,24 @@ aa aa aa aa -aI -aI -aM -aV -aV -bB -aV -aV -bB -bP -bT -bB -aV -aV -bB -aV -aV -aM +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -20991,25 +20597,25 @@ aa aa aa aa -aI -aI -aO -aW -aW -aO -aW -aW -bC -bR -bU -bQ -aW -aW -aO -aW -aW -aO -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -21248,25 +20854,25 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aJ -aJ -aJ -aJ -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -21505,25 +21111,25 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aJ -aJ -aJ -aJ -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -21762,25 +21368,25 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -22017,27 +21623,27 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -22274,27 +21880,27 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -22531,26 +22137,26 @@ aa aa aa aa -aI -aI -aI -aI -aK -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -22788,26 +22394,26 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aK -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -23045,28 +22651,28 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -23302,28 +22908,28 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -23559,28 +23165,28 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -23816,28 +23422,28 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aK -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -24073,26 +23679,26 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -24330,26 +23936,26 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aK -aI -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -24589,27 +24195,27 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI -aJ -aJ -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -24847,26 +24453,26 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI aa aa -aI -aI -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -25104,26 +24710,26 @@ aa aa aa aa -aI -aI -aI -aI -aI -aI -aI -aI -aI -aI aa aa aa aa -aI -aI -aI -aI -aI -aI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 86b1bb9cc7f..6c8cce124fb 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -15,8 +15,8 @@ }, /area/djstation/solars) "ad" = ( -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/space/nearstation) "ae" = ( /obj/structure/lattice, @@ -76,8 +76,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation/solars) "ao" = ( /obj/structure/grille{ @@ -93,8 +93,8 @@ d2 = 2; icon_state = "1-2" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation/solars) "aq" = ( /obj/structure/cable{ @@ -125,8 +125,8 @@ d2 = 2; icon_state = "1-2" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation) "at" = ( /obj/structure/lattice, @@ -312,8 +312,8 @@ d2 = 4; icon_state = "1-4" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation) "aR" = ( /obj/structure/cable{ @@ -331,8 +331,8 @@ d2 = 4; icon_state = "1-4" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation/solars) "aS" = ( /obj/structure/cable{ @@ -340,8 +340,8 @@ d2 = 8; icon_state = "4-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation/solars) "aT" = ( /obj/structure/cable{ @@ -359,8 +359,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation/solars) "aU" = ( /obj/item/storage/toolbox/mechanical{ @@ -386,8 +386,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/djstation) "aW" = ( /turf/simulated/floor/plasteel{ @@ -4602,8 +4602,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "jL" = ( /obj/structure/table/wood, @@ -6693,8 +6693,8 @@ d2 = 2; icon_state = "1-2" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "oT" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -7751,8 +7751,8 @@ d2 = 8; icon_state = "4-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "rn" = ( /obj/structure/cable{ @@ -7765,8 +7765,8 @@ d2 = 8; icon_state = "1-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "ro" = ( /obj/structure/window/reinforced, @@ -7993,8 +7993,8 @@ d2 = 8; icon_state = "1-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "rG" = ( /obj/structure/closet/crate/secure/loot, @@ -8029,8 +8029,8 @@ /turf/space, /area/derelict/crew_quarters) "rJ" = ( -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "rK" = ( /obj/machinery/power/tracker, @@ -8272,8 +8272,8 @@ d2 = 4; icon_state = "2-4" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "si" = ( /obj/structure/cable{ @@ -9006,8 +9006,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "tF" = ( /obj/structure/sign/greencross, @@ -9040,8 +9040,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "tI" = ( /obj/structure/cable{ @@ -9563,8 +9563,8 @@ d2 = 8; icon_state = "1-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "uJ" = ( /turf/space, @@ -9895,8 +9895,8 @@ d2 = 4; icon_state = "1-4" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "vn" = ( /obj/item/shard{ @@ -10462,8 +10462,8 @@ d2 = 8; icon_state = "1-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "wm" = ( /obj/structure/cable{ @@ -10476,8 +10476,8 @@ d2 = 4; icon_state = "1-4" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "wn" = ( /obj/structure/closet/jcloset, @@ -10502,8 +10502,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "wp" = ( /obj/structure/cable{ @@ -10521,8 +10521,8 @@ d2 = 4; icon_state = "1-4" }, -/turf/space, /obj/structure/lattice/catwalk, +/turf/space, /area/derelict/solar_control) "wq" = ( /obj/structure/cable{ @@ -10540,20 +10540,9 @@ d2 = 8; icon_state = "1-8" }, -/turf/space, /obj/structure/lattice/catwalk, -/area/derelict/solar_control) -"wr" = ( -/obj/docking_port/stationary{ - dir = 8; - dwidth = 8; - height = 20; - id = "freegolem_z6"; - name = "Near USSP Station"; - width = 16 - }, /turf/space, -/area/space) +/area/derelict/solar_control) "ws" = ( /obj/effect/landmark/burnturf, /turf/simulated/floor/plasteel/airless{ @@ -53934,7 +53923,7 @@ aa aa aa aa -wr +aa aa aa aa diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 3f155fa8031..34256559f1c 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -75,9 +75,6 @@ var/auto_cryo_ssd_mins = 0 var/ssd_warning = 0 - var/prob_free_golems = 75 //chance for free golems spawners to appear roundstart - var/unrestricted_free_golems = FALSE //if true, free golems can appear on all roundtypes - var/traitor_objectives_amount = 2 var/shadowling_max_age = 0 @@ -305,12 +302,6 @@ if("jobs_have_minimal_access") config.jobs_have_minimal_access = 1 - if("prob_free_golems") - config.prob_free_golems = text2num(value) - - if("unrestricted_free_golems") - config.unrestricted_free_golems = TRUE - if("shadowling_max_age") config.shadowling_max_age = text2num(value) diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index caec5fa8ea6..23c4885e39e 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -38,6 +38,15 @@ datum/map_template/ruin/lavaland/ash_walker cost = 20 allow_duplicates = FALSE +/datum/map_template/ruin/lavaland/free_golem + name = "Free Golem Ship" + id = "golem-ship" + description = "Lumbering humanoids, made out of precious metals, move inside this ship. They frequently leave to mine more minerals, which they somehow turn into more of them. \ + Seem very intent on research and individual liberty, and also geology based naming?" + cost = 20 + suffix = "lavaland_surface_golem_ship.dmm" + allow_duplicates = FALSE + /datum/map_template/ruin/lavaland/animal_hospital name = "Animal Hospital" id = "animal-hospital" diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm index fcf43f23ad1..9160aa8aa9e 100644 --- a/code/game/area/areas/ruins/lavaland.dm +++ b/code/game/area/areas/ruins/lavaland.dm @@ -18,6 +18,7 @@ /area/ruin/powered/golem_ship name = "Free Golem Ship" icon_state = "dk_yellow" + xenobiology_compatible = TRUE /area/ruin/powered/greed icon_state = "dk_yellow" diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 30934a07214..128b7e4b725 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -14,7 +14,6 @@ var/list/blob_nodes = list() required_enemies = 1 recommended_enemies = 1 restricted_jobs = list("Cyborg", "AI") - free_golems_disabled = TRUE var/declared = 0 var/burst = 0 diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 90ab53dfde2..021eb7461f5 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -43,7 +43,6 @@ var/global/list/all_cults = list() required_players = 30 required_enemies = 3 recommended_enemies = 4 - free_golems_disabled = TRUE var/datum/mind/sacrifice_target = null var/finished = 0 diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 4f583abdfed..8f4cccf7d6f 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -27,7 +27,6 @@ var/recommended_enemies = 0 var/newscaster_announcements = null var/ert_disabled = 0 - var/free_golems_disabled = FALSE var/uplink_welcome = "Syndicate Uplink Console:" var/uplink_uses = 20 @@ -81,7 +80,6 @@ // feedback_set_details("revision","[revdata.revision]") feedback_set_details("server_ip","[world.internet_address]:[world.port]") generate_station_goals() - check_free_golems() start_state = new /datum/station_state() start_state.count() return 1 @@ -513,12 +511,6 @@ proc/display_roundstart_logout_report() var/datum/station_goal/G = V G.print_result() -/datum/game_mode/proc/check_free_golems() //check config and gamemode for free golems setting and run the prob to check if the round will have free golems spawned or not - if((config.unrestricted_free_golems || !free_golems_disabled) && prob(config.prob_free_golems)) - for(var/obj/effect/landmark/free_golem_spawn/L in GLOB.landmarks_list) - if(isturf(L.loc)) - new /obj/effect/mob_spawn/human/golem/adamantine(L.loc) - /datum/game_mode/proc/update_eventmisc_icons_added(datum/mind/mob_mind) var/datum/atom_hud/antag/antaghud = huds[ANTAG_HUD_EVENTMISC] antaghud.join_hud(mob_mind.current) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 4e9d507c9ea..cf808f3709d 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -12,7 +12,6 @@ proc/issyndicate(mob/living/M as mob) required_players = 30 // 30 players - 5 players to be the nuke ops = 25 players remaining required_enemies = 5 recommended_enemies = 5 - free_golems_disabled = TRUE var/const/agents_possible = 5 //If we ever need more syndicate agents. diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 4a5bf190e04..1e9bf6ce4c0 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -7,7 +7,6 @@ required_players = 20 required_enemies = 1 recommended_enemies = 1 - free_golems_disabled = TRUE var/use_huds = 0 var/finished = 0 diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index d404db8ae0a..b21a78367fb 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -334,9 +334,6 @@ /obj/item/circuitboard/white_ship name = "circuit Board (White Ship)" build_path = /obj/machinery/computer/shuttle/white_ship -/obj/item/circuitboard/golem_ship - name = "circuit Board (Golem Ship)" - build_path = /obj/machinery/computer/shuttle/golem_ship /obj/item/circuitboard/shuttle/syndicate name = "circuit board (Syndicate Shuttle)" build_path = /obj/machinery/computer/shuttle/syndicate diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 5fad9348769..1c13ad43f9e 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -503,7 +503,7 @@ SSair.remove_from_active(T1) T1.CalculateAdjacentTurfs() SSair.add_to_active(T1,1) - + T1.lighting_build_overlay() T0.ChangeTurf(turf_type) @@ -836,20 +836,6 @@ shuttleId = "whiteship" possible_destinations = "whiteship_away;whiteship_home;whiteship_z4" -/obj/machinery/computer/shuttle/golem_ship - name = "Golem Ship Console" - desc = "Used to control the Golem Ship." - circuit = /obj/item/circuitboard/golem_ship - shuttleId = "freegolem" - possible_destinations = "freegolem_z3;freegolem_z5;freegolem_z1;freegolem_z6" - resistance_flags = INDESTRUCTIBLE - -/obj/machinery/computer/shuttle/golem_ship/attack_hand(mob/user) - if(!isgolem(user)) - to_chat(user, "The console is unresponsive. Seems only golems can use it.") - return - ..() - /obj/machinery/computer/shuttle/engineering name = "Engineering Shuttle Console" desc = "Used to call and send the engineering shuttle." diff --git a/config/example/config.txt b/config/example/config.txt index 87ed0ce5cf1..5cdd4619d19 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -109,12 +109,6 @@ PROBABILITY ABDUCTION 0 PROBABILITY DEVIL 0 PROBABILITY DEVILAGENTS 0 -## Probability in % for Free Golems to spawn at roundstart, set to 0 for no golems -PROB_FREE_GOLEMS 75 - -## Uncomment to allow free golems on all roundtypes. Otherwise, disabled on cult, wiz, raging mages, blob, and nuclear. -#UNRESTRICTED_FREE_GOLEMS - ## Maximum cycles shadowlings can remain unhatched before they take damage. 1800 = 60 minutes, 900 = 30 minutes, 0 = feature disabled. SHADOWLING_MAX_AGE 0 From ade8aeaf2f871af36922bf8aa698ea7677d2a910 Mon Sep 17 00:00:00 2001 From: datlo Date: Sat, 1 Jun 2019 11:51:35 +0100 Subject: [PATCH 014/143] Allow free golems to purchase shuttle board also add a shuttle recalls console to ruin --- .../LavaRuins/lavaland_surface_golem_ship.dmm | 139 +- _maps/map_files/cyberiad/z4.dmm | 381 +- _maps/map_files/cyberiad/z6.dmm | 78733 +--------------- code/game/area/areas/ruins/lavaland.dm | 3 +- .../game/machinery/computer/buildandrepair.dm | 4 +- code/modules/mining/equipment_locker.dm | 2 + code/modules/shuttle/shuttle.dm | 19 + 7 files changed, 1745 insertions(+), 77536 deletions(-) diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index a2c67db9111..b026e3fe794 100644 --- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -1,71 +1,74 @@ -"a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/simulated/wall/mineral/titanium,/area/ruin/powered/golem_ship) -"c" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"d" = (/obj/structure/closet/crate/golemgear,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"e" = (/obj/item/storage/toolbox/mechanical,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"f" = (/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"g" = (/obj/structure/reagent_dispensers/watertank/high,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"h" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) -"i" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "burst_l"},/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) -"j" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"k" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"l" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"m" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"n" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"o" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"p" = (/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"q" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"r" = (/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"s" = (/obj/machinery/vending/coffee/free,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"t" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"u" = (/obj/machinery/door/airlock/shuttle,/obj/structure/fans/tiny,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"v" = (/obj/item/resonator,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"w" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/ruin/powered/golem_ship) -"x" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"y" = (/obj/machinery/mineral/ore_redemption/golem,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"z" = (/obj/structure/window/full/shuttle{icon_state = "16"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) -"A" = (/obj/structure/statue/gold/rd{name = "statue of the Liberator"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/ruin/powered/golem_ship) -"B" = (/obj/structure/computerframe,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"C" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"D" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"E" = (/obj/structure/window/full/shuttle{icon_state = "15"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/ruin/powered/golem_ship) -"F" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table/wood,/obj/item/bedsheet/rd/royal_cape{layer = 3; pixel_x = 5; pixel_y = 9},/obj/item/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/ruin/powered/golem_ship) -"G" = (/obj/machinery/light,/obj/structure/chair/comfy/purp{icon_state = "comfychair"; dir = 1},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"H" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"I" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"J" = (/turf/simulated/wall/mineral/titanium/interior,/area/ruin/powered/golem_ship) -"K" = (/obj/item/resonator/upgraded,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"L" = (/obj/machinery/autolathe,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"M" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"N" = (/obj/machinery/computer/arcade/orion_trail,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"O" = (/obj/machinery/computer/arcade/battle,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"P" = (/obj/machinery/light,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"Q" = (/obj/machinery/light,/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"R" = (/obj/machinery/vending/snack/free,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"S" = (/obj/structure/table/wood,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"T" = (/obj/structure/table/wood,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/machinery/light,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"U" = (/obj/structure/table/wood,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/adv,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"V" = (/obj/structure/table/wood,/obj/item/areaeditor/golem,/obj/item/disk/design_disk/golem_shell,/turf/simulated/floor/mineral/titanium/purple,/area/ruin/powered/golem_ship) -"W" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"X" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"Y" = (/obj/structure/ore_box,/turf/simulated/floor/plating,/area/ruin/powered/golem_ship) -"Z" = (/turf/simulated/wall/mineral/titanium/nodiagonal,/area/ruin/powered/golem_ship) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/simulated/wall/mineral/titanium,/area/shuttle/freegolem) +"ac" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"ad" = (/obj/structure/closet/crate/golemgear,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"ae" = (/obj/item/storage/toolbox/mechanical,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"af" = (/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"ag" = (/obj/structure/reagent_dispensers/watertank/high,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"ah" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"ai" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "burst_l"},/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"aj" = (/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"ak" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"al" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"am" = (/obj/machinery/vending/hydronutrients,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"an" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"ao" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"ap" = (/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aq" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"ar" = (/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"as" = (/obj/machinery/vending/coffee/free,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"at" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"au" = (/obj/machinery/door/airlock/shuttle,/obj/structure/fans/tiny,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"av" = (/obj/item/resonator,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aw" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"ax" = (/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"ay" = (/obj/machinery/mineral/ore_redemption/golem,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"az" = (/turf/simulated/wall/mineral/titanium/nodiagonal,/area/shuttle/freegolem) +"aA" = (/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered/golem_ship) +"aB" = (/obj/structure/window/full/shuttle{icon_state = "16"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"aC" = (/obj/structure/statue/gold/rd{name = "statue of the Liberator"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aD" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aE" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aF" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aG" = (/obj/machinery/door/airlock/shuttle,/obj/structure/fans/tiny,/obj/docking_port/stationary{area_type = /area/ruin/powered/golem_ship; dir = 8; dwidth = 8; height = 20; id = "freegolem_lavaland"; name = "Lavaland Surface"; turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface; width = 16},/obj/docking_port/mobile{dir = 8; dwidth = 8; height = 20; id = "freegolem"; name = "Free Golem Ship"; width = 16},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aH" = (/obj/structure/window/full/shuttle{icon_state = "15"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"aI" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table/wood,/obj/item/bedsheet/rd/royal_cape{layer = 3; pixel_x = 5; pixel_y = 9},/obj/item/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aJ" = (/obj/machinery/light,/obj/structure/chair/comfy/purp{icon_state = "comfychair"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aK" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aL" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aM" = (/turf/simulated/wall/mineral/titanium/interior,/area/shuttle/freegolem) +"aN" = (/obj/item/resonator/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aO" = (/obj/machinery/autolathe,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aP" = (/obj/machinery/computer/shuttle/golem_ship/recall,/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered/golem_ship) +"aQ" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aR" = (/obj/machinery/computer/arcade/orion_trail,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aS" = (/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aT" = (/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aU" = (/obj/machinery/light,/obj/effect/mob_spawn/human/golem/adamantine,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aV" = (/obj/machinery/vending/snack/free,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aW" = (/obj/structure/table/wood,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aX" = (/obj/structure/table/wood,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aY" = (/obj/structure/table/wood,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/adv,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"aZ" = (/obj/structure/table/wood,/obj/item/areaeditor/golem,/obj/item/disk/design_disk/golem_shell,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"ba" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"bb" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"bc" = (/obj/structure/ore_box,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) (1,1,1) = {" -aaaaabbbbbbbbbbccbbb -aaaaabddddddddeffghi -aaaaabffjffjfffjfkhi -aabbbbllbbbbllbbbbbb -aabmnoppqrbspppopthi -aaupppppvvlppppppphi -bbbwwbbbbbbxpppppyZZ -zABppppCpplpppppppDu -EFGppppppplpppppppHI -bbbllJbbbbbxppppKLZZ -aaupppppvvlppppppMhi -aabNOPppQrbRppSTUVhi -aabbbbllbbbbllbbbbbb -aaaaabffWffWfffWfXhi -aaaaabYYYYYYYYeffXhi -aaaaabbbbbbbbbbccbbb +aaaaaaaaaaababababababababababacacabababaa +aaaaaaaaaaabadadadadadadadadaeafafagahaiaa +aaaaaaaaaaabafafajafafajafafafajafakahaiaa +aaaaababababawawababababawawababababababaa +aaaaabamanaoapapaqarabasapapapaoapatahaiaa +aaaaauapapapapapavavawapapapapapapapahaiaa +abababawawababababababaxapapapapapayazazaA +aBaCaDapapapapaEapapawapapapapapapapaFaGaA +aHaIaJapapapapapapapawapapapapapapapaKaLaA +abababawawaMabababababaxapapapapaNaOazazaP +aaaaauapapapapapavavawapapapapapapaQahaiaa +aaaaabaRaSaTapapaUarabaVapapaWaXaYaZahaiaa +aaaaababababalalababababawawababababababaa +aaaaaaaaaaabafafbaafafbaafafafbaafbbahaiaa +aaaaaaaaaaabbcbcbcbcbcbcbcbcaeafafbbahaiaa +aaaaaaaaaaababababababababababacacabababaa "} diff --git a/_maps/map_files/cyberiad/z4.dmm b/_maps/map_files/cyberiad/z4.dmm index 531ef1f4dfb..08d56927445 100644 --- a/_maps/map_files/cyberiad/z4.dmm +++ b/_maps/map_files/cyberiad/z4.dmm @@ -845,37 +845,17 @@ /turf/simulated/floor/plating/airless, /area/constructionsite/hallway/center) "cl" = ( -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, -/area/space/nearstation) -"cm" = ( /turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, /area/space/nearstation) "cn" = ( -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/engiestation/solars) -"co" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) -"cp" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/space/nearstation) "cq" = ( /obj/structure/inflatable/door, /turf/simulated/floor/plasteel/airless, /area/constructionsite/hallway/center) -"cr" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/space/nearstation) -"cs" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) "ct" = ( /obj/machinery/power/solar, /obj/structure/cable{ @@ -892,8 +872,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/engiestation/solars) "cv" = ( /obj/machinery/power/tracker, @@ -916,8 +896,8 @@ d2 = 4; icon_state = "2-4" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/engiestation/solars) "cx" = ( /obj/machinery/power/solar, @@ -955,8 +935,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/engiestation/solars) "cB" = ( /obj/structure/cable{ @@ -974,8 +954,8 @@ d2 = 4; icon_state = "2-4" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/engiestation/solars) "cC" = ( /turf/simulated/wall/r_wall, @@ -1045,55 +1025,6 @@ icon_state = "bcircuit" }, /area/constructionsite/ai) -"cL" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) -"cM" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) -"cN" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) -"cO" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) -"cP" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) -"cQ" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) "cR" = ( /obj/machinery/light_switch{ pixel_y = -28 @@ -1107,10 +1038,6 @@ icon_state = "dark" }, /area/engiestation) -"cT" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/space/nearstation) "cU" = ( /obj/structure/lattice, /turf/space, @@ -1270,10 +1197,6 @@ /obj/structure/grille, /turf/simulated/floor/plating/airless, /area/constructionsite/ai) -"do" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) "dp" = ( /obj/structure/cable{ d1 = 2; @@ -1285,8 +1208,8 @@ d2 = 4; icon_state = "1-4" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/engiestation/solars) "dq" = ( /obj/structure/cable{ @@ -1305,28 +1228,8 @@ d2 = 4; icon_state = "1-4" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, -/area/engiestation/solars) -"dr" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, /turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, /area/engiestation/solars) "ds" = ( /obj/effect/spawner/window/reinforced, @@ -1437,28 +1340,8 @@ icon_state = "4-8"; pixel_x = 0 }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, -/area/engiestation/solars) -"dz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, /turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, /area/engiestation/solars) "dA" = ( /obj/structure/cable{ @@ -1471,12 +1354,8 @@ d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, -/area/engiestation/solars) -"dB" = ( /turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, /area/engiestation/solars) "dC" = ( /obj/machinery/recharge_station, @@ -1629,8 +1508,8 @@ d2 = 4; icon_state = "2-4" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/engiestation/solars) "dT" = ( /obj/structure/cable{ @@ -1644,23 +1523,8 @@ d2 = 4; icon_state = "2-4" }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, -/area/engiestation/solars) -"dU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, /area/engiestation/solars) "dV" = ( /obj/structure/cable{ @@ -1716,32 +1580,8 @@ icon_state = "4-8"; pixel_x = 0 }, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, -/area/engiestation/solars) -"eb" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, /turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) -"ec" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, /area/engiestation/solars) "ed" = ( /obj/item/stack/sheet/metal{ @@ -1880,10 +1720,6 @@ icon_state = "dark" }, /area/engiestation) -"em" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/engiestation/solars) "en" = ( /obj/machinery/vending/tool, /turf/simulated/floor/plasteel{ @@ -1919,10 +1755,6 @@ }, /turf/simulated/floor/plating/airless, /area/constructionsite/ai) -"es" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/space/nearstation) "et" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "0"; @@ -2228,10 +2060,6 @@ icon_state = "carpet" }, /area/engiestation) -"fi" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/space/nearstation) "fj" = ( /obj/machinery/vending/cola, /turf/simulated/floor/plasteel{ @@ -2530,13 +2358,13 @@ }, /area/engiestation) "fQ" = ( -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/space) "fR" = ( /obj/item/lighter/zippo, -/turf/simulated/floor/plating/airless, /obj/structure/lattice/catwalk, +/turf/simulated/floor/plating/airless, /area/space/nearstation) "fS" = ( /obj/machinery/shower{ @@ -2629,10 +2457,6 @@ icon_state = "delivery" }, /area/engiestation) -"gc" = ( -/turf/simulated/floor/plating/airless, -/obj/structure/lattice/catwalk, -/area/space/nearstation) "gd" = ( /obj/structure/lattice, /obj/structure/disposaloutlet{ @@ -5038,6 +4862,17 @@ }, /turf/simulated/floor/plating/airless, /area/constructionsite/engineering) +"zH" = ( +/obj/docking_port/stationary{ + dir = 8; + dwidth = 8; + height = 20; + id = "freegolem_z4"; + name = "Near Construction Site"; + width = 16 + }, +/turf/space, +/area/space) (1,1,1) = {" aa @@ -14393,14 +14228,14 @@ aa aa ab cl -cr -cr -cr -cr -cr -cr -cr -cr +cl +cl +cl +cl +cl +cl +cl +cl fQ bC aa @@ -14649,7 +14484,7 @@ aa aa ab cl -es +cl ab ab ab @@ -14658,7 +14493,7 @@ ab ab aa aa -cm +cl ab aa aa @@ -14896,16 +14731,16 @@ aa aa ab cl -cr -cr -cr -cr -cP -cs -do -cs -do -cM +cl +cl +cl +cl +cn +cn +cn +cn +cn +cn cC cF cF @@ -14915,7 +14750,7 @@ cF cC aa aa -cm +cl ab aa aa @@ -15152,12 +14987,12 @@ aa aa aa ab -cm +cl ab ab aa ab -co +cn dd dp dK @@ -15409,12 +15244,12 @@ aa aa aa aa -cm +cl ab ab ab ab -co +cn dd dq dK @@ -15666,12 +15501,12 @@ aa aa aa aa -cm +cl aa ab ab ab -co +cn dd dq dK @@ -15923,16 +15758,16 @@ aa aa aa aa -cm +cl ab ab ab -cL -cM +cn +cn dd -dr +dq dK -dU +dT dK da eB @@ -16181,10 +16016,10 @@ aa aa ab cn -cs -cs -cs -cM +cn +cn +cn +cn cW cX ds @@ -16437,7 +16272,7 @@ aa aa aa ab -co +cn ct ct ct @@ -16698,7 +16533,7 @@ cn cu cA cA -cN +cA cY df du @@ -16951,7 +16786,7 @@ aa aa aa ab -co +cn cv ct ct @@ -17212,7 +17047,7 @@ cn cw cB cB -cO +cB cY df dw @@ -17465,7 +17300,7 @@ aa aa aa ab -co +cn cx cx cx @@ -17723,10 +17558,10 @@ aa aa ab cn -cs -cs -cs -cP +cn +cn +cn +cn cW cX ds @@ -17979,12 +17814,12 @@ aa aa aa aa -cm +cl aa aa ab -cQ -cP +cn +cn dd dy dK @@ -18236,16 +18071,16 @@ aa aa aa aa -cm +cl aa ab ab ab -co +cn dd -dz +dy dK -eb +ea dK da eI @@ -18493,16 +18328,16 @@ aa aa aa aa -cm +cl ab ab ab ab -co +cn dd -dz +dy dK -eb +ea dK da dj @@ -18750,16 +18585,16 @@ aa aa aa aa -cm +cl ab ab aa ab -co +cn dd dA dK -ec +cu dK da dj @@ -19007,17 +18842,17 @@ aa aa aa aa -cm +cl aa aa aa aa -cQ -cs -dB -cs -dB -em +cn +cn +cn +cn +cn +cn da eI da @@ -19264,7 +19099,7 @@ aa aa aa aa -cm +cl aa cC cF @@ -19285,7 +19120,7 @@ cF cF cF cC -gc +cl aa aa aa @@ -19521,7 +19356,7 @@ aa aa aa aa -cm +cl aa cC cG @@ -19542,7 +19377,7 @@ ab ab aa aa -cm +cl aa aa aa @@ -19778,7 +19613,7 @@ aa aa aa aa -cm +cl aa cC cH @@ -19799,7 +19634,7 @@ aa ab ab aa -cm +cl aa aa aa @@ -20035,7 +19870,7 @@ aa aa aa aa -cm +cl aa cC cI @@ -20056,7 +19891,7 @@ aa aa ab ab -cm +cl ab aa aa @@ -20292,7 +20127,7 @@ aa aa aa ab -cm +cl aa cC cF @@ -20307,13 +20142,13 @@ dE dj dE cC -fi -cr -cr -cr -cr -cr -es +cl +cl +cl +cl +cl +cl +cl bC aa aa @@ -20549,11 +20384,11 @@ aa aa aa ab -cp -cr -cr -cr -cT +cl +cl +cl +cl +cl dc cC dD @@ -44048,7 +43883,7 @@ aa aa aa aa -aa +zH aa aa aa diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 6c8cce124fb..3c6f2dbc65a 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -1,77195 +1,1544 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/space, -/area/space) -"ab" = ( -/obj/item/stack/cable_coil{ - amount = 2 - }, -/turf/space, -/area/space/nearstation) -"ac" = ( -/obj/machinery/power/solar/fake, -/turf/simulated/floor/plasteel/airless{ - icon_state = "solarpanel" - }, -/area/djstation/solars) -"ad" = ( -/obj/structure/lattice/catwalk, -/turf/space, -/area/space/nearstation) -"ae" = ( -/obj/structure/lattice, -/turf/space, -/area/space/nearstation) -"af" = ( -/obj/machinery/power/solar/fake, -/turf/simulated/floor/plasteel/airless{ - icon_state = "solarpanel" - }, -/area/space/nearstation) -"ag" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/djstation) -"ah" = ( -/turf/simulated/floor/plating, -/area/djstation) -"ai" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, -/turf/space, -/area/space/nearstation) -"aj" = ( -/obj/machinery/power/terminal, -/turf/simulated/floor/plating, -/area/djstation) -"ak" = ( -/obj/item/multitool, -/turf/simulated/floor/plating, -/area/djstation) -"al" = ( -/obj/item/stack/cable_coil/cut{ - amount = 1 - }, -/turf/space, -/area/space/nearstation) -"am" = ( -/obj/item/extinguisher, -/turf/simulated/floor/plating, -/area/djstation) -"an" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation/solars) -"ao" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, -/obj/structure/lattice, -/turf/space, -/area/space/nearstation) -"ap" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation/solars) -"aq" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/plating, -/area/djstation) -"ar" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/item/storage/box/lights/mixed, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = -32 - }, -/turf/simulated/floor/plating, -/area/djstation) -"as" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation) -"at" = ( -/obj/structure/lattice, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, -/turf/space, -/area/space/nearstation) -"au" = ( -/obj/structure/lattice, -/obj/structure/lattice, -/turf/space, -/area/space/nearstation) -"av" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/djstation) -"aw" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/wall/mineral/titanium/interior, -/area/djstation) -"ax" = ( -/turf/simulated/wall/mineral/titanium/interior, -/area/djstation) -"ay" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/plating, -/area/djstation) -"az" = ( -/turf/simulated/floor/plasteel/airless, -/area/space/nearstation) -"aA" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plating, -/area/djstation) -"aB" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"aC" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/wall/mineral/titanium/interior, -/area/djstation) -"aD" = ( -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"aE" = ( -/obj/machinery/power/solar/fake, -/turf/simulated/floor/plasteel/airless{ - icon_state = "solarpanel" - }, -/area/djstation) -"aF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/djstation) -"aG" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/djstation) -"aH" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/telecomms/relay/preset/ruskie, -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 8 - }, -/area/djstation) -"aI" = ( -/turf/simulated/wall/mineral/titanium/nodecon, -/area/derelict/bridge) -"aJ" = ( -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/bridge) -"aK" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "rusbridge"; - layer = 3.4; - name = "Blast Shutters" - }, -/turf/simulated/floor/plating, -/area/derelict/bridge) -"aL" = ( -/obj/effect/landmark/damageturf, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/bridge) -"aM" = ( -/obj/effect/landmark/damageturf{ - layer = 3 - }, -/obj/effect/landmark/burnturf, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/bridge) -"aN" = ( -/obj/effect/landmark/damageturf, -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "rusbridge"; - layer = 3.4; - name = "Blast Shutters" - }, -/turf/simulated/floor/plating, -/area/derelict/bridge) -"aO" = ( -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/djstation) -"aP" = ( -/obj/effect/landmark/burnturf, -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/machinery/door/poddoor/shutters{ - dir = 2; - id_tag = "rusbridge"; - layer = 3.4; - name = "Blast Shutters" - }, -/turf/simulated/floor/plating, -/area/derelict/bridge) -"aQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation) -"aR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation/solars) -"aS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation/solars) -"aT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation/solars) -"aU" = ( -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/djstation) -"aV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/djstation) -"aW" = ( -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkredfull" - }, -/turf/simulated/wall/mineral/titanium/nodecon/tileblend{ - icon_state = "4-i" - }, -/area/derelict/arrival) -"aX" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/djstation) -"aY" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/machinery/door/poddoor/impassable{ - id_tag = "ruslockcom"; - layer = 3; - name = "Bridge Lockdown" - }, -/turf/simulated/floor/plating, -/area/derelict/bridge) -"aZ" = ( -/obj/structure/closet/crate/can, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"ba" = ( -/obj/machinery/door/airlock{ - name = "Restroom"; - req_access_txt = "0" - }, -/turf/simulated/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/djstation) -"bb" = ( -/obj/structure/sign/nuke, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/bridge) -"bc" = ( -/obj/machinery/computer/monitor, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bd" = ( -/obj/machinery/computer/atmos_alert, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"be" = ( -/obj/structure/computerframe{ - desc = "This computer is a husk of what it once was. Time and decay has worn its cheap circuitry to dust."; - name = "decrepit computer" - }, -/obj/item/shard{ - icon_state = "medium" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bf" = ( -/obj/structure/table/reinforced, -/obj/machinery/door_control{ - id = "rusbridge"; - name = "Bridge Shutters" - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bg" = ( -/obj/item/paper/djstation{ - info = "Aug. 28th, 2532
Our listening outpost has relayed some alarming reports about TSF activity in the sector. While intercepted communications suggests it's a simple research effort, I can't shake the feeling that those dogged bastards have finally chased us down.

The Captain assures me that there's nothing to worry about, but I find it hard to take a man who's paranoid of a powered shower door seriously.

- Comms Officer Vostok
"; - name = "personal log"; - pixel_x = 26; - pixel_y = 4 - }, -/obj/structure/computerframe{ - desc = "This computer is a husk of what it once was. Time and decay has worn its cheap circuitry to dust."; - name = "decrepit computer" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bh" = ( -/obj/effect/landmark/burnturf, -/obj/structure/computerframe{ - desc = "This computer is a husk of what it once was. Time and decay has worn its cheap circuitry to dust."; - name = "decrepit computer" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bi" = ( -/obj/machinery/computer/crew, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bj" = ( -/obj/structure/grille, -/turf/space, -/area/space/nearstation) -"bk" = ( -/obj/structure/table/reinforced, -/obj/item/ashtray/bronze, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bl" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bm" = ( -/obj/structure/computerframe{ - desc = "This computer is a husk of what it once was. Time and decay has worn its cheap circuitry to dust."; - name = "decrepit computer" - }, -/obj/item/shard, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bn" = ( -/turf/simulated/wall/mineral/titanium/nodecon, -/area/derelict/crew_quarters) -"bo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/wall/mineral/titanium/interior, -/area/djstation) -"bp" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/smes/magical{ - desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; - name = "power storage unit" - }, -/turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 8 - }, -/area/djstation) -"bq" = ( -/turf/space, -/area/djstation/solars) -"br" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"bs" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/space, -/area/space/nearstation) -"bt" = ( -/turf/simulated/wall/mineral/titanium/nodecon, -/area/derelict/arrival) -"bu" = ( -/obj/structure/coatrack, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"bv" = ( -/obj/machinery/door/airlock/external{ - frequency = 1479; - icon_state = "door_locked"; - id_tag = "dj_station_inner"; - locked = 1; - name = "DJ Station Interior Access"; - req_access = null; - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/hidden, -/turf/simulated/floor/plating, -/area/djstation) -"bw" = ( -/obj/structure/safe/floor, -/obj/item/paper/djstation{ - name = "love letter"; - pixel_x = -5; - pixel_y = -3; - layer = 2.9; - info = "To my darling Sergei,

I will never forget those nights we spent on Cygni, or all the times you took me around in your 2452 Vincent. The way you looked at me that one night, that was the night I knew that you and I were of the same soul.

I know they made you sell your Vincent when you were reassigned, but I could not let such a beautiful thing go to rust. I have made arrangements and it is here, waiting for you.

I have enclosed the keys. Please, let them serve as a reminder always of our love and a reason to return. I beg of you, do not let our love go softly into the night.
" - }, -/obj/item/key{ - name = "Vincent '52 Key"; - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/trash/tapetrash{ - desc = "A bundle of severely yellowed and highly pretentious looking documents. Unfortunately they appear to be written in cyrillic and encrypted with a cypher."; - icon = 'icons/obj/bureaucracy.dmi'; - icon_state = "docs_generic"; - name = "USSP//NOFORN//TOP SECRET" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"bx" = ( -/obj/machinery/light/spot{ - tag = "icon-tube1 (WEST)"; - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"by" = ( -/obj/machinery/atmospherics/unary/vent_pump/high_volume{ - dir = 1; - frequency = 1479; - id_tag = "dj_station_pump" - }, -/obj/machinery/airlock_sensor{ - frequency = 1479; - id_tag = "dj_station_sensor"; - pixel_x = 25; - pixel_y = -5 - }, -/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1479; - id_tag = "dj_station_airlock"; - pixel_x = -25; - req_access_txt = "0"; - tag_airpump = "dj_station_pump"; - tag_chamber_sensor = "dj_station_sensor"; - tag_exterior_door = "dj_station_outer"; - tag_interior_door = "dj_station_inner" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/djstation) -"bz" = ( -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/crew_quarters) -"bA" = ( -/obj/machinery/door/airlock/external{ - frequency = 1479; - icon_state = "door_locked"; - id_tag = "dj_station_outer"; - locked = 1; - name = "DJ Station External Access"; - req_access = null; - req_access_txt = "0" - }, -/turf/simulated/floor/plating, -/area/djstation) -"bB" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"bC" = ( -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"bD" = ( -/obj/structure/table/reinforced, -/obj/item/phone{ - desc = "An old Russian phone. The dial tone is still humming."; - name = "spin-dial phone" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bE" = ( -/obj/effect/landmark/damageturf, -/obj/effect/landmark/burnturf, -/obj/item/shard{ - icon_state = "small" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"bF" = ( -/obj/structure/chair/comfy/red{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"bG" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"bH" = ( -/obj/structure/table/reinforced, -/obj/item/fan, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bI" = ( -/obj/machinery/light/spot{ - tag = "icon-tube1 (EAST)"; - icon_state = "tube1"; - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bJ" = ( -/obj/effect/landmark/damageturf, -/obj/effect/decal/remains/human{ - desc = "This guy seemed to have died in terrible way! Half his remains are dust."; - icon_state = "remains"; - name = "Human remains" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"bK" = ( -/obj/machinery/vending/cigarette/free{ - product_slogans = "Just remember! No capitalist.;Best enjoyed with Vodka!.;Smoke!;Nine out of ten USSP scientists agree, smoking reduces stress!;There's no cigarette like a Russian cigarette!;Cigarettes! Now with 100% less capitalism." - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bL" = ( -/obj/machinery/photocopier, -/obj/machinery/light/spot{ - tag = "icon-tube1 (NORTH)"; - icon_state = "tube1"; - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bM" = ( -/obj/machinery/vending/sovietsoda, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bN" = ( -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/arrival) -"bO" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/dresser, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "blue" - }, -/area/derelict/crew_quarters) -"bP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/plating, -/area/djstation) -"bQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/djstation) -"bR" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/djstation) -"bS" = ( -/obj/machinery/light/spot{ - tag = "icon-tube1 (NORTH)"; - icon_state = "tube1"; - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"bT" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/old{ - desc = "A rudimentary energy weapon co-opted by the USSP from a TSF experimental prototype. There are two firing modes." - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"bU" = ( -/obj/structure/closet{ - icon_closed = "cabinet_closed"; - icon_opened = "cabinet_open"; - icon_state = "cabinet_closed" - }, -/obj/item/clothing/head/helmet/space/syndicate/blue{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; - name = "Cosmonaut Command Helmet" - }, -/obj/item/clothing/suit/space/syndicate/blue{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; - name = "Cosmonaut Command Suit" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"bV" = ( -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"bW" = ( -/obj/structure/table/wood, -/obj/item/trash/can{ - desc = "A miniature ship in a bottle. I wonder how they got it in there?"; - icon = 'icons/obj/lavaland/artefacts.dmi'; - icon_state = "ship_bottle"; - name = "ship in a bottle" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"bX" = ( -/turf/simulated/floor/carpet, -/area/derelict/bridge) -"bY" = ( -/obj/effect/decal/remains/human{ - desc = "This guy seemed to have died in terrible way! Half his remains are dust."; - icon_state = "remains"; - name = "Human remains" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/vomit, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"bZ" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"ca" = ( -/obj/structure/table, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "blue" - }, -/area/derelict/crew_quarters) -"cb" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cc" = ( -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cd" = ( -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"ce" = ( -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cf" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cg" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/derelict/bridge) -"ch" = ( -/obj/item/cigbutt{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/cigbutt{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/cigbutt, -/obj/item/lighter{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"ci" = ( -/obj/item/paper/djstation{ - info = "The note is stained with ink-smudges, the forceful and shaky handwriting scrawled across it is barely legible.

Vostok stopped banging on the door an hour ago. he must be looking for something to try and force it. I am still unsure what's happened, but it's been six hours now.

My hands won't stop shaking, not even the cigarettes are helping.

Vostok, if you manage to get in and I am no longer concious, my medication is in the freezer next to my desk. Please. I'm counting on you."; - name = "shaky note" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cj" = ( -/obj/structure/sign/mech, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/arrival) -"ck" = ( -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/power/apc/noalarm{ - dir = 8; - pixel_x = -24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cl" = ( -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/power/apc/noalarm{ - dir = 0; - name = "Worn-out APC"; - pixel_y = -24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/djstation) -"cm" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/turf/simulated/floor/plating, -/area/djstation) -"cn" = ( -/obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; - name = "Cosmonaut Security Suit" - }, -/obj/item/clothing/head/helmet/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; - name = "Cosmonaut Security Helmet" - }, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/djstation) -"co" = ( -/obj/machinery/light_switch{ - pixel_y = -28 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/djstation) -"cp" = ( -/obj/structure/sign/securearea, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/arrival) -"cq" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/crew_quarters) -"cr" = ( -/obj/structure/chair/comfy/red{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cs" = ( -/obj/item/clothing/under/retro/security, -/obj/item/clothing/under/retro/security, -/obj/structure/closet, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2"; - pixel_y = 0 - }, -/obj/machinery/power/apc/noalarm{ - dir = 1; - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/derelict/arrival) -"ct" = ( -/obj/structure/chair/stool, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cu" = ( -/obj/structure/table/wood, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/item/paper/djstation{ - info = "This damned shower is going to be the death of me. I can see the way Vostok looks at me when I speak of it, the way his eyes sneer with amusement. Just this morning, I swear the damn thing tried to lock me in! I had to break the manual release just to get out, Vostok nearly shit himself he was laughing so hard.

Well, we'll see how long he'll be laughing when I write to Commissar Grigor about his insolence; the only thing he will be officer of then is the toilet!"; - name = "captain's log" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cv" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/carpet, -/area/derelict/bridge) -"cw" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cx" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cy" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/command/glass{ - name = "Command Wing" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cz" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cA" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cB" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Command Wing" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cC" = ( -/obj/structure/table/wood, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/derelict/bridge) -"cD" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/derelict/bridge) -"cE" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/derelict/bridge) -"cF" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/derelict/bridge) -"cG" = ( -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 - }, -/obj/item/cigbutt{ - pixel_x = 5; - pixel_y = 16 - }, -/obj/item/cigbutt{ - pixel_x = -13; - pixel_y = 19 - }, -/obj/item/cigbutt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cH" = ( -/turf/simulated/wall/mineral/titanium/nodecon, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"cI" = ( -/turf/simulated/floor/plasteel/airless{ - icon_state = "solarpanel" - }, -/area/space/nearstation) -"cJ" = ( -/obj/structure/sign/securearea, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"cK" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "0" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/djstation) -"cL" = ( -/obj/machinery/light/spot{ - tag = "icon-tube1 (NORTH)"; - icon_state = "tube1"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkredcorners" - }, -/area/derelict/arrival) -"cM" = ( -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"cN" = ( -/obj/structure/rack, -/obj/item/melee/classic_baton{ - desc = "A wooden truncheon for beating capitalist scum." - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredcorners" - }, -/area/derelict/arrival) -"cO" = ( -/obj/structure/table/wood, -/obj/item/ashtray/glass{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/cigbutt, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cP" = ( -/obj/machinery/light/spot{ - tag = "icon-tube1 (WEST)"; - icon_state = "tube1"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cR" = ( -/obj/structure/table/wood, -/obj/machinery/door_control{ - name = "faulty switch" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"cS" = ( -/obj/structure/sign/science, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"cT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cU" = ( -/obj/item/reagent_containers/syringe/insulin{ - pixel_y = 3 - }, -/obj/item/reagent_containers/syringe/insulin, -/obj/structure/closet/crate/freezer{ - layer = 2.9 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cV" = ( -/obj/structure/chair/office/dark, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"cW" = ( -/obj/structure/table/wood, -/obj/item/taperecorder, -/obj/item/tape/random, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cX" = ( -/obj/structure/table/wood, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"cY" = ( -/obj/structure/noticeboard, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"cZ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"da" = ( -/obj/structure/curtain/open, -/obj/structure/toilet, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/derelict/crew_quarters) -"db" = ( -/obj/structure/sign/securearea, -/obj/effect/decal/cleanable/blood/splatter, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/arrival) -"dc" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkblue" - }, -/area/djstation) -"dd" = ( -/turf/simulated/wall/mineral/titanium/nodiagonal, -/area/djstation) -"de" = ( -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/djstation) -"df" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/djstation) -"dg" = ( -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/machinery/vending/cigarette/free{ - product_slogans = "Just remember! No capitalist.;Best enjoyed with Vodka!.;Smoke!;Nine out of ten USSP scientists agree, smoking reduces stress!;There's no cigarette like a Russian cigarette!;Cigarettes! Now with 100% less capitalism." - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/djstation) -"dh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light{ - dir = 1; - on = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/djstation) -"di" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" - }, -/area/derelict/arrival) -"dj" = ( -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkredcorners" - }, -/area/derelict/arrival) -"dk" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/derelict/arrival) -"dl" = ( -/turf/simulated/floor/wood{ - tag = "icon-wood-broken7"; - icon_state = "wood-broken7" - }, -/area/derelict/bridge) -"dm" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dn" = ( -/obj/structure/table/reinforced, -/obj/item/ashtray/bronze, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"do" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/cups, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dp" = ( -/obj/item/twohanded/required/kirbyplants, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dq" = ( -/obj/structure/table/reinforced, -/obj/item/folder, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dr" = ( -/obj/structure/coatrack, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"ds" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dt" = ( -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"du" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dv" = ( -/obj/structure/table/wood, -/obj/item/folder/red, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dw" = ( -/obj/structure/table/wood, -/obj/item/ashtray/plastic, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dx" = ( -/obj/machinery/light/spot{ - tag = "icon-tube1 (EAST)"; - icon_state = "tube1"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"dy" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/derelict/crew_quarters) -"dz" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/derelict/crew_quarters) -"dA" = ( -/obj/machinery/shower{ - tag = "icon-shower (WEST)"; - icon_state = "shower"; - dir = 8 - }, -/obj/structure/curtain/open/shower, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/derelict/crew_quarters) -"dB" = ( -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/obj/structure/table, -/obj/item/paper/djstation{ - name = "communications update"; - info = "Station has stopped responding to my reports for about the past month. I assume Vostok just has his knickers in a twist.

Hell, not my problem. Got all the vodka and cigarettes I need to last me a year." - }, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"dC" = ( -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/obj/item/twohanded/required/kirbyplants, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"dD" = ( -/obj/machinery/vending/sovietsoda, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"dE" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" - }, -/area/djstation) -"dF" = ( -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkblue" - }, -/area/djstation) -"dG" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/djstation) -"dH" = ( -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkblue" - }, -/area/djstation) -"dI" = ( -/obj/structure/safe/floor, -/obj/item/gun/projectile/automatic/pistol, -/obj/structure/table/wood, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/djstation) -"dJ" = ( -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/djstation) -"dK" = ( -/obj/machinery/status_display{ - layer = 4; - pixel_y = 32 - }, -/obj/structure/chair/comfy/beige, -/obj/item/lighter/zippo/engraved{ - pixel_x = -38; - pixel_y = 5 - }, -/obj/item/storage/fancy/cigarettes/dromedaryco{ - pixel_x = -26 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/djstation) -"dL" = ( -/obj/structure/bed, -/obj/item/bedsheet/blue, -/obj/structure/sign/poster/contraband/communist_state{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/djstation) -"dM" = ( -/obj/structure/sign/nosmoking_1, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"dN" = ( -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkred" - }, -/area/derelict/arrival) -"dO" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/vest/old, -/obj/item/clothing/head/helmet/swat{ - desc = "A reinforced helmet often used by USSP security personnel."; - name = "armoured helmet" - }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkredcorners" - }, -/area/derelict/arrival) -"dP" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/bot/secbot/buzzsky{ - desc = "It's Comrade Blyatsky! Powered by vodka, communism, and hardbass."; - name = "Comrade Blyatsky" - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "dark"; - tag = "icon-vault (NORTHEAST)" - }, -/area/derelict/arrival) -"dQ" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/effect/decal/cleanable/blood/innards, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkred" - }, -/area/derelict/arrival) -"dR" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkred" - }, -/area/derelict/arrival) -"dS" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Command Wing" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"dT" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"dU" = ( -/obj/structure/sign/poster/contraband/random, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"dV" = ( -/obj/effect/landmark/burnturf, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"dW" = ( -/obj/structure/rack, -/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/wood{ - broken = 1; - icon_state = "wood-broken" - }, -/area/derelict/bridge) -"dX" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"dY" = ( -/obj/machinery/light/spot, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet, -/area/derelict/bridge) -"dZ" = ( -/obj/machinery/light/spot, -/turf/simulated/floor/carpet, -/area/derelict/bridge) -"ea" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/carpet, -/area/derelict/bridge) -"eb" = ( -/obj/effect/decal/cleanable/fungus, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/arrival) -"ec" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"ed" = ( -/obj/item/stack/rods, -/turf/space, -/area/space/nearstation) -"ee" = ( -/obj/structure/grille, -/obj/structure/window/full/shuttle, -/turf/simulated/floor/plasteel/airless{ - icon_state = "floorscorched2" - }, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"ef" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"eg" = ( -/obj/structure/sink{ - dir = 8; - icon_state = "sink"; - pixel_x = -12 - }, -/obj/structure/mirror{ - dir = 4; - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/derelict/crew_quarters) -"eh" = ( -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "rampbottom"; - tag = "icon-stage_stairs" - }, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"ei" = ( -/obj/structure/sign/directions/security{ - dir = 1; - pixel_y = 7 - }, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/arrival) -"ej" = ( -/obj/structure/table, -/obj/machinery/kitchen_machine/microwave{ - pixel_y = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"ek" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Kitchen" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/djstation) -"el" = ( -/obj/structure/chair/office/light, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/djstation) -"em" = ( -/obj/structure/table, -/obj/item/radio/intercom/pirate, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" - }, -/area/djstation) -"en" = ( -/obj/structure/table, -/obj/item/radio/intercom/pirate, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/djstation) -"eo" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Cabin" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/djstation) -"ep" = ( -/obj/effect/landmark/damageturf, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"eq" = ( -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/derelict/arrival) -"er" = ( -/obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; - name = "Cosmonaut Security Suit" - }, -/obj/item/clothing/head/helmet/space/syndicate/orange{ - desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; - name = "Cosmonaut Security Helmet" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredcorners" - }, -/area/derelict/arrival) -"es" = ( -/obj/effect/decal/cleanable/blood/tracks, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" - }, -/area/derelict/arrival) -"et" = ( -/obj/structure/rack, -/obj/item/gun/projectile/revolver/doublebarrel, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredcorners" - }, -/area/derelict/arrival) -"eu" = ( -/obj/structure/dresser, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"ev" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/structure/sign/poster/contraband/communist_state{ - pixel_y = 31 - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/bridge) -"ew" = ( -/obj/structure/sign/poster/contraband/communist_state, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/crew_quarters) -"ex" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/poddoor/impassable{ - id_tag = "ruslockcom"; - layer = 3; - name = "Bridge Lockdown" - }, -/obj/machinery/door/airlock/command/glass{ - name = "Command Wing" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/bridge) -"ey" = ( -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/structure/piano, -/obj/machinery/power/apc/noalarm{ - dir = 1; - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/crew_quarters) -"ez" = ( -/turf/simulated/wall/mineral/titanium/interior, -/area/derelict/arrival) -"eA" = ( -/obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/trash/can, -/obj/item/trash/semki, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"eB" = ( -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/derelict/bridge) -"eC" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Bathroom" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/derelict/crew_quarters) -"eD" = ( -/turf/simulated/shuttle/wall{ - dir = 2; - icon_state = "swall8"; - tag = "icon-swall12" - }, -/area/derelict/crew_quarters) -"eE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/derelict/arrival) -"eF" = ( -/obj/item/trash/spentcasing{ - icon_state = "s-casing" - }, -/turf/simulated/floor/plasteel{ - icon_state = "wood" - }, -/area/derelict/crew_quarters) -"eG" = ( -/obj/structure/sign/vacuum, -/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, -/area/derelict/crew_quarters) -"eH" = ( -/obj/structure/grille, -/obj/item/shard, -/turf/simulated/floor/plasteel/airless{ - icon_state = "floorscorched2" - }, -/area/derelict/eva{ - name = "Derelict Annex" - }) -"eI" = ( -/obj/machinery/light/small, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"eJ" = ( -/obj/structure/closet/crate/can, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/djstation) -"eK" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkblue" - }, -/area/djstation) -"eL" = ( -/obj/structure/table, -/obj/item/radio/intercom/pirate, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "darkblue" - }, -/area/djstation) -"eM" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/bottle/vodka{ - pixel_x = 7; - pixel_y = 10 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = 28; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkblue" - }, -/area/djstation) -"eN" = ( -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkblue" - }, -/area/djstation) -"eO" = ( -/obj/structure/table, -/obj/item/paper/djstation{ - pixel_x = 5; - pixel_y = 17; - info = "Welcome new owner!

You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:
  1. Equip yourself with a multi-tool
  2. Use the multitool on each machine, that is the broadcaster, receiver and the relay.
  3. Turn all the machines on, it has already been configured for you to listen on.
Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.