From 9976ad9ea1aacef79515aa82ba23d7b5e54e029c Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 27 Feb 2019 18:58:54 +0000 Subject: [PATCH 001/296] 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 002/296] 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 e6dca3ffa1e749119c3e92daa546f4a5b9091910 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Tue, 30 Apr 2019 19:34:22 +0200 Subject: [PATCH 003/296] Colored pillbottles --- code/game/objects/items/contraband.dm | 6 ++---- code/game/objects/items/weapons/dice.dm | 1 + .../objects/items/weapons/storage/firstaid.dm | 17 +++++++++++++++++ icons/obj/chemical.dmi | Bin 36555 -> 36638 bytes 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index 7ce7b07193d..74d2e3f06b2 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -4,6 +4,7 @@ /obj/item/storage/pill_bottle/happy name = "Happy pills" desc = "Highly illegal drug. When you want to see the rainbow." + wrapper_color = COLOR_PINK /obj/item/storage/pill_bottle/happy/New() ..() @@ -18,6 +19,7 @@ /obj/item/storage/pill_bottle/zoom name = "Zoom pills" desc = "Highly illegal drug. Trade brain for speed." + wrapper_color = COLOR_BLUE /obj/item/storage/pill_bottle/zoom/New() ..() @@ -49,8 +51,6 @@ adulterants-- reagents.add_reagent(pick_list("chemistry_tools.json", "CYBERPUNK_drug_adulterants"), 3) - - /obj/item/storage/pill_bottle/random_drug_bottle name = "pill bottle (???)" desc = "Huh." @@ -59,5 +59,3 @@ ..() for(var/i in 1 to 5) new /obj/item/reagent_containers/food/pill/random_drugs(src) - - diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm index 40fc1bf7d56..cfb52c452c2 100644 --- a/code/game/objects/items/weapons/dice.dm +++ b/code/game/objects/items/weapons/dice.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/dice.dmi' icon_state = "dicebag" can_hold = list(/obj/item/dice) + allow_wrap = FALSE /obj/item/storage/pill_bottle/dice/New() ..() diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index fab82df4b4e..62e6baa1187 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -254,10 +254,24 @@ var/applying_meds = FALSE //To Prevent spam clicking and generating runtimes from apply a deleting pill multiple times. var/rapid_intake_message = "unscrews the cap on the pill bottle and begins dumping the entire contents down their throat!" var/rapid_post_instake_message = "downs the entire bottle of pills in one go!" + var/allow_wrap = TRUE + var/wrapper_color = null /obj/item/storage/pill_bottle/New() ..() base_name = name + if(allow_wrap) + apply_wrap() + +/obj/item/storage/pill_bottle/proc/apply_wrap() + if(wrapper_color) + overlays.Cut() + var/image/I = image(icon, "pillbottle_wrap") + I.color = wrapper_color + overlays += I + else + wrapper_color = pick(COLOR_RED, COLOR_BLUE, COLOR_CYAN, COLOR_GRAY, COLOR_GREEN, COLOR_ORANGE, COLOR_PINK, COLOR_RED, COLOR_YELLOW) + apply_wrap() /obj/item/storage/pill_bottle/attack(mob/M, mob/user) if(iscarbon(M) && contents.len) @@ -324,10 +338,12 @@ cant_hold = list() rapid_intake_message = "flips the lid of the Patch Pack open and begins rapidly stamping patches on themselves!" rapid_post_instake_message = "stamps the entire contents of the Patch Pack all over their entire body!" + allow_wrap = FALSE /obj/item/storage/pill_bottle/charcoal name = "Pill bottle (Charcoal)" desc = "Contains pills used to counter toxins." + wrapper_color = COLOR_GREEN New() ..() @@ -342,6 +358,7 @@ /obj/item/storage/pill_bottle/painkillers name = "Pill Bottle (Salicylic Acid)" desc = "Contains various pills for minor pain relief." + wrapper_color = COLOR_RED /obj/item/storage/pill_bottle/painkillers/New() ..() diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 9c9f6d38e941aa1bf9d7c4a2e02833f31bab65bf..463b40a8970b3a861a8adb420bbc6f63e7711cfb 100644 GIT binary patch delta 16568 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 T)cEKefPNI@RAkGfO@jUhG};%= From d3585beb8b68ddb5a96b3bac0bb88b5b8d1352cb Mon Sep 17 00:00:00 2001 From: Citinited Date: Tue, 7 May 2019 21:59:43 +0100 Subject: [PATCH 004/296] 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/296] 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/296] 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 32812736ee4e76ebb1693117ed3611142c8da76c Mon Sep 17 00:00:00 2001 From: datlo Date: Fri, 31 May 2019 09:30:03 +0100 Subject: [PATCH 007/296] 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 008/296] 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.